Domain driven design 领域驱动设计中的高可扩展性
我将DDD用于面向服务的应用程序,目的是在大量web客户端(即浏览器)之间传输大量消息 因为在所需功能的上下文中,传输的需求大于存储的需求,所以我喜欢主要依赖RAM并最小化数据库使用的想法 然而,我不清楚如何从可伸缩性的角度来构建它。web场创建服务端点和域逻辑处理的高可用性。但无论我有多少台服务器,它们似乎都必须共享一个公共存储库,以便数据保持一致 如何构建此存储库,使其尽可能具有可伸缩性?它如何能够以一种所有机器都是一致的并且每个机器都不关心另一台机器是否倒下的方式在一系列物理机器上传播Domain driven design 领域驱动设计中的高可扩展性,domain-driven-design,repository,scalability,soa,volume,Domain Driven Design,Repository,Scalability,Soa,Volume,我将DDD用于面向服务的应用程序,目的是在大量web客户端(即浏览器)之间传输大量消息 因为在所需功能的上下文中,传输的需求大于存储的需求,所以我喜欢主要依赖RAM并最小化数据库使用的想法 然而,我不清楚如何从可伸缩性的角度来构建它。web场创建服务端点和域逻辑处理的高可用性。但无论我有多少台服务器,它们似乎都必须共享一个公共存储库,以便数据保持一致 如何构建此存储库,使其尽可能具有可伸缩性?它如何能够以一种所有机器都是一致的并且每个机器都不关心另一台机器是否倒下的方式在一系列物理机器上传播 此
此外,由于偶尔需要触摸数据库(例如,当客户端丢失时,必须存储用于该数据库的消息,直到其返回),我应该如何组织基于内存的代码和数据访问层?它们都被认为是“存储库”吗?你准备好阅读了吗?有很多选择,但我相信你应该从学习现代分布式NoSQL数据库的优势开始,并享受从facebook、linkedin和其他朋友那里学到的经验。从这里开始:
- 有几种方法可以解决这个问题。没有一个单一的答案能真正涵盖一切
确保可伸缩性的一种方法是简单地扩展硬件。将您的web服务编写为无状态,这样您就可以运行web场(所有web场都运行相同的服务,指向相同的DB),并将您的DB转换为集群。群集数据库运行在多个服务器上,并在同一个存储上工作。然而,这种情况很快就会变得复杂和昂贵
一些有趣的链接: