本文将为你们介绍当下最流行的服务治理、微服务等相关内容,从服务治理、SOA、微服务到最新的服务网格(Service Mesh)进行综合介绍和分析。易商阜极自2017年开始积极引进微服务的理念,并运用于多个项目实践中,为项目升级改造带来了显著效果。本文将以Dubbo为例,向你们介绍SOA、服务治理等概念,以及Dubbo的基础知识和最新发展状况。算法
SOA(面向服务的体系结构)概念由来已久,在10多年前便开始进入到咱们广大软件开发者的视线中。SOA是一种粗粒度、松耦合服务架构,服务之间经过简单、精肯定义接口进行通信,不涉及底层编程接口和通信模型。SOA能够看做是B/S模型、Web Service技术以后的天然延伸。数据库
服务治理,也称为SOA治理,是指用来管理SOA的采用和实现的过程。如下是在2006年时IBM对于服务治理要点的总结:编程
限于当时的技术发展水平,广大软件设计与开发人员对于SOA和服务治理的技术认知还主要停留在Web Service和ESB总线等技术和规范上,并无真正在软件开发中得以充分落地。安全
直到2011年10月27日,阿里巴巴开源了本身的SOA服务化治理方案的核心框架Dubbo,服务治理和SOA的设计理念开始逐渐在国内软件行业中落地,并被普遍应用。服务器
Dubbo做为阿里巴巴内部的SOA服务化治理方案的核心框架,在2012年时已经天天为2000+个服务提供3,000,000,000+次访问量支持,并被普遍应用于阿里巴巴集团的各成员站点。Dubbo自2011年开源后,已被许多非阿里系公司使用,其中既有当当网、网易考拉等互联网公司,也有中国人寿、青岛海尔等传统企业。网络
Dubbo是一个高性能服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,使得应用可经过高性能RPC实现服务的输出和输入功能,和Spring框架能够无缝集成。架构
做为一个分布式服务框架,以及SOA治理方案,Dubbo其功能主要包括:高性能NIO通信及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与服务降级等。Dubbo最大的特色是按照分层的方式来架构,使用这种方式可使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种很是简单的模型,要么是提供方提供服务,要么是消费方消费服务,因此基于这一点能够抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。负载均衡
Dubbo包含远程通信、集群容错和自动发现三个核心部分。提供透明化的远程方法调用,实现像调用本地方法同样调用远程方法,只需简单配置,没有任何API侵入。同时具有软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,下降成本,减小单点。能够实现服务自动注册与发现,再也不须要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,而且可以平滑添加或删除服务提供者。框架
下图来自Dubbo官网,描述了服务注册中心、服务提供方、服务消费方、服务监控中心之间的调用关系,具体以下图所示:异步
节点角色说明:
调用关系说明:
Dubbo框架设计共划分了10层,最上面的Service层是留给实际使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。
各层说明:
各模块说明:
(1)Multicast注册中心:
Multicast注册中心不须要启动任何中心节点,只要广播地址同样,就能够互相发现。组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段:224.0.0.0 - 239.255.255.255。
(2)ZooKeeper注册中心(推荐):
ZooKeeper是Apacahe子项目,是一个树型的目录服务,支持变动推送,适合做为Dubbo服务的注册中心,可用于生产环境。
对上图流程说明以下:
(3)Redis注册中心:
阿里内部并无采用Redis作为注册中心,而是使用本身实现的基于数据库的注册中心,即:Redis注册中心并无在阿里内部长时间运行的可靠性保障,此Redis桥接实现只为开源版本提供,其可靠性依赖于Redis自己的可靠性。
(4)Simple注册中心:
Simple注册中心自己就是一个普通的Dubbo服务,能够减小第三方依赖,使总体通信方式一致。只是简单实现,不支持集群,可做为自定义注册中心的参考,但不适合直接用于生产环境。
远程通讯须要指定通讯双方所约定的协议,在保证通讯双方理解协议语义的基础上,还要保证高效、稳定的消息传输。Dubbo继承了当前主流的网络通讯框架,主要包括以下几个:
中止维护
从2012年10月23日Dubbo 2.5.3发布后,在Dubbo开源将满一周年之际,阿里基本中止了对Dubbo的主要升级。只在以后的2013年和2014年更新过2次对Dubbo 2.4的维护版本,而后中止了全部维护工做。Dubbo对Srping的支持也停留在了Spring 2.5.6版本上。
分支出现
在阿里中止维护和升级Dubbo期间,当当网开始维护本身的Dubbo分支版本Dubbox,支持了新版本的Spring,并对外开源了Dubbox。同时,网易考拉也维护了本身的独立分支Dubbok,惋惜并未对外开源。
重获新生
通过多年漫长的等待,随着微服务的火热兴起,在国内外开发者对阿里再也不升级维护Dubbo的吐槽声中,阿里终于开始从新对Dubbo的升级和维护工做。在2017年9月7日 ,阿里发布了Dubbo的2.5.4版本,距离上一个版本2.5.3发布已经接近快5年时间了。在随后的几个月中,阿里Dubbo开发团队以差很少每个月一版本的速度开始快速升级迭代,修补了Dubbo老版本多年来存在的诸多bug,并对Spring等组件的支持进行了全面升级。
分支合并
在2018年1月8日,Dubbo 2.6.0版本发布,新版本将以前当当网开源的Dubbo分支Dubbox进行了合并,实现了Dubbo版本的统一整合。
阿里巴巴负责主导了 Dubbo 重启维护的研发工程师刘军在接受采访时表示:当前因为 RPC 协议、注册中心元数据不匹配等问题,在面临微服务基础框架选型时Dubbo与Spring Cloud是只能二选一,这也是为何你们老是拿Dubbo和Spring Cloud作对比的缘由之一。Dubbo以后会积极寻求适配到Spring Cloud生态,好比做为Spring Cloud的二进制通讯方案来发挥Dubbo的性能优点,或者Dubbo经过模块化以及对http的支持适配到Spring Cloud。
获取更多Java高级架构最新视频, 直接点击连接加群。https://jq.qq.com/?_wv=1027&k=5lXBNZ7