exchange服务器地点 (exchange服务器地点 是什么)〔exchange服务器地址是什么〕

  Dubbo是Alibaba开源的分布式服务框架 ,它最大的特点是按照分层的方式来架构,利用 这种方式可以使各个层之间解耦合(大概 最大限度地松耦合) 。

  从服务模子 的角度来看,Dubbo采取 的是一种非常简单 的模子 ,要么是提供方提供服务,要么是斲丧 方斲丧 服务,以是 基于这一点可以抽象出服务提供方(Provider)和服务斲丧 方(Consumer)两个脚色 。关于注册中心 、协议支持、服务监控等内容,详见背面 形貌 。

  总体架构

  Dubbo的总体架构 ,如图所示:

  

  Dubbo的总体架构

  Dubbo框架计划 一共分别 了10个层,而最上面的Service层是留给实际 想要利用 Dubbo开辟 分布式服务的开辟 者实现业务逻辑的接口层 。图中左边淡蓝配景 的为服务斲丧 方利用 的接口,右边淡绿色配景 的为服务提供方利用 的接口 , 位于中轴线上的为两边 都用到的接口。

  下面,连合 Dubbo官方文档,我们分别明白 一下框架分层架构中 ,各个条理 的计划 要点:

业务逻辑

服务接口层(Service):该层是与实际 业务逻辑相干 的,根据服务提供方和服务斲丧 方的业务计划 对应的接口和实现。

RPC模块

设置 层(Config):对外设置 接口,以ServiceConfig和ReferenceConfig为中心 ,可以直接new设置 类,也可以通过spring分析 设置 天生 设置 类。

服务署理 层(Proxy):服务接口透明署理 ,天生 服务的客户端Stub和服务器端Skeleton ,以ServiceProxy为中心 ,扩展接口为ProxyFactory 。

服务注册层(Registry):封装服务地点 的注册与发现,以服务URL为中心 ,扩展接口为RegistryFactory、Registry和RegistryService。大概 没有服务注册中心 ,此时服务提供方直接袒露 服务。

集群层(Cluster):封装多个提供者的路由及负载均衡 ,并桥接注册中心 ,以Invoker为中心 ,扩展接口为Cluster 、Directory、Router和LoadBalance 。将多个服务提供方组合为一个服务提供方,实现对服务斲丧 方来透明,只必要 与一个服务提供方举行 交互。

监控层(Monitor):RPC调用次数和调用时间监控 ,以Statistics为中心 ,扩展接口为MonitorFactory、Monitor和MonitorService。

协议界说 层(Protocol):封将RPC调用,以Invocation和Result为中心 ,扩展接口为Protocol、Invoker和Exporter 。Protocol是服务域,它是Invoker袒露 和引用的主功能入口,它负责Invoker的生命周期管理。

Invoker是实体域 ,它是Dubbo的核心 模子 ,别的 模子 都向它靠扰,或转换成它,它代表一个可实行 体 ,可向它发起invoke调用,它有大概 是一个本地 的实现,也大概 是一个长途 的实现 ,也大概 一个集群实现。

长途 调用协议

信息互换 层(Exchange):封装哀求 相应 模式,同步转异步,以Request和Response为中心 ,扩展接口为Exchanger 、ExchangeChannel、ExchangeClient和ExchangeServer 。

网络传输层(Transport):抽象mina和netty为同一 接口,以Message为中心 ,扩展接口为Channel、Transporter 、Client、Server和Codec。

数据序列化层(Serialize):可复用的一些工具 ,扩展接口为Serialization、 ObjectInput 、ObjectOutput和ThreadPool。

  从上图可以看出,Dubbo对于服务提供方和服务斲丧 方,从框架的10层中分别提供了各自必要 关心和扩展的接口 ,构建整个服务生态体系 (服务提供方和服务斲丧 方本身 就是一个以服务为中心 的) 。

  根据官方提供的,对于上述各层之间关系的形貌 ,如下所示:

在RPC中,Protocol是核心 层 ,也就是只要有Protocol + Invoker + Exporter就可以完成非透明的RPC调用,然后在Invoker的主过程上Filter拦截点。

图中的Consumer和Provider是抽象概念,只是想让看图者更直观的相识 哪些类分属于客户端与服务器端 ,不消 Client和Server的缘故起因 是Dubbo在很多 场景下都利用 Provider、Consumer、Registry 、Monitor分别 逻辑拓普节点,保持同一 概念。

Cluster是外围概念,以是 Cluster的目标 是将多个Invoker伪装成一个Invoker ,如许 别的 人只要关注Protocol层Invoker即可,加上Cluster大概 去掉Cluster对别的 层都不会造成影响,由于 只有一个提供者时 ,是不必要 Cluster的。

Proxy层封装了全部 接口的透明化署理 ,而在别的 层都以Invoker为中心 ,只有到了袒露 给用户利用 时 ,才用Proxy将Invoker转成接口,或将接口实现转成Invoker,也就是去掉Proxy层RPC是可以Run的,只是不那么透明 ,不那么看起来像调本地 服务一样调长途 服务 。

Remoting实现是Dubbo协议的实现,假如 你选择RMI协议,整个Remoting都不会用上 ,Remoting内部再划为Transport传输层和Exchange信息互换 层,Transport层只负责单向消息传输,是对Mina、Netty、Grizzly的抽象 ,它也可以扩展UDP传输,而Exchange层是在传输层之上封装了Request-Response语义。

