亿博体育app-亿博体育app下载|官方首页 042-83928381

微服务架构的详细解释(1):什么是微服务

作者:亿博体育app 时间:2021-09-30 15:23
本文摘要:微服务架构分析系列文章将分为几个定义、特点、应用场景、企业集成架构演进、微服务转型思路和技术决策等。并以IBM技术为例说明如何实现微服务架构转换。 为什么微服务架构“微服务”架构是最近软件应用领域的一个热点。

亿博体育app

微服务架构分析系列文章将分为几个定义、特点、应用场景、企业集成架构演进、微服务转型思路和技术决策等。并以IBM技术为例说明如何实现微服务架构转换。

为什么微服务架构“微服务”架构是最近软件应用领域的一个热点。我们先来看看传统IT架构面临的一些问题:使用传统的Monolithic Architecture应用开发系统,比如CRM、ERP等大型应用,随着新需求的不断增加,企业对大型Monolithic应用的更新和修复变得越来越困难;随着移动互联网的发展,企业为了与移动设备兼容,被迫将应用迁移到现代UI界面架构,这就要求企业实现应用功效的快速启动;很多企业在SOA投资上回报有限,SOA可以通过标准化的服务接口重用其能力。但对于瞬息万变的需求,受到整体应用的限制,有时似乎力度不够;随着应用云化的日益普及,云中诞生的应用具有不同于传统IT的技术基因和开发运维模式。

此外,从技术角度来看,云计算和互联网公司的大量开源轻量级技术正在不断涌现和成熟:互联网/内部网/网络正在变得更加成熟;轻量级运行时技术(node.js,WAS Liberty等)的出现。);新的方法和工具(Agile、Devops、TDD、CI、XP、Puppet、Chef……);新的轻量级协议(RESTful API接口,轻量级消息机制);简化的基础架构:操作系统虚拟化(虚拟机管理程序)、容器化(例如Docker)、基础架构即服务(IaaS)、事件负载虚拟化(Kubernetes、Spark…)等。服务平台化(PaaS):云服务平台上有各种服务,如自动伸缩、事务负载治理、SLA治理、消息机制、缓存、构建治理等;新的替代数据持久化模型:如NoSQL、MapReduce、BASE、CQRS等;扩展代码治理:比如Github。这些都催生了一种新的建筑设计风格——微服务建筑的出现。

什么是微服务微服务是一种建筑风格。一个庞大的软件应用程序由一个或多个微服务组成。系统中的每个微服务都可以独立部署,每个微服务都是松散耦合的。

