关于微服务架构中容器的可扩展性
About Containers scalability in Micro service architecture
一个关于可伸缩性的简单问题。我一直在研究可伸缩性,我想我理解它背后的基本概念。您使用像 Kubernetes 这样的编排器来管理系统的自动可扩展性。因此,以这种方式,当特定微服务的调用需求增加时,编排器将创建它的新实例,以处理需求的要求。现在,在我们的案例中,我们正在构建一个类似于 Microsoft 的“eShop On Containers”中的示例的微服务结构:
现在,这里的每个微服务都有自己的数据库来管理,就像在我们的应用程序中一样。我的问题是:当升级这个系统时,通过创建某个微服务的新实例,比方说上面例子中的“订购微服务”,这不会创建一组新的数据库吗?在我们的应用程序中,我们使用 SQLite,因此每个微服务都有自己的数据库副本。我认为,为了能够升级这样的系统,每个微服务都需要连接到外部 SQL 服务器。但如果是这样的话,那岂不是瓶颈?我的意思是,拥有多个微服务实例来满足特定服务的更多需求,但所有这些实例仍在访问单个数据库服务器?
In the case of our application, we are using SQLite, so each microservice has its own copy of the database.
扩展服务的最重要方面之一是它们 stateless - Kubernetes 上的服务应根据 12 因素原则设计。这意味着服务实例不能拥有自己的数据库副本,除非它是缓存。
I would asume that in order to be able to upscale such a system would require that each microservice connects to an external SQL Server.
是的,如果您希望能够横向扩展,则需要使用实例外部并在实例之间共享的数据库。
But if that was the case, wouldn't that be a bottle neck?
这在很大程度上取决于您如何设计系统。将微服务与单体进行比较;当使用整体时,整个事情通常使用一个大数据库,但使用微服务更容易使用多个不同的数据库,因此以这种方式扩展数据库应该更容易。
I mean, having multiple instances of a microservice to attend more demand of a particular service BUT with all those instances still accessing a single database server?
还有很多方法可以扩展数据库系统,例如缓存读取操作(但要小心)。但这本身就是一个很大的话题,在很大程度上取决于你做事的内容和方式。
一个关于可伸缩性的简单问题。我一直在研究可伸缩性,我想我理解它背后的基本概念。您使用像 Kubernetes 这样的编排器来管理系统的自动可扩展性。因此,以这种方式,当特定微服务的调用需求增加时,编排器将创建它的新实例,以处理需求的要求。现在,在我们的案例中,我们正在构建一个类似于 Microsoft 的“eShop On Containers”中的示例的微服务结构:
现在,这里的每个微服务都有自己的数据库来管理,就像在我们的应用程序中一样。我的问题是:当升级这个系统时,通过创建某个微服务的新实例,比方说上面例子中的“订购微服务”,这不会创建一组新的数据库吗?在我们的应用程序中,我们使用 SQLite,因此每个微服务都有自己的数据库副本。我认为,为了能够升级这样的系统,每个微服务都需要连接到外部 SQL 服务器。但如果是这样的话,那岂不是瓶颈?我的意思是,拥有多个微服务实例来满足特定服务的更多需求,但所有这些实例仍在访问单个数据库服务器?
In the case of our application, we are using SQLite, so each microservice has its own copy of the database.
扩展服务的最重要方面之一是它们 stateless - Kubernetes 上的服务应根据 12 因素原则设计。这意味着服务实例不能拥有自己的数据库副本,除非它是缓存。
I would asume that in order to be able to upscale such a system would require that each microservice connects to an external SQL Server.
是的,如果您希望能够横向扩展,则需要使用实例外部并在实例之间共享的数据库。
But if that was the case, wouldn't that be a bottle neck?
这在很大程度上取决于您如何设计系统。将微服务与单体进行比较;当使用整体时,整个事情通常使用一个大数据库,但使用微服务更容易使用多个不同的数据库,因此以这种方式扩展数据库应该更容易。
I mean, having multiple instances of a microservice to attend more demand of a particular service BUT with all those instances still accessing a single database server?
还有很多方法可以扩展数据库系统,例如缓存读取操作(但要小心)。但这本身就是一个很大的话题,在很大程度上取决于你做事的内容和方式。