微服务的主要好处是一种服务“类型”可以通过使用多个容器实例和负载平衡来扩展以提高吞吐量。
但有一件事是,多个实例(即,“服务类型”的容器)共享相同的数据库实例;当多个实例对该数据库实例进行读/写时,这可能会造成性能瓶颈。
传统上,我们会扩展该数据库实例的处理能力,以满足高需求。
我的主要问题是,在横向扩展/水平扩展方面,当前的最佳实践/设计/解决方案是什么,以便我们可以拥有该数据库的多个实例并提高性能?
特别是,我想归档的内容是:
为了保证数据的持久性和一致性,如果我想创建更多Availability
load balance read )的负载,甚至可以写入多个数据库(
据我所知,
其中一个解决方案是Microsoft SQL Server为SQL Server容器提供高可用性,可以满足上述大部分要求(https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-container-ha-overview?view=sql-server-2017)。但我想知道有没有更好的解决方案来避免技术锁定?
我正在考虑的另一个解决方案是:通过使用CDC Stream数据从主数据库实例复制到多个实例。这允许复制读取。
但我仍然不能令人信服,因为为了保证一致性,每个服务实例都应该写入master- database - instance,这也可能会在master数据库实例上留下瓶颈。
https://stackoverflow.com/questions/54771633
复制相似问题