每个微服务只专注于完成一个任务,并很好地完成任务。在所有情况下,每项任务都代表一项小型业务能力。微服务的观点来自马丁福勒(Martin Fowler)在2014年3月写的一篇文章“微服务”(http://martinfowler.com/articles/microservices.html)。虽然“微服务”的体系结构风格没有准确的定义,但它具有一些匹配的特征,例如围绕业务能力组织服务、自动部署、智能端点以及对语言和数据的“分散”控制。

微服务架构的思想来源于与整个应用的比较。在微服务架构中,整体架构和微服务架构的主要区别在于应用组件的封装方式。微服务架构将相关的业务逻辑和数据放在一起形成一个独立的边界,其目的是在不影响其他应用组件(微服务)的情况下更快地交付和营销。根据MartinFowler的分析,微服务架构具有以下一般特征,但并不是所有的微服务架构应用都必须具备所有这些特征:Componentizationvia Services:在微服务架构中,组件被定义为可以独立替换和升级的软件单元,在应用架构设计中,整个应用被划分为可以独立部署和升级的微服务。

围绕业务能力来组织:微服务架构接受基于业务能力来组织服务的策略,所以微服务团队的组织结构必须是跨职能(如同时管理应用和数据库)且高度匹配的DevOps开发、运维集成团队,通常不会太大(如亚马逊的“两个披萨团队”——不超过12人)。微服务架构产品而非项目:传统的应用模式是一个团队以项目模式开发一个完整的应用,开发完成后交付运维团队进行硬维护;微服务架构主张一个团队要像一个开发的产品一样努力完成“微服务”的生命周期,主张“谁开发,谁运营”的集成开发、运营、维护方法。Smartendpoints和dumb pipes:微服务架构主张将组件间通信相关的业务逻辑/智能放在组件端点端,而不是通信组件端,通信机制或组件应该简单、松散耦合。

RESTful HTTP协议和仅提供消息路由效率的轻量级异步机制是微服务架构中最常用的通信机制。分散管理:整体应用倾向于接受单一技术平台,而微服务架构鼓励使用合适的工具来完成任务,每个微服务可以考虑使用最好的工具来完成(如不同的编程语言)。微服务的技术规模倾向于寻找其他开发人员已经成功验证的技术来解决类似的问题。分散数据管理:微服务架构提倡接受多种持久性的方法,允许每个微服务管理自己的数据库,并允许不同的微服务接受不同的数据持久性技术。

基础设施自动化:云化和自动部署技术大大降低了微服务构建、部署和运维的难度,并通过应用持续集成和持续交付方法,帮助加快市场的推出。为失败而设计:微服务架构的结果是必须思量每个服务的失败容错机制。因此,微服务很是重视建设架构及业务相关指标的实时监控和日志机制。

演进式的设计(EvolutionaryDesign):微服务应用更注重快速更新,因此系统的计会随时间不停变化及演进。微服务的设计受业务功效的生命周期等因素影响。如某应用是整体式应用,但逐渐朝微应用架构偏向演进,整体式应用仍是焦点,但新功效将使用应用所提供的API构建。再如在某微服务应用中,可替代性模块化设计的基本原则,在实施后发现某两个微服务经常必须同时更新,则这很可能意味着应将其合并为一个微服务。

微服务的一些常见误解微服务架构关于一些比力观点的澄清:在同一领域内比力才有意义:微服务架构 vs. SOA – 两者都是架构气势派头领域,但其关注领域与涉及规模差别。SOA更关注企业规模规模,微服务架构则更关注应用规模规模。微服务组件 vs. 服务组件 – 两者都是形貌业务功效的详细实现,其区别在于粒度差别,此外另有在可治理性、灵活性上的差异。观点混淆的不恰当比力微服务 vs. SOA – 不恰当的比力。

亿博体育app

微服务是组件领域,而SOA是一种架构设计气势派头。因此应该比力的是微服务架构与SOA。微服务 vs. API – 不恰当的比力。

API是接口,是业务功效袒露的一种机制。微服务架构是用于实施业务功效的组件架构。因此直接比力它们是没有意义的。

微服务 vs. 服务– 不恰当的比力。“服务”在差别的场景下有差别的寄义,需要进一步澄清其形貌的语境,是指服务实施、服务袒露、服务界说还是其他?微服务亦是如此,需要有特定语境才可判断比力是否有意义。微服务架构与SOA架构的比力微服务架构一个简朴的微服务应用例子:航班预订应用微服务架构将航班预订应用划分为预订航班、时间表查询、盘算票价、分配座位、治理奖励、更新客户、调整库存七个微服务实施。

哪些应用会从微服务收益 ?记载型系统(System of Record)将从微服务方法中获益最多。例如可将大型应用按相对独立的业务功效剖析成若干个微服务实现。交互型系统(System of Engagement)也将受益于微服务方法,例如渠道应用可以应用“后端服务前端”的模式实现。

分析型系统(System of Insight)则可能对微服务受益不多。其他架构模式如管道及过滤模式可能更适用于分析型系统。

微服务架构的优点:每个服务都比力简朴,只关注于一个业务功效。微服务架构方式是松耦合的,可以提供更高的灵活性。

亿博体育app

微服务可通过最佳及最合适的差别的编程语言与工具举行开发,能够做到有的放矢地解决针对性问题。每个微服务可由差别团队独立开发,互不影响,加速推出市场的速度。微服务架构是连续交付(CD)的庞大推动力,允许在频繁公布差别服务的同时保持系统其他部门的可用性和稳定性。

微服务架构的缺点:微服务的一些想法在实践上是好的,但当整体实现时也会出现出其庞大性。运维开销及成本增加:整体应用可能只需部署至一小片应用服务区集群,而微服务架构可能酿成需要构建/测试/部署/运行数十个独立的服务,并可能需要支持多种语言和情况。这导致一个整体式系统如果由20个微服务组成,可能需要40~60个历程。必须有坚实的DevOps开发运维一体化技术:开发人员需要熟知运维与投产情况,开发人员也需要掌握须要的数据存储技术如NoSQL,具有较强DevOps技术的人员比力稀缺,会带来招聘人才方面的挑战。

隐式接口及接口匹配问题:把系统分为多个协作组件后会发生新的接口,这意味着简朴的交织变化可能需要改变许多组件,并需协调一起公布。在实际情况中,一个新品公布可能被迫同时公布大量服务,由于集成点的大量增加,微服务架构会有更高的公布风险。

代码重复:某些底层功效需要被多个服务所用,为了制止将“同步耦合引入到系统中”,有时需要向差别服务添加一些代码,这就会导致代码重复。漫衍式系统的庞大性:作为一种漫衍式系统,微服务引入了庞大性和其他若干问题,例如网络延迟、容错性、消息序列化、不行靠的网络、异步机制、版本化、差异化的事情负载等,开发人员需要思量以上的漫衍式系统问题。

异步机制:微服务往往使用异步编程、消息与并行机制,如果应用存在跨微服务的事务性处置惩罚,其实现机制会变得庞大化。可测性的挑战:在动态情况下服务间的交互会发生很是微妙的行为,难以可视化及全面测试。

经典微服务往往不太重视测试,更多的是通过监控发现生产情况的异常,进而快速回滚或接纳其他须要的行动。但对于特别在意风险规避羁系或投产情况错误会发生显著影响的场景下需要特别注意。关于微服务架构的取舍在合适的项目,合适的团队,接纳微服务架构收益会大于成本。微服务架构有许多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。

需要制止为了“微服务”而“微服务”。微服务架构引入计谋 – 对传统企业而言,开始时可以思量引入部门合适的微服务架构原则对已有系统举行革新或新建微服务应用,逐步探索及积累微服务架构履历,而非全盘实施微服务架构。


本文关键词:微,服务,架构,的,详细,解释,什么,是,微,服务,亿博体育app

本文来源:亿博体育app-www.meidile.net