微服务架构综述

来源 :科学与财富 | 被引量 : 0次 | 上传用户:xqqsamsung
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:一方面,随着互联网高速发展,IT技术日新月异变化,传统的单块架构应用面临着越来越多的挑战,已无法适应快速迭代更新,其改造与重构势在必行。另一方面,随着敏捷开发、持续集成交付、DevOps、云计算、虚拟技术docker化等的深入人心,微服务的诞生势在必行。微服务架构是一项在云中部署应用和服务的新架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,满足用户需求,实现了可扩展性、易伸缩性及高可用性。首先介绍了微服务架构的定义及工作原理;然后与传统架构进行对比,并分析两者优缺点;接着介绍了微服务架构现有的应用框架;最后提出了微服务架构未来的发展方向。
  关键词:微服务;架构;SOA;SpringCloud;Dubbo
  1引言
  随着市场的快速发展,业务的不断扩大,单块架构应用面临着越来越多的挑战,其改造与重构势在必行。而微服务架构的诞生,是互联网高速发展,虚拟化技术应用以及持续交付、DevOps深入人心的综合产物。随着用户需求个性化、产品生命周期变短,微服务架构是未来软件软件架构朝着灵活性、扩展性、伸缩性以及高可用性发展的必然方向。同时,以Docker为代表的容器虚拟化技术的盛行,将大大降低微服务实施的成本,为微服务落地以及大规模使用提供了坚实的基础和保障。
  2微服务架构的定义及原理
  ThoughtWorks的首席科学家,马丁 -福勒先生对微服务的这段描述,似乎更加具体、贴切,通俗易懂:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
  3 微服务与传统架构的区别
  3.1单块架构
  传统的单块架构是以技术分层,譬如表示层、业务逻辑层、数据访问层。单块架构虽然逻辑上分为3层,但是它依旧是功能集中、代码和数据中心化的一个发布包,运行在同一个机器的同一个进程中。当业务量较小时,它拥有易开发、易测试、易部署、易水平伸缩等多项优势。
  但随着业务量扩大化、用户需求个性化、产品生命周期变短、市场需求不稳定等因素的出现,单块架构系统面临着越来越多的挑战。
  主要提现在以下六点:1)维护成本增加;2)持续交付周期长;3)新人培养周期长;4)技术选型成本高;5)可伸缩性差;6)构建全功能团队难。
  3.2 SOA架构与微服务
  SOA(Service-Oriented Architecture),是一种粗粒度、松耦合服务架构,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。刘颖说“SOA 即面向服务的架构,大多数企业采用 SOA 来降低项目业务之间的耦合程度, 将庞大的项目拆分成多个独立的微小服务, 服务之间根据定义标准的接口规范通过 API 接口的形式进行通信,这样不仅可以使项目解耦,同时简化了复杂的业务流程,可以根据业务需要从不同的入口进行处理,提高了系统调度的灵活性,但是与此同时也会引入一些新的问题,由于各个服务之间需要约定标准和规范,才能保证正常的使用,这样限制了业务多元化发展,SOA 相当于向外部提供了定制化的服务。 而且在项目部署的时候习惯将基础服务生成 jar包,供其他业务服务调用的时候添加依赖,这其实在项目部署的时候并没有将整体项目进行彻底的拆分, 服务与服务之间依然存在依赖关系,为了能够更好的解决上述问题,微服务架构便应运而生了”。
  仔细分析SOA架构与服务器架构的概念,二者的基本思想几乎一致,但是从具体的实现出发,二者大相径庭。
  相比传统SOA的服务实现方式,微服务更具有灵活性、可实施性以及可扩展性,其强调的是一种独立测试、独立部署、独立运行的软件架构模式。
  4. 微服务架构的优点和不足
  4.1 微服务架构优点
  微服务架构的优点主要有以下五个方面:
  (1)复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。
  (2)独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。
  (3)技术选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,当需要对技术栈进行升级时所面临的风险较低,甚至完全重构一个微服务也是可行的。
  (4)容错:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服務可通过重试、平稳退化等机制实现应用层面的容错。
  (5)扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。   4.2 微服务架构的不足
  微服务架构的优点主要有以下六个方面:
  (1)运营开销。更多的服务也就意味着更多的运营,产品团队需要保证所有的相关服务都有完善的监控等基础设施,传统的架构开发者只需要保证一个应用正常运行,而现在却需要保证几十甚至上百道工序高效运转,这是一个艰巨的任务。
  (2)DevOps要求。使用微服务架构后,开发团队需要保证一个Tomcat集群可用,保证一个数据库可用,这就意味着团队需要高品质的DevOps和自动化技术。而现在,这样的全栈式人才很少。
  (3)隐式接口。服务和服务之间通过接口来“联系”,当某一个服务更改接口格式时,可能涉及到此接口的所有服务都需要做调整。
  (4)重复劳动。在很多的服务中可能都会使用到同一个功能,而这一功能点没有足够大到提供一个服务的程度,这个时候可能不同的服务团队都会单独开发这一功能,重复的业务逻辑,这违背了良好的软件工程中的很多原则。
  (5)分布式系统的复杂性。微服务通过REST API或消息来将不同的服务联系起来,这在之前可能只是一个简单的远程过程调用。分布式系统也就意味着开发者需要考虑网络延迟、容错、消息序列化、不可靠的网络、异步、版本控制、负载等,而面对如此多的微服务都需要分布式时,整个产品需要有一整套完整的机制来保证各个服务可以正常运转。
  (6)事务、异步、测试面临挑战。跨进程之间的事务、大量的异步处理、多个微服务之间的整体测试都需要有一整套的解决方案,而现在看起来,这些技术并没有成熟。
  5. 微服务发展现状(SpringCloud dubbo 以及网易云整合,优缺点)
  目前应用微服务架构的框架主要有两种,一种是dubbo,另一种是spring cloud。本文从四个方面对两者进行简要分析。第一,背景方面来看,Dubbo是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点,在国内十分流行。spring-colud是一种云端分布式架构解决方案,利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,在国外影响较大;第二,从社区活跃度的角度来看,在Github上,截止今日(2018年10月9月),Dubbo的最近一次更新在一月之前,更新频率不高且中途存在长时间不更新的情况,而SpringCloud的最近一次更新是在5分钟之前,活跃度十分高;第三,架构完整度,根据微服务架构在各方面的要素,看看Spring Cloud和Dubbo都提供了哪些支持。
  从上图可看出,Dubbo只实现了微服务整体架构中的部分组件,需要与其他组件组合才能形成完整的微服务架构,比如其中的分布式配置可以配合淘宝的diamond、百度的disconf来实现,服务跟踪可以使用京东开源的Hydra,批量任务可以使用当当开源的Elastic-Job等等,因此,可将Dubbo看作一个类似Netflix的子集。从文档质量的角度来看,Dubbo的文档 可以说在国内开源框架中算是一流的,非常全,并且讲解的也非常深入,由于版本已经稳定不再更新,所以也不太会出现不一致的情况,另外提供了中文与英文两种版本,对于国内开发者来说,阅读起来更加容易上手,这也是dubbo在国内更火一些的原因吧。Spring Cloud由于整合了大量组件,文档在体量上自然要比dubbo多很多,文档内容上还算简洁清楚,但是更多的是偏向整合,更深入的使用方法还是需要查看其整合组件的详细文档。与此同时,网易云推出了轻舟微服务,即围绕应用和微服务打造的一站式 PaaS 平台,帮助用户快速实现易接入、易运维的微服务解决方案。它的优势主要集中于以下四点。第一,基于开源、兼容开源。全面兼容SpringCloud和dubbo框架,支持已有的服务框架平滑迁移;第二,支持大规模业务的生产环境验证;第三,低成本、易接入。支持代码零改动支持微服务框架,支持应用扩扑可视化,支持平台统一的平台认证和权限管控;第四,智能运维和立体化监控。支持实时监控,精准掌控服务健康状况。提供服务拓扑,调用链跟踪可视化呈现。采用多维度关联分析,预防系统级故障。由此可见,网易云方便了中小企业更快捷的接入微服务框架,降低了中小企业的技术成本,同时使微服务的应用更加广泛。
  结束语
  综上所述,微服务架构正在逐步走向完善与成熟。它解决了单块架构的痛点,相对SOA架构,微服务真正实现了单个业务系统内部真正的组件化和服务化,可独立地进行开发、管理和加速,使得部署、管理和交付变得更加简单,充分体现了它的灵活性和可扩展性。同时,不论是国内的dubbo框架还是国外的SpringCloud,亦或是网易云整合的轻舟微服务平台,都具有非常高的可行性,随着它们不断的发展与完善,我们坚信微服务架构将在未来的架构之路上扮演者重要角色。
  参考文献:
  [1] 侯海平,李龙.基于Dubbo服务治理模式的单体架构改造[J].通化师范学院学报,2018,39(8):64-68.
  [2] 王方旭. 基于SpringCloud实现业务系统微服务化的设计与实现[J]. 电子技术与软件工程, 2018(8).
  [3] 王方旭. 基于Spring Cloud和Docker的微服务架构设计[J]. 中国信息化, 2018(3).
  [4] 張峰. 微服务技术构建大规模web系统的研究[J]. 科技创新与应用, 2017(22):48-49.
  [5] 王纪军, 张斌, 顾永生,等. 云环境中Web应用的微服务架构评估[J]. 计算机系统应用, 2017, 26(5):9-15.
  [6] 王磊. 微服务架构与实践[M]. 电子工业出版社, 2016.
  [7]王磊.解析微服务架构(一)单块架构系统以及其面临的挑战 [2015-05-11].http://www.infoq.com/cn/articles/analysis-thearchitecture-of-microservice-part-01
  [8]解析微服务架构(二)微服务架构综述
  [2015-07-10]. http://www.infoq.com/cn/articles/analysis-the-architecture-of-microservice-part-02
  [9]张晶, 王琰洁, 黄小锋. 一种微服务框架的实现[J]. 计算机系统应用, 2017, 26(4):82-86.
  作者简介:
  陈龙,三峡大学计算机与信息学院,硕士研究生在读,研究方向:软件工程。
  刘勇,三峡大学计算机与信息学院,博士,教授,研究方向:计算机应用。
