![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Dubbo+Zookeeper
文章平均质量分 83
dubbo
星光之子0317
这个作者很懒,什么都没留下…
展开
-
Dubbo-几个概念
URL、Invocation、Invoker、Protocol、ExporterURLInvocationInvokerProtocolExporterURL定义了调用的url的协议、用户名、密码、地址、端口、路径、参数等public /*final**/class URL implements Serializable { protected String protocol; protected String username; protected String passwo原创 2021-06-02 11:20:36 · 81 阅读 · 0 评论 -
Dubbo核心组件、调用过程
Dubbo学习什么是RPCRemote Procedure Call,远程过程调用Dubbo特性总结面向接口代理的 高性能RPC调用提供 高性能的 基于代理的 远程调用能力。服务 以 接口 为粒度,为开发者 屏蔽 远程调用底层细节服务主动注册 与 发现支持多种注册中心服务,服务实例 上下线 实时感知运行期 流量调度内置条件、脚本 等路由策略,通过配置不同的路由策略,轻松实现灰度发布、同机房优先等功能智能负载均衡内置多种负载均衡策略,智能感知 下游节点健康状况,显著减少调用延迟,提高系统原创 2021-03-03 22:24:06 · 498 阅读 · 2 评论 -
Dubbo服务发布端启动流程
远程服务发布服务发布端启动流程配置承载初始化远程服务发布(暴露)1.export2.shouldDelay3.doExport4.doExportUrls(重要)5.loadRegistries(待完善)6.doExportUrlsFor1Protocol(重要)7.RegistryProtocol#export8.RegistryProtocol#doLocalExport9.QosProtocolWrapper#export10.ProtocolListenerWrapper#export11.Prot原创 2021-09-04 18:01:49 · 194 阅读 · 1 评论 -
Dubbo-Directory(服务目录)、StaticDirectory、RegistryDirectory
服务目录-Directory概述Directory扩展接口AbstractDirectory抽象类AbstractDirectory实现Node接口方法AbstractDirectory实现Directory接口方法AbstractDirectory#list(重要)StaticDirectory-静态服务目录StaticDirectory#isAvailableStaticDirectory#getInterfaceStaticDirectory#getAllInvokersStaticDirectory原创 2021-09-11 23:07:28 · 488 阅读 · 0 评论 -
Dubbo的适配器原理、动态编译原理
适配器原理、动态编译原理适配器原理动态编译原理适配器原理Dubbo 为 每个功能点 提供了 一个SPI扩展接口,Dubbo框架 在使用 扩展点功能的时候 是对 接口进行依赖的,而一个扩展接口 对应了 一系列的扩展实现类那么如何选择 使用哪一个 扩展接口的实现类呢其实这是 使用 适配器模式 来做的首先看看什么是适配器模式,比如Dubbo提供的扩展接口Protocol,其定义如下@SPI("dubbo")public interface Protocol { // 自适应 @Adaptive原创 2021-09-03 23:10:15 · 250 阅读 · 0 评论 -
Dubbo集群容错与负载均衡策略(一)-集群容错策略
Dubbo集群容错与负载均衡策略Cluster层概述Cluster(集群容错)的具体实现Cluster扩展接口Cluster扩展接口 与 ClusterInvoker接口的关系AbstractCluster抽象类(待完善)AbstractClusterInvoker抽象类AbstractClusterInvoker实现Node接口方法AbstractClusterInvoker实现Invoker接口方法AbstractClusterInvoker#invoker(重要!!!)AbstractClusterI原创 2021-09-11 20:17:26 · 817 阅读 · 0 评论 -
Dubbo集群容错与负载均衡策略(二)-负载均衡策略
负载均衡策略原创 2021-09-12 16:45:50 · 208 阅读 · 0 评论 -
Dubbo注册中心(一)-概述
Dubbo注册中心系列文章目录Dubbo注册中心(一)-概述文章目录Dubbo注册中心系列文章目录注册中心主要作用子模块工作流程注册中心主要作用动态加入,一个服务提供者 可以通过注册中心 动态地 把自己的服务暴露给 其他消费者,无须 消费者逐个更新配置文件动态发现,一个消费者 可以动态地感知 新的配置、路由规则 和 新的服务提供者,无须重启动态调整,注册中心 支持 参数的动态调整,新参数 自动 更新到所有服务相关节点统一配置,避免了本地配置 导致 每个服务的配置不一致问题子模块原创 2021-04-12 15:11:23 · 231 阅读 · 0 评论 -
Dubbo注册中心(二)-ZooKeeper
Dubbo注册中心系列文章目录Dubbo注册中心(一)-概述Dubbo注册中心(二)-ZooKeeper文章目录Dubbo注册中心系列文章目录ZooKeeper节点类型Dubbo使用ZooKeeper目录树形结构总结Zookeeper实现订阅和发布总体流程发布1.zkClient.create2.创建临时节点3.创建持久节点4.删除路径5.toUrlPath取消发布订阅订阅全量服务1.根路径初始化逻辑2.FailbackRegistry.subscribe3.AbstractRegistry.su原创 2021-04-12 16:39:54 · 345 阅读 · 0 评论 -
Dubbo注册中心(七)-AbstractRegistry及相关内容
Dubbo注册中心系列文章目录Dubbo注册中心(一)-概述Dubbo注册中心(二)-ZooKeeperDubbo注册中心(四)-缓存机制Dubbo注册中心(五)-FailbackRegistry+重试机制Dubbo注册中心(六)-设计模式原创 2021-04-14 18:35:46 · 237 阅读 · 0 评论 -
Dubbo注册中心(四)-缓存机制
Dubbo注册中心系列文章目录Dubbo注册中心(一)-概述Dubbo注册中心(二)-ZooKeeperDubbo注册中心(四)-缓存机制文章目录Dubbo注册中心系列文章目录缓存机制缓存加载缓存刷新缓存机制消费者 或者 服务治理中心 获取注册信息后 会做本地缓存内存中会有一份,保存在Properties对象中磁盘上 也会 持久化一份文件,通过file对象引用// 本地磁盘缓存// 特定的key:value.registries 记录注册中心列表// 其余的key记录的是服务提供原创 2021-04-12 16:46:24 · 872 阅读 · 0 评论 -
Dubbo注册中心(五)-FailbackRegistry、重试机制
Dubbo注册中心系列文章目录Dubbo注册中心(一)-概述Dubbo注册中心(二)-ZooKeeperDubbo注册中心(四)-缓存机制Dubbo注册中心(五)-重试机制文章目录Dubbo注册中心系列文章目录重试机制重试集合重试机制FailbackRegistry 增加了 失败重试机制 的抽象能力HashedWheelTimer重试集合failedRegistered 发起注册失败的URL集合failedUnregistered 取消注册失败的URL集合failedSubs原创 2021-04-14 00:03:15 · 652 阅读 · 1 评论 -
Dubbo注册中心(六)-设计模式
Dubbo注册中心系列文章目录Dubbo注册中心(一)-概述Dubbo注册中心(二)-ZooKeeperDubbo注册中心(四)-缓存机制Dubbo注册中心(六)-设计模式文章目录Dubbo注册中心系列文章目录注册中心使用到的设计模式模板模式工厂模式注册中心使用到的设计模式模板模式整个注册中心的逻辑部分 使用了 模板模式AbstractRegistry 实现了 Registry接口中的方法,还实现了 磁盘文件 持久化 注册信息 这一通用方法。但注册、订阅、查询、通知之等只是简单的把原创 2021-04-12 16:53:23 · 184 阅读 · 0 评论 -
Dubbo-SPI(一)-加载机制概述
Dubbo-SPI系列文章目录Dubbo-SPI(一)-加载机制概述Dubbo-SPI(五)-@Activate注解文章目录Dubbo-SPI系列文章目录Java SPI(Service Provider Interface)Dubbo SPI的改进扩展点配置规范扩展点的分类与缓存扩展点的特性自动包装自动加载自适应自动激活Java SPI(Service Provider Interface)Java SPI 使用了 策略模式,一个接口 多种实现只需要声明接口具体的实现并不在程序中 直接原创 2021-04-11 10:21:57 · 253 阅读 · 0 评论 -
Dubbo-SPI(二)-@SPI注解
Dubbo-SPI系列文章目录Dubbo-SPI(一)-加载机制概述Dubbo-SPI(二)-@SPI注解Dubbo-SPI(五)-@Activate注解文章目录Dubbo-SPI系列文章目录@SPI@Extension@SPI主要作用是 标记使用这个注解的接口 是 一个 Dubbo SPI接口,即 是一个 扩展点,可以有多个 不同的 内置 或 用户定义的实现通过value属性,可以传入不同的参数 来设置 接口的 默认实现类@Documented// 注解不仅被保存到class文件中原创 2021-04-11 10:35:09 · 385 阅读 · 0 评论 -
Dubbo-SPI(三)-getExtension实现原理
Dubbo-SPI系列文章目录Dubbo-SPI(一)-加载机制概述Dubbo-SPI(二)-@SPI注解Dubbo-SPI(三)-getExtension实现原理Dubbo-SPI(五)-@Activate注解文章目录Dubbo-SPI系列文章目录ExtensionLoader工作原理工作流程getExtension实现原理1.getDefaultExtension-获取默认扩展2.getExtensionClasses-获取扩展类3.loadExtensionClasses-加载扩展类4.原创 2021-04-11 19:32:59 · 359 阅读 · 0 评论 -
Dubbo-SPI(四)-@Adaptive注解
Dubbo-SPI系列文章目录Dubbo-SPI(一)-加载机制概述Dubbo-SPI(二)-@SPI注解Dubbo-SPI(三)-getExtension实现原理Dubbo-SPI(四)-@Adaptive注解Dubbo-SPI(五)-@Activate注解文章目录Dubbo-SPI系列文章目录@AdaptivegetAdaptiveExtension实现原理1.createAdaptiveExtension-创建自适应扩展2.getAdaptiveExtensionClass-获取自适应原创 2021-04-12 15:01:26 · 280 阅读 · 0 评论 -
Dubbo-SPI(五)-@Activate注解
@Activate注解@ActivategetActivateExtension实现原理三级目录@Activate/** * Activate. This annotation is useful for automatically activate certain extensions with the given criteria, * 激活,这个注解 用于 自动激活 特定的扩展 当满足给定条件的时候,比如在Filter应用场景中 * for examples: <code>@Ac原创 2021-04-10 12:51:08 · 947 阅读 · 2 评论 -
Dubbo-SPI(六)-各层扩展点
Dubbo-SPI系列文章目录Dubbo-SPI(一)-加载机制概述Dubbo-SPI(二)-@SPI注解Dubbo-SPI(三)-getExtension实现原理Dubbo-SPI(四)-@Adaptive注解Dubbo-SPI(五)-@Activate注解文章目录Dubbo-SPI系列文章目录RPC层扩展点Proxy(代理)层扩展点Registry(注册)层扩展点Cluster(集群)层扩展点Cluster扩展点RouterFactory(路由)扩展点LoadBalance扩展点Conf原创 2021-04-20 22:09:36 · 315 阅读 · 0 评论 -
Dubbo协议
Dubbo协议header部分body部分返回消息体header部分长度固定为16个字节0~7:魔法数高位8~15:魔法数低位16:是否为双向的RPC调用,0为Response,1为Request17:调用方式,仅在16=1的情况下有效,0-单向调用,1-双向调用18:0-当前数据包 为 请求包 或 响应包;1-当前数据包 是 心跳包19~23:序列化器编号24~31:状态code32~95:RPC请求唯一id,占用8个字节96~127:消息体长度,占用4个字节body部分长原创 2021-04-21 20:56:30 · 160 阅读 · 0 评论 -
Dubbo编解码(一)-原理
Dubbo编解码系列文章目录Dubbo编解码(一)-原理Dubbo编解码(二)-Codec2和AbstractCodec文章目录Dubbo编解码系列文章目录设计关系设计关系AbstractCodec 实现了Codec2接口,主要提供基础能力,比如:检验报文长度(checkPayload)、查找具体编码器(getSerialization)TransportCodec 继承了 AbstractCodec,主要抽象 编码实现,自动调用 序列化、反序列化实现 和 cleanup...原创 2021-04-21 21:30:47 · 153 阅读 · 0 评论 -
Dubbo编解码(二)-Codec2和AbstractCodec
Dubbo编解码系列文章目录Dubbo编解码(一)-原理Dubbo编解码(二)-Codec2和AbstractCodec文章目录Dubbo编解码系列文章目录Codec2AbstractEndpoint#getChannelCodecAbstractCodec校验报文长度获取具体编解码器判断是客户端还是服务端Codec2在Dubbo-SPI(六)-各层扩展点中已经有相关介绍,根据URL中的codec参数决定使用哪一种编解码实现方式,扩展点实现如下:传输层编解码实现transport=org.原创 2021-04-21 21:31:13 · 443 阅读 · 0 评论 -
Dubbo编解码(三)-TransportCodec
Dubbo编解码系列文章目录Dubbo编解码(一)-原理Dubbo编解码(二)-Codec2和AbstractCodecDubbo编解码(三)-TransportCodec文章目录Dubbo编解码系列文章目录TransportCodec-传输层编解码encodedecodeencodeData和decodeDataTransportCodec-传输层编解码继承了 抽象类AbstractCodec实现了 扩展点接口Codec2的encode和decode方法encode@Override原创 2021-04-21 21:54:07 · 172 阅读 · 0 评论 -
Dubbo编解码(五)-Dubbo协议编码器
Dubbo编解码系列文章目录Dubbo编解码(一)-原理Dubbo编解码(二)-Codec2和AbstractCodecDubbo编解码(三)-TransportCodec文章目录Dubbo编解码系列文章目录ExchangeCodec#encode覆写Codec2#encode实现encodeRequest-编码请求对象encodeRequestData-编码请求对象体encodeResponse-编码响应对象encodeResponseData-编码响应对象体ExchangeCodec#en原创 2021-04-22 10:51:31 · 281 阅读 · 0 评论 -
Dubbo编解码(六)-Dubbo协议解码器
Dubbo编解码系列文章目录Dubbo编解码(一)-原理Dubbo编解码(二)-Codec2和AbstractCodecDubbo编解码(三)-TransportCodecDubbo编解码(五)-Dubbo协议编码器文章目录Dubbo编解码系列文章目录原创 2021-04-23 14:46:19 · 462 阅读 · 0 评论 -
Dubbo-Endpoint
Endpoint接口Dubbo 抽象出一个 端 的概念,也就是Endpoint接口端 就是 一个点,点对点之间是可以双向传输在端的基础上 再衍生出 通道-Channel、客户端-Client以及服务端-Server的概念在传输层-Transport,Client和Server只是在语义上区别,并不区分 请求 和 应答 职责在交换层-Exchange,Client和Server也是一个点,但是已经是 有方向的点,区分了明确的请求和应答职责。两者都具备 发送的能力,只是Client和Server所关原创 2021-05-08 10:17:23 · 432 阅读 · 0 评论 -
Dubbo-Client
客户端接口-Client基本介绍关系类图AbstractClient属性构造方法initExecutor-初始化线程池connect-连接通道覆写Endpoint#closedisconnect-断开通道实现Clinet#reconnect实现Channel接口其他方法实现Endpoint接口其他方法NettyClient(待完善)基本介绍Client接口 是 Dubbo 网络传输层-Transport 客户端抽象,主要抽象了reconnect重连方法,同时继承Endpoint ,Channel, R原创 2021-05-09 09:57:07 · 669 阅读 · 0 评论 -
Dubbo-Channel
通道接口-Channel原创 2021-05-12 19:12:01 · 320 阅读 · 0 评论 -
Dubbo-RemotingServer
服务端接口-RemotingServer基本介绍关系类图AbstractServer属性构造方法ExchangeServer(待完善)基本介绍/** * is bound. * 是否绑定 本地端口,提供服务,即是否启动成功,可连接,可接受消息 * * @return bound */boolean isBound();/** * get channels. * 获取 当前server 对应的 多个通道 * * @return channels */Coll原创 2021-05-27 10:08:32 · 168 阅读 · 0 评论 -
Dubbo-Transport
网络传输层-Transport基本介绍关系类图TransporterTransportersbind方法connect方法NettyTransporter基本介绍位于Dubbo框架的倒数第二层,最底层是序列化抽象 mina 和 netty 为统一接口以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec关系类图TransporterTransporter抽象了 客户端连接connect 与 服务端的端口绑定bind方法原创 2021-05-27 21:17:28 · 146 阅读 · 0 评论 -
Dubbo-Exchanger
信息交换层-Exchange基本介绍Exchanger关系类图HeaderExchangerExchangersbindconnectExchangeChannel-交换层通道接口关系类图HeaderExchangeChannel构造方法实现Channel接口实现Endpoint接口sendclose相关方法实现ExchangeChannel接口其他方法getOrAddChannelremoveChannelExchangeClientHeaderExchangeClientExchangeServer基原创 2021-05-31 22:17:33 · 225 阅读 · 0 评论