微服务架构,单体架构,面向服务的架构的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“微服务架构提供了一系列技术优势,有助于提高软件项目的开发速度和产品质量,
同时也有助于提高整体业务灵活性” - MARK EMEIS,软件技术高级总监,CA技术
自从该术语成立以来,微服务一直在软件开发中获得成功。微服务(又称微服务架构)是面向服务的体系结构(SOA)的变体,用于开发大型应用程序,其中服务按照业务域分为多个块。它提供了复杂应用程序的持续交付/部署,使应用程序更易于理解,开发,测试,并且对架构侵蚀更具弹性。微服务架构提供了一种以新颖方式编织现有系统的新方法,以便快速提供软件解决方案。由于其提供模块化,可扩展性,可用性的能力,成为软件行业最热门的话题之一;许多企业软件开发公司都热衷于采用它。
但是,微服务究竟是什么?它能改善组织的文化,技能和需求吗?
为了深入理解微服务,让我们首先理解相反方法单片架构的要点。
关于单体软件的一切
维基百科说:“单片应用程序描述了一个单层软件应用程序,其中用户界面和数据访
问代码从单一平台组合成一个程序。”
![
单片软件使用三层架构,即
表示层 - 它是应用程序的最顶层,描述了用户界面。主要功能是将任务和结果转换为用户可以理解的内容。用户界面代码使用HTML,JavaScript和CSS等客户端技术编写。
业务层 - 该层做出逻辑决策并执行计算。它处理两层之间的数据,并使用像Spring这样的技术。
数据访问层 - 这里存储信息并从数据库中检索信息。信息将传递到业务层,最终传递给用户。它使用像Hibernate这样的ORM工具来处理信息。
这里,Web应用程序客户端发送请求;层执行业务逻辑,数据库存储应用程序特定数据,UI将特定数据显示给用户。但是,由于它们共享相同的代码库,因此可能会出现一些问题。
1. 2. 3. 4. 这种类型的架构在一段时间内运行良好,但由于对持续交付的需求不断增加,此模型存在多个问题。
单片架构的缺点
运维开销:不同的利益相关者使用不同的单一应用层;因此团队将被限制在特定领域的专业
知识。在表示层工作的团队专注于UI技术,但对数据访问层的了解最少。因此,如果要添加新功能,则需要不同的团队来协调和传递特定功能。这导致从构思到上市时间的更长时间跨度,并最终影响业务ROI。
软件堆栈自治:它限制了技术选择并迫使整个层使用单一框架。例如,如果表示层是在HTML
框架中编写的,则整个层将在同一框架内实现。这避免了实施最新技术,导致应用程序代码在短时间内过时。
隐式接口:由于此代码在单个文件中发布,因此应用程序中的微小更改会要求重建整个应用
程序。因此,正在进行的应用程序被放下并导致需要重新部署新版本。这种性质导致更新更少,并且无法尽可能快地发展。
可扩展性:单片应用程序具有一维可扩展性;因此无法扩展单个组件。因此,即使大多数应
用程序可能不需要扩展,也需要扩展整个应用程序。
开发没有良好架构的软件会给组织带来很大的成本。例如:如果软件开发公司通过遵循非模块化方法开发软件,其中UI功能和业务功能混合在相同的源文件中,公司可能需要投入大量资金来支持他们在最新智能手机本机中的应用程序应用。这严重影响了软件的可维护性并延长了产品上市时间,最终影响了公司的销售。
单片体系结构一直是传统方法,但是扩展的限制,维护大型代码库的困难,高风险升级以及大量的前期设置成本迫使企业或软件开发公司探索不同的方法。单片应用程序是一个难以破解的难题,难以理解并随着时间的推移而扩展。
因此,为了避免这些问题,微服务架构可以成为一个救星!它提供360度扭曲以解决上述复杂问题;帮助软件开发公司在竞争对手中脱颖而出。
微服务架构简介
微服务是一种软件开发技术,它将应用程序构建为松散耦合服务的集合。每项服务都是独立的,应该实现单一的业务能力。微服务架构旨在克服较大应用程序的挑战,故障和故障。微服务提供了为系统增加弹性的机会,以便组件可以优雅地处理峰值和错误。有了这个,每个利益相关者都可以专注于整个应用程序的一个特定元素,具有自己的编程风格,而不用担心其他组件。微服务中的通信可以毫不费力地执行,因为它们是无状态的并且在明确定义的接口中(请求和响应是独立的)。
如果使用微服务方法开发应用程序/软件,将有助于采用DevOps方法,并将消除部署效率低下,从而缩短产品上市时间。由于微服务与设备和平台无关,因此可以开发应用程序,在大多数平台上提供增强的用户体验,包括Web,移动,物联网,平板电脑,可穿戴设备等等。
例如:沃尔玛加拿大在2012年之前使用了单片架构!该公司在处理600万页面浏览量/分钟时遇到了麻烦,这耗费了更多时间并导致销售额减少。由于这些问题,他们将自己的软件架构重构为微服务,并在一夜之间找到了即时结果和高转换率。停机时间最小化,公司能够使用更便宜的x86服务器而不是昂贵的硬件商品,从而节省了20%-50%的成本。
微服务和SOA
这是SOA的自然演变,其中各种技术堆栈将技术多样性带入开发团队。 SOA和微服务都允许将复杂的工作负载分解为更小,更易于管理和独立的部分。
但是,它们之间存在一些基本差异。
微服务与SOA
1. 2. 3. 4. 5. 微服务哲学
微服务的哲学类似于Unix哲学,即“做一件事,做得好”。特征描述如下......
用于执行单一功能的组件化
按业务能力组织
专注于不加工的产品
分散治理和数据管理
服务具有弹性,弹性,可组合性,最小化和完整性
软件开发公司为什么要投资微服务架构?改善了故障隔离
在微服务架构中,开发人员确切地知道在哪里寻找要解决的问题。如果单个模块受到影响,则可以轻松拆卸或解决,而不会影响应用程序的其他部分;提高应用程序的可用性。这在整体应用中完全矛盾;单个组件的故障可以拉低整个应用程序。例如,移动游戏应用程序(基于单片架构),具有不同的组件,如支付,登录,播放器,历史记录等。如果特定组件开始占用更多内存空间,整个应用程序将受到影响,这将导致糟糕的用户体验。
易于修改技术堆栈
通过微服务,软件开发公司可以在特定组件上尝试新的堆栈或最新技术,以提高可用性并在应用程序级别获得更大的好处。由于没有依赖性问题,软件开发人员可以避免使用特定的技术堆栈,如果他们不提供一致的用户体验。通过这种持续的现代化,您的系统不会变得容易过时。提供可扩展性
微服务可扩展存在性能问题的部件,并使用最符合服务要求的硬件。由于每个服务都是独立的组件,因此可以使用更多容器部署扩展,从而实现更有效的容量规划,更少的许可成本和适当的硬件。关键服务的组件可以部署在多个服务器上,以提高可用性和性能,而不会影响其他服务的性能。这种可扩展性可带来更好的客户体验并增加成本节约。
与该组织保持一致
如果组织使用微服务,则可以定义团队规模以匹配所需任务。此外,团队可以分解为更小的组,并可以专注于应用程序的单个组件。由于最终目标是客户满意度和良好的用户体验,团队不分为UI团队,数据库团队等。例如,如果在阿联酋工作的团队正在处理三项服务,而在加利福尼亚工作的团队正在处理五项服务,那么在加利福尼亚和阿联酋工作的每个团队都可以独立发布和部署不同的功能。这些跨职能团队致力于实现单一功能,打破团队之间的孤岛,促进更好的协作。提高生产力和速度