其他文献
摘 要:国家经济的发展进步,人们的生活水平一跃步入了小康水平。而对于饮食的的要求也从最初的怎样吃的饱变成了怎样吃的好,现在人们不仅要求吃得好,更讲究饮食中的营养补充是否全面均衡。这样的变化是正向积极的 ,说明人们真正开始重视饮食生活的品质,而不是单纯追求味蕾刺激。同时也注意到了饮食对于身体健康的不可忽视的作用。虽然想法值得鼓励,但是并不是所有人都了解学习过营养膳食的专业知识,所以许多人盲目听从所谓
期刊
摘 要:在现代生活中,人脸识别技术发挥着越来越重要的作用。由于技术等方面的限制,人脸识别技术还存在着一定的问题和缺陷。为了推动人脸识别技术的发展,人们正在对多尺度LBP下的人脸识别方法展开新的研究。在本文中,我们通过分析人脸识别技术的发展现状,对其技术中的优缺点进行了研究。同时,我们结合时代技术发展的特点,对基于多尺度LBP下的人脸识别技术的发展和应用进行了探讨。这些研究对人脸识别技术的发展和应用
期刊
摘 要:焊接裂纹是焊接件中最常见的一种严重缺陷。在焊接应力及其他致脆因素共同作用下,焊接接头中局部地区的金属原子结合力遭到破坏而形成的新界面所产生的缝隙。随着油气长输管道的不断发展,在国内外管道工程施工越来越多,中石化在国内近些年相继建设了很多大型工程,例如川气东送、西气东输二线和西气东输三线管道工程等等,管线材质也在不断提高,从X 60、X 70逐渐升高到X 80甚至达到了X 90,壁厚也从11
期刊
摘 要:在经济持续增长背景下,人均物质生活水平显著提升,对于电力需求量持续增长,电力事业获得了良好的发展前景,但同时也为供电企业经营发展带来了严峻的竞争压力,如何能够脱颖而出,提升竞争优势占据更大的市场份额成为当前首要关注问题之一。基于此,供电企业在管理工作中,应该提升对成本预算管理重视程度,制定完善的管理制度,促使成本预算管理标准化、规格化发展,降低企业经营成本的同时,带来更大的经营效益。但是就
期刊
摘 要:目前我国在高压室的高压开关柜交接试验中仍然存在着很多尚未解决、突破的难题,例如交叉工作人员数量较多、试验方法流程设计不当等众多问题。本文基于对造成开关柜交接试验时间过长的各种相关因素的分析,对如何优化10kV高压开关柜交接试验进行试验方法进行初步探索,希望为10kV高压开关柜交接试验方法的进一步优化与改良提供方法指导。  关键词:10kV高压开关柜;交接试验;高压室  在变电站高压室的众多
期刊
摘 要:快手、抖音及火山小视频等短视频APP早已渗透进各个年龄层的用户,网络直播也日渐成为一种营销途径,网红、主播的出现如雨后春笋,线上营销与网络直播融合的发展已经势不可挡。农产品的营销方式也要打破传统,借助网络直播这个平台,使农产品种植者与消费者之间最直接的接触,减少中间商,使农产品种植者利益最大化。  关键词:农场品销售;直播;电商  时代在变化,营销方式也在不断发生变化,目前直播已经成为一个
期刊
摘 要:随着当前社会经济的不断发展,相应的也就带动了科学技术水平的提升。正是在这样的前提之下,科学技术越来越广泛的应用到了交通领域中。根据实际情况观察可知,人们在交通出行方面的便捷度越来越高,以往需要花费很长出行时间的情况得到了极大的改善,DC600V客车正是这样先进的交通载具之一。但是随着DC600V客车的长期运行,我们发现其在供电系统上还存在一定的故障问题,如果不采取科学的措施对其展开处理的话
期刊
摘 要:分析了几种土壤重金属的污染性,并阐述了这些重金属在土壤里存在的主要形式,变迁转化的主要特征,及通过污染土壤造成的植被污染及人类健康,同时探究了防止污染的策略。  关键词:土壤污染;重金属;危害;措施  在所有的污染源内,重金属污染对土壤的危害是最严重的。由于土壤中无法实现重金属的降解,造成重金属的堆积以转化成某种化合物,该化合物的毒害作用更大,更严重的是这些污染会沿着食物链向人类流动,对人
期刊
摘 要:随着建筑行业的不断发展,涌现出了越来越多的房屋建筑,居民小区的建设规模也在不断扩大。随着人们生活水平的逐渐提高,人们对小区配电质量要求也不断提高。为了满足小区人们的用电需求,提高小区居民的生活质量,我们需要不断提高居民小区配电设备的智能化水平,保证小区人们用电的安全性和稳定性。  关键词:居民小区;配电设备;智能化  随着城市化水平的不断发展以及人们生活水平的日益提高,人们对居住环境的要求
期刊
摘 要:法律风险的防范是所有企业日常工作的主要内容,由于企业在运营的过程中,法律风险和全局发展产生直接联系,企业必须做好法律风险防范的工作,才能够让自己在发展中不处于劣势的地位。本文主要对供电企业法律风险及防范进行分析。  关键词:供电企业;法律风险;防范  供电企业是电网运行的末端组织,还是电网运营的基础。就供电企业而言,所面临的法律风险不但是从企业的外部环境当中所得来的,同时,还可能是从企业内
期刊