理查德切斯特伍德

MicroService架构是软件开发中最讨论的主题之一。必威真人投注在本文中,您会发现MicroServices是什么。

Microservices是什么?

微服务系统是许多大型软件项目使用的架构风格。目的是提高效率,可靠性,性能和可扩展性。让我们用传统的方法比较微服务,通常称为单片架构。

Kubernetes实践 - 向AWS云部署微服务

上次更新了2021年8月

  • 173课
  • 各级
4.7 (4348)

使用Kubernetes部署微服务体系结构。您将部署,管理和监控Live Kubernetes集群。|由Richard Chesterwood,虚拟对程序员,Prageeth Warnak

探索课程

整体架构

单片架构是人们作为一个单位开发整个系统的地方。这是易于管理的,是小项目的有效策略。单片架构的好处包括:它们是:

但所有这些优势仅适用于小型系统。

随着系统的增长超过一定的规模,出现困难。系统的增长越多,困难越大。这可能导致所谓的“单片地狱!”

问题可能包括以下方面:

部署变得更加困难和风险

假设您发现了一个重大错误。你得马上修好它!所以,你修复了这个错误。现在,整个系统需要重新部署!但现在,还有其他功能正在开发中。必威真人投注因此,风险在于,当你修复一个bug时,你会引入许多其他的bug。

大爆炸替代方案

另一种选择是项目将部署限制为“大爆炸”版本。这意味着设定了提交所有更改和新功能的最后期限。只有在测试了整个系统之后,系统才会被部署。这似乎是一个更安全的选择,但最大的问题是您不能再发布紧急修复。随着项目的发展,截止日期也会越来越长。如果您的项目每年发行一次,那么您就会陷入一个巨大的地狱!

它变得太大,太复杂了。

单个开发者可能无法理解这个庞然大物。加强模块之间的边界太困难了。随着时间的推移,模块会陷入大量依赖关系中。你是否曾致力于一个整体,当你改变了一个模块时,却发现你破坏了另一个模块?如果你认为这些模块是不相关的,那么你就是在大泥球

这个庞然大物变得难以扩大规模。

随着部署单元的增长,唯一的选择是增加目标硬件的大小。在云环境中,这意味着升级到更大的虚拟机。这被称为垂直扩展,效率非常低,因为成本不是线性扩展的。例如,如果你需要一台内存两倍的新机器,成本就会远远超过两倍。而且,在某种程度上,你会触及实际的极限。

替代方案:微服务架构

通过微服务方法,我们开发了一系列单独的微服务。每个微服务都是:

微服务如何协作是一篇完整的独立博客文章的主题。它们可以是简单的具象状态传输(representational state transfer, REST) web服务,也可以使用更复杂的异步消息传递系统。

它很容易定义微服务架构的样子,但建立一个微型架构更难!您如何确定系统中的微服务应该是什么?他们应该多大?这里肯定有一些“艺术”,很难精确,所以让我们通过微服的功能。

建筑microservices

应围绕业务能力组织微服务

例如,一个电子商务网站不仅仅是一个“购物车”。它处理库存、产品目录、账单、客户、订单等。这些业务功能是微服务的潜在候选对象。例如,库存管理听起来像一个候选微服务,只要它满足微服务的其余标准。

单个团队将开发,部署和操作微服务

一支团队采取全身拥有。这确保了微服务不会变得太大。该团队中的每个开发人员都应该能够理解整个微服务。来自亚马逊的经验法则是,两个比萨饼应该足以在任何团队会议中养活每个人。当然,这是模糊的指导(比萨饼有多大?我可以吃一个)。我更愿意更具体,并将六到八个团队成员的限制设定。团队可以开发库存管理服务吗?如果是这样,它可能是一个合适的候选人。如果没有,那么那个微惯性太复杂,需要进一步分解。

重要的是要记住,第一次不可能得到这个。一个很好的微服务项目将拥抱灵活性。如果有任何MicroService变得痛苦,良好的项目将把它重构为两个或更多新服务。

