![](https://img-blog.csdnimg.cn/20201114155026810.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Apache Dubbo
Apache Dubbo
DAIHAO丶
一花一世界,一树一菩提。
展开
-
Apache Dubbo 源码搭建与解读(十一)—— Netty网络编程(上)
NettyNetty是一个开源的异步事件驱动的网络应用程序框架(基于Java NIO技术封装的一套框架),用于快速开发可维护的高性能协议服务器和客户端。JDK NIO 与 NettyJDK 本身提供了一套 NIO 的 API,但是这一套原生的 API 存在一系列的问题。Java NIO 的 API 非常复杂。 要写出成熟可用的 Java NIO 代码,需要熟练掌握 JDK 中的 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等组件,还原创 2020-10-22 14:01:36 · 269 阅读 · 1 评论 -
Apache Dubbo 源码搭建与解读(十)——代理模式常见实现
动态代理机制在 Java 中有着广泛的应用,例如,Spring AOP、MyBatis、Hibernate 等常用的开源框架,都使用到了动态代理机制。代理模式代理模式是 23 种面向对象的设计模式中的一种,它的类图如下所示:在程序中不会直接调用RealSubject对象的方法,而是使用Proxy对象实现相关功能。Proxy.operation() 方法的实现会调用其中封装的 RealSubject 对象的 operation() 方法,执行真正的业务逻辑。代理的作用不仅仅是正常地完成业务逻辑,还会原创 2020-10-19 14:42:29 · 336 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(九)—— ZooKeeper客户端
ZooKeeper客户端ZooKeeper 官方提供的客户端支持了一些基本操作,例如,创建会话、创建节点、读取节点、更新数据、删除节点和检查节点是否存在等,但在实际开发中只有这些简单功能是根本不够的。而且,ZooKeeper 本身的一些 API 也存在不足,例如:ZooKeeper 的 Watcher 是一次性的,每次触发之后都需要重新进行注册。会话超时之后,没有实现自动重连的机制。ZooKeeper 提供了非常详细的异常,异常处理显得非常烦琐,对开发新手来说,非常不友好。只提供了原创 2020-10-19 11:46:20 · 114 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(八)—— Dubbo 注册中心之ZooKeeper
Dubbo Provider 在启动时会将自身的服务信息整理成 URL 注册到注册中心,Dubbo Consumer 在启动时会向注册中心订阅感兴趣的 Provider 信息,之后 Provider 和 Consumer 才能建立连接,进行后续的交互。可见,一个稳定、高效的注册中心对基于 Dubbo 的微服务来说是至关重要的。Dubbo 注册中心Dubbo 目前支持 Consul、etcd、Nacos、ZooKeeper、Redis 等多种开源组件作为注册中心,并且在 Dubbo 源码也有相应的接入模块原创 2020-10-15 15:57:38 · 224 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(七)——定时任务时间轮
在很多开源框架中,都需要定时任务的管理功能,例如 ZooKeeper、Netty、Quartz、Kafka 以及 Linux 操作系统。JDK 提供的 java.util.Timer 和 DelayedQueue 等工具类,可以帮助我们实现简单的定时任务管理,其底层实现使用的是堆这种数据结构,存取操作的复杂度都是 O(nlog(n)),无法支持大量的定时任务。在定时任务量比较大、性能要求比较高的场景中,为了将定时任务的存取操作以及取消操作的时间复杂度降为 O(1),一般会使用时间轮的方式。时间轮是一种高原创 2020-10-10 08:57:24 · 686 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(六)—— Dubbo SPI
文章目录Dubbo SPIDubbo SPI 核心实现一、 @SPI 注解二、@Adaptive 注解与适配器三、自动包装特性四、自动装配特性五、@Activate注解与自动激活特性Dubbo 并没有直接使用 JDK SPI 机制,而是借鉴其思想,实现了自身的一套 SPI 机制。Dubbo SPI两个概念:扩展点: 通过 SPI 机制查找并加载实现的接口(又称“扩展接口”)。前文示例中介绍的 Log 接口、com.mysql.cj.jdbc.Driver 接口,都是扩展点。扩展点实现: 实现了扩展原创 2020-10-09 16:12:19 · 166 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(五)—— JDK SPI
文章目录微内核架构=插件化架构JDK SPI1. JDK SPI 机制微内核架构=插件化架构Dubbo 为了更好地达到 OCP 原则(即“对扩展开放,对修改封闭”的原则),采用了“微内核+插件”的架构。那什么是微内核架构呢?微内核架构也被称为插件化架构(Plug-in Architecture),这是一种面向功能进行拆分的可扩展性架构。内核功能是比较稳定的,只负责管理插件的生命周期,不会因为系统功能的扩展而不断进行修改。功能上的扩展全部封装到插件之中,插件模块是独立存在的模块,包含特定的功能,能拓展内核原创 2020-09-24 11:23:57 · 128 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(四)—— Dubbo 的配置总线——URL
Apache Dubbo 源码搭建与解读(一)Apache Dubbo 源码搭建与解读(二)Apache Dubbo 源码搭建与解读(三)文章目录URL——Dubbo 的配置总线Dubbo 中的 URL使用 URL 的好处URL 在服务暴露中的应用URL 在服务订阅中的应用URL——Dubbo 的配置总线URL(Uniform Resource Locator,统一资源定位符),它是互联网的统一资源定位标志,也就是指网络地址。URL 本质上就是一个特殊格式的字符串。一个标准的 URL 格式可以包原创 2020-09-02 15:04:43 · 412 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(三)—— 基于注解和API配置
Apache Dubbo 源码搭建与解读(一)Apache Dubbo 源码搭建与解读(二)文章目录Demo 2:基于注解配置dubbo-demo-annotation 模块是基于 Spring 注解配置的示例,无非就是将 XML 的那些配置信息转移到了注解上先来看 dubbo-demo-annotation-provider 这个示例模块:public class Application { public static void main(String[] args) throw原创 2020-08-25 17:30:33 · 279 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(二)—— 基于XML配置
Apache Dubbo 源码搭建与解读(一)创建Dubbo源码环境1、直接从官方仓库 https://github.com/apache/dubbo Fork 到自己的仓库,直接执行下面的命令去下载代码:从自己仓库下载git clone git@github.com:xxxxxxxx/dubbo.git 2、然后切换分支,因为目前最新的是 Dubbo 2.7.8 版本,所以这里我们就用这个新版本:git checkout -b dubbo-2.7.8 dubbo-2.7.83、接下来,原创 2020-08-19 10:04:51 · 308 阅读 · 0 评论 -
Apache Dubbo 源码搭建与解读(一)—— Dubbo架构
文章目录Apache DubboApache Dubbo 架构Dubbo 架构特点连通性健壮性伸缩性升级性Dubbo的使用Apache DubboApache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用;可靠、智能的容错和负载均衡;服务自动注册和发现能力。简单地说, Dubbo 是一个分布式服务框架,致力于提供高性能、透明化的 RPC 远程服务调用方案以及服务治理方案,以帮助我们解决微服务架构落地时的问题。A原创 2020-08-10 17:35:12 · 347 阅读 · 0 评论