实例的可伸缩性如何工作

时间:2019-07-17 11:53:40

标签: docker microservices scalable

到目前为止,我看到的是,如果一个应用程序不支持实际负载,则有可能部署相同应用程序的新实例,并使用负载平衡器在两个实例之间分配负载。

我现在不了解的是,如何在两个实例之间同步信息。

即假设我有两个实例A和B。我进行POST请求,并且负载均衡器将我重定向到A实例,该POST请求更新了A实例中的映射。

此后,我进行GET请求以返回该映射中的信息,并且负载平衡器将我重定向到B实例,由于信息仅在A实例中,因此该实例将返回一个无效映射。

也许我不理解这种可扩展性。

1 个答案:

答案 0 :(得分:0)

这完全取决于您要更新的数据类型,即是持久数据(即使断电后仍保留的数据)还是非持久数据 。如果您希望实例在任何地方都是恒定的,那么实例共享相同的内存,因此您可以使用一个数据库,实例在两个实例之间都可以连接并原子更新和访问数据。

如果映射只是您在RAM中临时创建的常量,则可以简单地创建一个常量,并且不会被两个实例共享。

例如

数据库(共享内存)

DB->表-> mapcolumn-JSON字段(mapcolumn = {}#默认值)

需求-> LoadBalancer->实例A-> DB_Connection->更新mapcolumn-> {'key':'value'} 要求-> LoadBalancer->实例B-> DB_Connection->获取mapcolumn-> {'key':'value'}

RAM常数

需求-> LoadBalancer->实例A->设置mapcol常数-> mapcolumn = {'key':'value'}

需求-> LoadBalancer->实例B->获取mapcolumn常量->空或无

这两个实例不使用数据库或共享内存。

希望这可以消除您的怀疑。