微服动物应具有高凝聚力

在微野跑的核心是与任何好的软件设计的核心相同的原则。高凝聚力意味着单个微伺服术必须执行一个事情并这样做一个事情良好。当然,什么“一个事情“意味着模糊而且判断。但它将有助于记住,微服务应与业务的特定区域对齐。

想象一下,库存管理MicroService还计算每个项目的税。也许这方面更容易发展。嗯,这将是一个迹象,即其他地方缺少重要的微寿。也许是税收服务?

独立改变的事情需要独立的微服务。税率一直在变化。如果每次出现新税,我们都必须更新和测试整个库存服务,那将是痛苦的!

微服动物应该有松散的耦合

服务之间的依赖关系应该尽可能小。更改一个微服务应该对其他微服务产生最小的影响。

单独部署微服务

每个微服务应随时重新部署,对系统的其余部分没有影响。想象一下,您发现了库存微伺服术中的错误。该团队可以在无需咨询其他开发团队的情况下部署到实时系统的变更。必威真人投注

微服务自动化

您可能能够忍受手动部署单巨石应用程序的痛苦,旋转几个云实例来托管它,或将软件安装到这些实例上。但忘了缩放最多100个部署或1000个实例。微服务取决于部署,配置和配置管理的自动化。持续集成或连续交付是必不可少的任何微服务项目。马丁福勒有一些很好的信息

微服务通常是分布式系统

您可以将所有微服务部署到单个服务器上。或者,在极端情况下,您可以为每个微服务使用单个服务器。这将是一种非常有效的隔离方式!当然,对于大多数项目来说,这将是非常昂贵的。

最好的解决方案是使用Docker将每个微服务将每个微服务转换为容器,然后使用Orchestration工具管理运行容器。最常见的策戒工具是Kubernetes。Kubernetes使用负载平衡和复制来实现高度的弹性。

微服务体系结构的优点

微服务体系结构的最大优点包括:

微服务体系结构的缺点

但是,MicroService架构也有一些缺点:

你应该构建一个整体架构还是一个微服务架构?

如果单个团队可以开发和运行它,则单线列表应用程序是合理的。一旦你超越那个尺寸,那么整理巨头的痛苦就会变得无法忍受。但是你不能只切换到微服务并期望它解决所有问题!

这是对微服务的简要概述。想了解更多吗?投资你的职业生涯我在微服务中的课程准备即将接受采访这25个问题

我希望你喜欢你的微服旅程!

页面最后更新:2021年6月

微服务的顶级课程

主机组织与春天,docker,kubernetes
Eazy字节
4.9 (80)
最高评级
微服务架构 - 完整指南
Memi Lavi.
4.5 (2,166)
畅销书
建筑师的域驱动设计和微服务
拉杰夫Sakhuja
4.5 (76)
了解微服务架构
Lal Verma.
4.8 (48)
春靴微猎犬和春云
Sergey Kargopolov.
4.6 (4,526)
基于。net 5的微服务体系结构与实现
MehmetÖzkaya.
4.5 (1,601)
春季引导应用程序中的OAuth 2.0
Sergey Kargopolov.
4.7 (922)
畅销书
微服务:设计高度可扩展的系统
Sean Campbell.
4.4 (3,025)
用.NET构建微服务 - 基础知识
胡里奥有格的
4.6 (319)

更多微服务课程

微服务学生也会学习

让你的团队。领导行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求演示

理查德·切斯特伍德的课程

Docker - 用于Java开发人员的手
Richard Chesterwood,虚拟对程序员
4.8 (1,825)
Kubernetes实践 - 向AWS云部署微服务
Richard Chesterwood,虚拟对程序员,Prageeth Warnak
4.7 (4348)
Java开发人员的Apache Spark
Richard Chesterwood,Matt Greencroft,虚拟对程序员
4.6 (1,802)
最高评级
kubernetes的Istio实践
Richard Chesterwood,Prageeth Warnak
4.7 (3,128)
畅销书

理查德·切斯特伍德的课程