微服务架构-什么是微服务? Posted 2021-04-14 栀子花开CO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务架构-什么是微服务?相关的知识,希望对你有一定的参考价值。
解析微服 务架构系 列文章将 分几篇描 述微服务 的定义、 特点、应 用场景、 企业集成 架构的演 进以及微 服务转型 思路和技 术决策考 虑等内容 ,并以I BM技术 为例介绍 如何实现 微服务架 构转型 。
1.为什么需要微服务架构?
a.使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM、ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难;
b.随着移动互联网的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线;
c.许多企业在SOA投资中得到的回报有限,SOA可以通过标准化服务接口实现能力的重用,但对于快速变化的需求,受到整体式应用的限制,有时候显得力不从心;
d.随着应用云化的日益普及,生于云端的应用具有与传统IT不同的技术基因和开发运维模式。
e.此外,从技术方面看,云计算及互联网公
司大量开源轻量级技术不停涌现并日渐成熟,主要有以下几点:
① 互联网/内联网/网络更加成熟;
② 轻量级运行时技术的出现(node.js, WAS Liberty等);
③ 新的方法与工具(Agile, DevOps, TDD, CI, XP, Puppet, Chef…);
④ 新的轻量级协议(RESTful API接口, 轻量级消息机制);
⑤ 简化的基础设施:操作系统虚拟化(hypervisors), 容器化(e.g. Docker), 基础设施即服务 (IaaS), 工作负载虚拟化(Kubernetes,Spark…);
⑥ 服务平台化(PaaS): 云服务平 台上具有 自动缩放 、工作负 载管理、 SLA 管理、消 息机制、 缓存、构 建管理等 各种按需 使用的服 务 ;
⑦ 新的可替代数据持久化模型:如NoSQL, MapReduce, BASE, CQRS等;
⑧ 标准化代码管理:如Github等。
以上这一切都催生了新的架构设计风格 – 微服务架构的出现。
2.什么是微服务?
微服务是 一种架构 风格,一 个大型复 杂软件应 用由一个 或多个微 服务组成 。系统中 的各个微 服务可被 独立部署 ,各个微 服务之间 是松耦合 的。每个 微服务仅 关注于完 成一件任 务并很好 地完成该 任务。在 所有情况 下,每个 任务代表 着一个小 的业务能 力 。
微服务的 概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”(http://martinfowler.com/articles/microservices.html)。
尽管“微服务”这种架构风格没有精确的定义,但其具有一些共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等。
微服务架构的思考是从与整体应用对比而产生的。
其中,对 应用组件 封装的方 式是整体 架构与微 服务架构 的主要差 异,微服 务架构将 相关联的 业务逻辑 及数据放 在一起形 成独立的 边界,其 目的是能 在不影响 其他应用 组件(微 服务)的 情况下更 快地交付 并推出市 场 。
3.微服务架构的一些通用特性
a.通过服务实现应用的组件化(Componentizationvia Services):微服务架构中将组件定义为可被独立替换和升级的软件单元,在应用架构设计中通过将整体应用切分成可独立部署及升级的微服务方式进行组件化设计。
b.围绕业务能力组织服务(Organizedaround Business Capabilities):微服务架构采取以业务能力为出发点组织服务的策略,因此微服务团队的组织结构必须是跨功能的(如:既管应用,也管数据库)、强搭配的DevOps开发运维一体化团队,通常这些团队不会太大(如:亚马逊的“Two pizzateam”- 不超过12人)。
c.产品而非 项目模式 (Pro duct snot Proj ects ):传统 的应用模 式是一个 团队以项 目模式开 发完整的 应用,开 发完成后 就交付给 运维团队 负责维护 ;微服务 架构则倡 导一个团 队应该如 开发产品 般负责一 个“微服 务”完整 的生命周 期,倡导 “谁开发 ,谁运营 ”的开发 运维一体 化方法 。
d.智能端点与管道扁平化(Smartendpoints and dumb pipes):微服务架构主张将组件间通讯的相关业务逻辑/智能放在组件端点侧而非放在通讯组件中,通讯机制或组件应该尽量简单及松耦合。RESTful HTTP协议和仅提供消息路由功能的轻量级异步机制是微服务架构中最常用的通讯机制。
e.“去中心化”治理(DecentralizedGovernance):整体式应用往往倾向于采用单一技术平台,微服务架构则鼓励使用合适的工具完成各自的任务,每个微服务可以考虑选用最佳工具完成(如不同的编程语言)。微服务的技术标准倾向于寻找其他开发者已成功验证解决类似问题的技术。
f.“去中心化”数据管理(DecentralizedData Management):微服务架构倡导采用多样性持久化(PolyglotPersistence)的方法,让每个微服务管理其自有数据库,并允许不同微服务采用不同的数据持久化技术。
g.基础设施自动化(InfrastructureAutomation):云化及自动化部署等技术极大地降低了微服务构建、部署和运维的难度,通过应用持续集成和持续交付等方法有助于达到加速推出市场的目的。
h. 故障处理设计(Designfor fail ure) :微服务 架构所带 来的一个 后果是必 须考虑每 个服务的 失败容错 机制。因 此,微服 务非常重 视建立架 构及业务 相关指标 的实时监 控和日志 机制 。
4.微服务的一些常见误解
关于一些比较概念的澄清:
1.在同一范畴内比较才有意义:
微服务架构 VS SOA - 两者都是架构风格范畴,但其关注领域与涉及范围不同。SOA更关注企业规模范围,微服务架构则更关注应用规模范围。
微服务组件 VS 服务组件 – 两者都是 描述业务功能的具体实现,其区别在于粒度不同,此外还有在可管理性、灵活性上的差异。
2.概念混淆的不恰当比较:
微服务 VS SOA – 不恰当的比较。微服 务是组件范畴,而SOA是一种架构设计风格。因此应该比较的是微服务架构与SOA。
微服务 VS API – 不恰当的比较 。API是 接口,是业务功能暴露的一种机制。微服务架构是用于实施业务功能的组件架构。因此直接比较它们是没有意义的。
微服务 VS 服务– 不恰当的比较。“服 务”在不同的场景下有不同的含义,需要进一步澄清其描述的语境,是指服务实施、服务暴露、服务定义还是其他?微服务亦是如此,需要有特定语境才可判断比较是否有意义。
微服务架构与SOA架构的比较
关于微服务架构的取舍
1.在合适的项目,合适的团队,采用微服务架构收益会大于成本。
2.微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。
3.需要避免为了“微服务”而“微服务”。
4.微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。
以上是关于微服务架构-什么是微服务?的主要内容,如果未能解决你的问题,请参考以下文章
什么是微服务架构啊?
什么是微服务架构?主流的微服务如何实现?
微服务架构-什么是微服务?
一篇故事告诉你什么是微服务架构!
面试官:谈谈什么是微服务架构?
微服务:什么是微服务架构?