新闻动态

微服务架构10个最重要的设计模式

2023-06-22 00:55

本文摘要:微服务架构,每个微服务的数据库,事件源,CQRS,Saga,BFF,API网关,抹杀器,断路器,外部化设置,消费者驱动的条约测试 Image by msandersmusic from Pixabay自从软件开发的早期(1960年月)以来,解决大型软件系统中的庞大性一直是一项困难的任务。

b体育app平台下载

微服务架构,每个微服务的数据库,事件源,CQRS,Saga,BFF,API网关,抹杀器,断路器,外部化设置,消费者驱动的条约测试> Image by msandersmusic from Pixabay自从软件开发的早期(1960年月)以来,解决大型软件系统中的庞大性一直是一项困难的任务。多年来,软件工程师和架构师为解决软件系统的庞大性举行了许多实验:David Parnas的模块化和信息隐藏(1972),Edsger W. Dijkstra的关注分散(1974),面向服务的体系结构(1998)。

他们所有人都使用了久经磨练的成熟技术来解决大型系统的庞大性:分而治之。自2010年月以来,这些技术不足以解决Web规模应用法式或现代大型企业应用法式的庞大性。效果,架构师和工程师开发了一种新方法来解决现代软件系统的庞大性:微服务架构。

它也使用了相同的旧"分而治之"技术,只管接纳了新颖的方式。软件设计模式是解决软件设计中常见问题的通用,可重用的解决方案。设计模式可资助我们共享通用词汇,并使用经由实战磨练的解决方案,而不是重新发现轮子。在上一篇文章:有效的微服务:10个最佳实践中,我形貌了开发有效的微服务的一组最佳实践。

在这里,我将形貌一组设计模式,以资助您实现这些最佳实践。如果您是微服务架构的新手,那么不用担忧,我将向您先容微服务架构。通过阅读本文,您将学到:· 微服务架构· 微服务架构的优势· 微服务架构的缺点· 何时使用微服务架构· 最重要的微服务架构设计模式,包罗其优缺点,用例,上下文,技术客栈示例和有用的资源。

请注意,此清单的大多数设计模式都有几种上下文,可以在非微服务体系结构中使用。可是我将在微服务架构的配景下对其举行形貌。微服务架构在之前的博客文章中,我已经详细先容了微服务体系结构:微服务体系结构:简要概述以及为什么要在下一个项目中使用它以及模块化单片软件体系结构真的死了吗?如果您有兴趣,可以阅读它们以更深入地相识它们。

什么是微服务架构。微服务架构有许多界说。这是我的界说:微服务架构旨在将大型,庞大的系统垂直(按功效或业务要求)划分为较小的子系统,这些子系统属于流程(因此可独立部署),而且这些子系统之间通过与语言无关的轻量级网络通信相互通信(例如REST,gRPC)或异步(通过消息通报)方式。这是具有微服务架构的业务Web应用法式的组件视图:> Microservice Architecture by Md Kamaruzzaman微服务架构的重要特征:· 整个应用法式分为多个单独的历程,每个历程可以包罗多个内部模块。

· 与模块化Monoliths或SOA相反,微服务应用法式是垂直拆分的(凭据业务能力或领域)· 微服务界限是外部的。效果,微服务通过网络挪用(RPC或消息)相互通信。· 由于微服务是独立的流程,因此它们可以独立部署。· 他们以轻巧的方式交流,不需要任何智能交流渠道。

微服务架构的优势:· 更好的开发规模。· 更高的生长速度。· 支持迭代或增量现代化。

· 充实使用现代软件开发生态系统(云,容器,DevOps,无服务器)的优势。· 支持水平缩放和粒度缩放。· 由于尺寸较小,它降低了开发人员的认知庞大度。

微服务架构的缺点:· 大量的运动部件(服务,数据库,流程,容器,框架)。· 庞大性从代码转移到基础架构。

· RPC挪用和网络流量的激增。· 治理整个系统的宁静性具有挑战性。· 设计整个系统比力难题。· 先容漫衍式系统的庞大性。

b体育app平台下载

何时使用微服务架构:· Web规模应用法式开发。· 当多个团队处置惩罚应用法式时,举行企业应用法式开发。

· 恒久收益优先于短期收益。· 该团队拥有能够设计微服务架构的软件架构师或高级工程师。微服务架构的设计模式每个微服务独占数据库一旦公司用许多较小的微服务替换了大型的单片系统,它面临的最重要的决议就是关于数据库。

在整体架构中,使用大型中央数据库。许多架构师都喜欢保留数据库原样,纵然他们转向微服务架构也是如此。只管它提供了一些短期利益,但它是一种反模式,尤其是在大规模系统中,因为微服务将精密耦合在数据库层中。

转向微服务的整个目的将失败(例如,团队授权,独立开发)。更好的方法是为每个微服务都提供自己的数据存储,以使数据库层中的服务之间不存在强耦合。

在这里,我使用数据库一词来表现数据的逻辑分散,即微服务可以共享同一物理数据库,可是它们应该使用单独的架构/荟萃/表。它还将确保凭据域驱动设计正确隔离微服务。> Database per Microservice by Md Kamaruzzaman优点· 数据对服务的完全所有权。

· 开发服务的团队之间的松耦合。缺点· 在服务之间共享数据变得充满挑战。· 提供应用法式规模的ACID事务保证变得越发难题。

· 将Monolith数据库剖析为较小的零件需要仔细设计,这是一项困难的任务。每个微服务何时使用数据库· 在大型企业中的应用。

· 当团队需要其微服务的完全所有权以举行开发扩展和提高开发速度时。什么时候不使用每个微服务的数据库· 在小型应用中。· 如果一个团队开发所有微服务。启用技术示例所有SQL和NoSQL数据库都提供逻辑上的数据分散(例如,分散的表,荟萃,模式,数据库)。

事件源 Event Sourcing在微服务架构中,尤其是在每个微服务使用数据库的情况下,微服务需要交流数据。对于有弹性,高度可扩展和容错的系统,它们应通过交流事件举行异步通信。

在这种情。


本文关键词:微,服务,架构,10个,最重要的,设计模式,微,b体育app平台下载

本文来源:b体育app平台下载-www.whhacb.com