Registry和Monitor实际 上不算一层,而是一个独立的节点 ,只是为了全局概览,用层的方式画在一起。

核心 要点

  从上面的架构图中,我们可以相识 到 ,Dubbo作为一个分布式服务框架,重要 具有如下几个核心 的要点:

  服务界说

  服务是围绕服务提供方和服务斲丧 方的,服务提供方实现服务,而服务斲丧 方调用服务 。

  服务注册

  对于服务提供方 ,它必要 发布服务,而且由于应用体系 的复杂性,服务的数量 、范例 也不绝 膨胀;对于服务斲丧 方 ,它最关心怎样 获取到它所必要 的服务,而面对 复杂的应用体系 ,必要 管理大量的服务调用。

  而且 ,对于服务提供方和服务斲丧 方来说,他们尚有 大概 兼具这两种脚色 ,即既必要 提供服务 ,有必要 斲丧 服务。通过将服务同一 管理起来,可以有效 地优化内部应用对服务发布/利用 的流程和管理 。

  服务注册中心 可以通过特定协议来完成服务对外的同一 。Dubbo提供的注册中心 有如下几种范例 可供选择:

Multicast注册中心

Zookeeper注册中心

Redis注册中心

Simple注册中心

服务监控

  无论是服务提供方,还是 服务斲丧 方 ,他们都必要 对服务调用的实际 状态举行 有效 的监控,从而改进服务质量。

  长途 通讯 与信息互换

  长途 通讯 必要 指定通讯 两边 所约定的协议,在包管 通讯 两边 明白 协议语义的底子 上,还要包管 高效、稳固 的消息传输 。Dubbo继承 了当前主流的网络通讯 框架 ,重要 包罗 如下几个:

Mina

Netty

exchange服务器地址(exchange服务器地址是什么) exchange服务器地点
(exchange服务器地点
是什么)〔exchange服务器地址是什么〕 新闻资讯

Grizzly

服务调用

  下面从Dubbo官网直接拿来,看一下基于RPC层,服务提供方和服务斲丧 方之间的调用关系 ,如图所示:

  

  服务调用过程

  上图中,蓝色的表现 与业务有交互,绿色的表现 只对Dubbo内部交互。上述图所形貌 的调用流程如下:

服务提供方发布服务到服务注册中心 ;

服务斲丧 方从服务注册中心 订阅服务;

服务斲丧 方调用已经注册的可用服务;

  接着 ,将上面抽象的调用流程图睁开 ,具体 如图所示:

  

Dubbo Extension

  注册/注销服务

  服务的注册与注销,是对服务提供方脚色 而言 ,那么注册服务与注销服务的时序图,如图所示:

  

exchange服务器地址(exchange服务器地址是什么) exchange服务器地点
(exchange服务器地点
是什么)〔exchange服务器地址是什么〕 新闻资讯

注册服务与注销服务的时序图

  服务订阅/取消

  为了满意 应用体系 的需求,服务斲丧 方的大概 必要 从服务注册中心 订阅指定的有服务提供方发布的服务 ,在得到关照 可以利用 服务时,就可以直接调用服务。反过来,假如 不必要 某一个服务了,可以取消该服务 。下面看一下对应的时序图 ,如图所示:

  

服务订阅与取消

  协议支持

  Dubbo支持多种协议,如下所示:

Dubbo协议

Hessian协议

HTTP协议

RMI协议

WebService协议

Thrift协议

Memcached协议

Redis协议

  在通讯 过程中,差别 的服务品级 一样平常 对应着差别 的服务质量 ,那么选择符合 的协议便是一件非常紧张 的事变 。你可以根据你应用的创建来选择。比方 ,利用 RMI协议,一样平常 会受到防火墙的限定 ,以是 对于外部与内部举行 通讯 的场景,就不要利用 RMI协议,而是基于HTTP协议大概 Hessian协议。

  Dubbo模块图

  Dubbo以包布局 来构造 各个模块 ,各个模块及其关系,如图所示:

  

Dubbo模块图

  可以通过Dubbo的代码(利用 Maven管理)构造 ,与上面的模块举行 比力 。简单 阐明 各个包的环境 :

dubbo-common 公共逻辑模块 ,包罗 Util类和通用模子 。

dubbo-remoting 长途 通讯模块,相称 于Dubbo协议的实现,假如 RPC用RMI协议则不必要 利用 此包。

dubbo-rpc 长途 调用模块,抽象各种协议 ,以及动态署理 ,只包罗 一对一的调用,不关心集群的管理 。

dubbo-cluster 集群模块 ,将多个服务提供方伪装为一个提供方,包罗 :负载均衡 、容错、路由等,集群的地点 列表可以是静态设置 的 ,也可以是由注册中心 下发。

dubbo-registry 注册中心 模块,基于注册中心 下发地点 的集群方式,以及对各种注册中心 的抽象。

dubbo-monitor 监控模块 ,统计服务调用次数,调用时间的,调用链跟踪的服务 。

dubbo-config 设置 模块 ,是Dubbo对外的API,用户通过Config利用 Dubbo,隐蔽 Dubbo全部 细节。

dubbo-container 容器模块,是一个Standalone的容器 ,以简单 的Main加载Spring启动,由于 服务通常不必要 Tomcat/JBoss等Web容器的特性,没须要 用Web容器去加载服务。

以为 本文有资助 ?请分享给更多人

关注「猿助猿」成绩 顶级开辟

技能 交换 QQ群:517877452

你可能想看:

关键词: