首页 技术 正文
技术 2022年11月23日
0 收藏 948 点赞 3,775 浏览 3527 个字

 选择dubbo启动原理解析服务暴露服务引用服务提供服务流程结合Netty对比HSF https://www.cnblogs.com/lichengwei/p/5529492.html远程调用,服务注册与发现,容错和负载均衡选择dubboRPC笔记搬迁 1.扩展性,dubbo各个分层都是很多扩展,比如注册中心有redis、zookeeper选项,通信模块有netty、mina,序列化有hession、hession2、java序列化等,本文不能面面俱到,重点阐述主线流程,注册中心选择zookeeper(client选择curator),通信选择netty,协议选择dubbo,序列化选择hession2,容器选择Spring。 2.负载均衡 分布式RPC框架dubbo远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型、序列化、”请求-响应”模式的信息交换方案集群容错:提供基于借口方法的透明远程过程调用,包括多协议支持、软负载均衡、失败容错、地址路由、动态配置等集群支持自动发现:基于注册中心目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器透明化,就像本地调用远程方法一样,没有任何APi侵入;负载均衡容灾错;基于注册中心自动发现。 特点概括1.它主要是使用高效的网络框架和序列化框架,让分布式服务之间调用效率更高。2.采用注册中心管理众多的服务接口地址,当你想调用服务的时候只需要跟注册中心询问即可,不用像使用WebService一样每个服务都得记录好接口调用方式。3.监控中心实现对服务方和调用方之间运行状态的监控,还能控制服务的优先级、权限、权重、上下线等,让整个庞大的分布式服务系统的维护和治理比较方便。4.高可用有个服务宕机了?注册中心就会从服务列表去掉该节点。还是调用到了?客户端会向注册中心请求另一台可用的服务节点重新调用。注册中心宕机?注册中心也能实现高可用(ZooKeeper)。5.负载均衡采用软负载均衡算法实现对多个相同服务的节点的请求负载均衡。  RPC之 Dubbo 实现主要为三点,动态代理、反射、socket网络编程其核心部分包含:

  • 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
  • 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
  • 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

 连接方式:长连接传输协议:TCP传输方式:NIO异步传输序列化:Hessian二进制序列化    启动原理上图中的第一步start,就是将服务装载容器中,然后准备注册服务。和Spring中启动过程类似,spring启动时,将bean装载进容器中的时候,首先要解析bean。所以dubbo也是先读配置文件解析服务。解析服务1)基于dubbo.jar内的Meta-inf/spring.handlers配置,spring在遇到dubbo名称空间时,会回调DubboNamespaceHandler类。2)所有的dubbo标签,都统一用DubboBeanDefinitionParser进行解析,基于一对一属性映射,将XML标签解析为Bean对象。源码截图:在ServiceConfig.export 或者ReferenceConfig.get 初始化时,将Bean对象转会为url格式,将所以Bean属性转成url的参数。然后将URL传给Protocol扩展点,基于扩展点的Adaptive机制,根据URL的协议头,进行不同协议的服务暴露和引用。 暴露服务a、 只暴露服务端口在没有使用注册中心的情况,这种情况一般适用在开发环境下,服务的调用这和提供在同一个IP上,只需要打开服务的端口即可。即,当配置 orServiceConfig解析出的URL的格式为:Dubbo://service-host/com.xxx.TxxService?version=1.0.0基于扩展点的Adaptiver机制,通过URL的“dubbo://”协议头识别,直接调用DubboProtocol的export()方法,打开服务端口。 b、向注册中心暴露服务:和上一种的区别:需要将服务的IP和端口一同暴露给注册中心。ServiceConfig解析出的url格式为:registry://registry-host/com.alibaba.dubbo.registry.RegistryService?export=URL.encode(“dubbo://service-host/com.xxx.TxxService?version=1.0.0”) 基于扩展点的Adaptive机制,通过URL的“registry://”协议头识别,调用RegistryProtocol的export方法,将export参数中的提供者URL先注册到注册中心,再重新传给Protocol扩展点进行暴露:Dubbo://service-host/com.xxx.TxxService?version=1.0.0 引用服务a、直接引用服务:在没有注册中心的,直连提供者情况下,ReferenceConfig解析出的URL格式为:Dubbo://service-host/com.xxx.TxxService?version=1.0.0基于扩展点的Adaptive机制,通过url的“dubbo://”协议头识别,直接调用DubboProtocol的refer方法,返回提供者引用。 b、从注册中心发现引用服务:此时,ReferenceConfig解析出的URL的格式为:registry://registry-host/com.alibaba.dubbo.registry.RegistryService?refer=URL.encode(“consumer://consumer-host/com.foo.FooService?version=1.0.0”) 基于扩展点的Apaptive机制,通过URL的“registry://”协议头识别,就会调用RegistryProtocol的refer方法,基于refer参数总的条件,查询提供者URL,如:Dubbo://service-host/com.xxx.TxxService?version=1.0.0 基于扩展点的Adaptive机制,通过提供者URL的“dubbo://”协议头识别,就会调用DubboProtocol的refer()方法,得到提供者引用。然后RegistryProtocol将多个提供者引用,通过Cluster扩展点,伪装成单个提供这引用返回。  提供服务流程RPC笔记搬迁  结合NettyDubbo 底层使用的是 Netty 作为网络通信   Dubbo服务之间的调用是阻塞的吗?Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。异步调用流程图如下。RPC笔记搬迁 Dubbo推荐使用什么序列化框架,你知道的还有哪些?推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。 Dubbo必须依赖的包有哪些Dubbo 必须依赖 JDK,其他为可选。 Dubbo的管理控制台能做什么?管理控制台主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。 说说 Dubbo 服务暴露的过程。Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo 会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export 方法,而该方法真正实现了服务的(异步或者非异步)发布。 对比Dubbo 和 Spring Cloud 区别1)通信方式不同Dubbo 使用的是 RPC 通信,而Spring Cloud使用的是 HTTP RESTFul 方式。2)组成部分不同RPC笔记搬迁 HSFHigh Speed FrameworkHSF以高性能网络通信框架为基础,提供了诸如服务发布与注册,服务调用,服务路由,服务鉴权,服务限流,服务降级和服务调用链路跟踪等一系列久经考验的功能特性

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,987
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,503
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,347
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,130
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,765
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,842