首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/432489

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

微服务业务开发三个难题-拆分、事务、查询(下)

上集我们阐述了使用微服务体系架构的关键障碍是领域模型,事务和查询,这三个障碍似乎和功能拆分具有天然的对抗。只要功能拆分了,就涉及这三个难题。 然后我们向你展示了一种解决方案就是将每个服务的业务逻辑实现为一组DDD聚合。然后每个事务只能更新或创建一个单独的聚合。然后通过事件来维护聚合(和服务)之间的数据一致性。 在本集中,我们将会向你介绍使用事件的时候遇到了一个新的问题,就是怎么样通过原子方式更新聚合和发布事件。然后会展示如何使用事件源来解决这个问题,事件源是一种以事件为中心的业务逻辑设计和持久化的方法。之后,我们会阐述微服务架构下的查询困难的问题。然后向你介绍一种称为命令查询责任分离(CQRS)的方法来实现可扩展和高性能的查询。 可靠地更新状态和发布事件 从表面上看,使用事件来保持聚合之间的一致性似乎很简单。 当一个服务创建或更新数据库的一个聚合时,它只是简单地发布一个事件。 但是,这只是表象,其实还有一个核心问题就是:更新数据库和发布事件必须是原子的。否则,就会出现类似这样的情况:如果服务在更新数据库之后但在发布事件之前崩溃,则系统就出现了不一致的问题。 传统的解决方案是一般都...

敏捷和架构

为了理解敏捷和架构的关系,我们继续讨论第1部分曾经讨论的3个主要的方法:XP、Scrum和RUP。 1, 极限编程:架构形成 XP是以程序员为中心的开发,其中没有一个核心实践明确讨论了软件架构,然而,这并不是说XP项目和XP团队不用或不理解架构在软件开发中的作用。Beck[2000]提到:“架构在XP项目中和在其他软件项目中一样重要”。因此,我们在概念上从XP方法入手是一个好的开端。接着Beck继续解释架构是如何形成的。 首次迭代,先挑选一些简单的和基本的故事,这些故事可以支持你创建整个架构。接下来,缩小范围,用最简单有效的方法实现这些故事。这个过程一旦结束,你就拥有了架构。 这些评论在XP的视角上提供了附加的解释。如果一个范围适度的系统,通过少量故事的一两次迭代展现出一个合理的架构基线,那么这种方法可能非常有效,使用这种模型就可能形成相当好的架构。并且,由于XP主要被推荐和应用于小团队,其有关团队大小和架构策略的观点是一致的。 此外,如果时间证明形成的系统架构不能支持系统继续演化,那么系统也可以较快地改写或者重构。事实上,重构代码是XP这个快速开发方法的关键组成部分,也是XP...

相关文章

发表评论

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册