Database 为微服务扩展/水平扩展数据库的最佳实践或设计
微服务的主要好处是一种服务“类型”可以通过使用多个容器实例和负载平衡来扩展,以提高吞吐量 但有一点是,“服务类型”的多个实例(即容器)共享同一个数据库实例;当多个实例对该数据库实例进行写/读操作时,这可能会导致性能瓶颈 传统上,我们会扩大数据库实例的处理能力以满足高需求 对我来说,主要的问题是,目前扩展/水平扩展的最佳实践/设计/解决方案是什么,这样我们就可以拥有该数据库的多个实例并提高性能? 特别是,我想归档的内容包括:Database 为微服务扩展/水平扩展数据库的最佳实践或设计,database,microservices,scale,Database,Microservices,Scale,微服务的主要好处是一种服务“类型”可以通过使用多个容器实例和负载平衡来扩展,以提高吞吐量 但有一点是,“服务类型”的多个实例(即容器)共享同一个数据库实例;当多个实例对该数据库实例进行写/读操作时,这可能会导致性能瓶颈 传统上,我们会扩大数据库实例的处理能力以满足高需求 对我来说,主要的问题是,目前扩展/水平扩展的最佳实践/设计/解决方案是什么,这样我们就可以拥有该数据库的多个实例并提高性能? 特别是,我想归档的内容包括: 一个实例关闭,另一个实例可以处理负载->高负载 可用性 可以对多个数据
- 一个实例关闭,另一个实例可以处理负载->高负载 可用性
- 可以对多个数据库进行负载平衡读取,甚至写入 入口
- 维护数据的持久性和一致性,以备不时之需 创建更多数据库实例
但我仍然无法说服您,因为要获得一致性,每个服务实例都应该写入主数据库实例,这也可能会在主数据库实例上留下瓶颈。在做出选择时总是要权衡。数据库有其局限性,尽管可以扩展数据库,但通过使用简单的最佳实践,我们可以避免性能受到影响。您不能让数据库来处理高请求率,请记住,扩展数据库是一个昂贵的选择,如果不采取正确的措施,您最终会达到数据库的极限,所以规划整个系统而不仅仅是数据库
说到这里,您可以使用一个主控和从控分别进行读写,这是一种非常常见的方法,但您必须依赖于最终的一致性,并且您可以查看sql always on。您可以缓存最频繁的数据。如果你有很高的请求率,你可能需要考虑你把请求放在队列中,然后再排队,以避免数据库性能命中。p> 在广泛的层面上,数据库有3种可能的体系结构: