dubbo
文章平均质量分 89
斩秋
hello world!
展开
-
3. Dubbo原理解析-Dubbo内核实现之动态编译
我们运行的java代码,一般都是编译之后的字节码。Dubbo为了实现基于spi思想的扩展特性,特别是能够灵活添加额外功能,对于扩展或者说是策略的选择这个叫做控制类也好设配类也好的类要能够动态生成。当然对应已知需求如Protocol, ProxyFactory他们的策略选择的设配类代码dubbo直接提供也无妨,但是dubbo作为一个高扩展性的框架,使得用户能够添加自己的需求,根据配置动态生成自己的设原创 2014-11-28 16:51:23 · 8467 阅读 · 9 评论 -
11. Dubbo原理解析-注册中心之接口介绍
服务注册与发现的中心,服务的提供者将服务发布到注册中心,服务的使用着到注册中引用服务。Dubbo的注册中心提供了多种实现,其实现是基于dubbo的spi的扩展机制的,使用着可以直接实现自己的注册中心。@SPI("dubbo")public interface RegistryFactory { /** * 连接注册中心. * 连接注册中心需处理契约原创 2014-12-02 20:28:27 · 6547 阅读 · 1 评论 -
17. Dubbo原理解析-集群&容错之负载均衡
LoadBalance负载均衡, 负责从多个 Invokers中选出具体的一个Invoker用于本次调用,调用过程中包含了负载均衡的算法,调用失败后需要重新选择LoadBalance接口定义@SPI(RandomLoadBalance.NAME)public interface LoadBalance{@Adaptive("loadbalance") Invoker sel原创 2014-12-03 19:43:42 · 8825 阅读 · 3 评论 -
18. Dubbo原理解析-服务调用
服务消费方发起请求当服务的消费方引用了某远程服务,服务的应用方在spring的配置实例如下:dubbo:referenceid="demoService"interface="com.alibaba.dubbo.demo.DemoServ ice" />demoService实例其实是代理工厂生产的代理对象(大家可以参考代理那部分生成的伪代码),在代码中调用demoServ原创 2014-12-03 20:04:01 · 7678 阅读 · 0 评论 -
19. Dubbo原理解析-通信层之暴露服务
Dubbo的整个远程通信层由exchange,transport, serialize exchange,信息交换层,封装请求响应模式,同步转异步,以Request, Response为中心,扩展接口为Exchanger, ExchangeChannel, HeaderExchangeHandler,ExchangeClient, ExchangeServer transport,原创 2014-12-03 20:12:39 · 10263 阅读 · 2 评论 -
20. Dubbo原理解析-通信层之引用服务
二:消费方引用服务服务调用方在引用服务refer时候创建对服务提供者的链接:构建DubboInvoker时候需要获取ExchangeClient作为构造器参数传入Exchangers.connect(url, requestHanler)à HeaderExchanger.connect(url,exhangeHandler) 构建HeaderExchangeClient,原创 2014-12-03 20:18:04 · 4785 阅读 · 0 评论 -
21. Dubbo原理解析-通信层之请求响应活动图
服务消费方发起远程调用的底层通信 服务提供方接收请求并响应的底层通信原创 2014-12-06 19:22:56 · 4379 阅读 · 0 评论 -
22. Dubbo原理解析-编码解码之Serialization接口定义
序列化:dubbo提供了一系列的序列化反序列化对象工具。Serialization接口定义@SPI("hessian2")public interface Serialization { byte getContentTypeId(); String getContentType(); @Adaptive ObjectOutput原创 2014-12-03 20:36:01 · 6074 阅读 · 0 评论 -
23. Dubbo原理解析-编码解码之Codec2接口定义
Dubbo的远程调用需要对传输的数据进行编码解码,dubbo的Codec2接口定义了编码解码规范,与废弃的接口Codec相比,Codec2没有依赖jdk的输入输出流, 以dubbo的ChannelBuffer为核心便于更好的整合@SPIpublic interface Codec2 { @Adaptive({Constants.CODEC_KEY}) void en原创 2014-12-03 20:39:59 · 4239 阅读 · 1 评论 -
24. Dubbo原理解析-编码解码之编码解码流程
这里把ExchangeCodec和DubboCodec放一起来讲解dubbo传输的底层协议组成以及它的编码解码过程。 传输协议协议格式协议头 :header 是16个字节的定长数据 = 2 //short类型的MAGIC = (short) 0xdabb+ 1 //一个字节的消息标志位,用来表示消息是request还是//response,twoway还是oneway原创 2014-12-03 20:42:16 · 5619 阅读 · 0 评论 -
26. Dubbo原理解析-监控
Dubbo发布代码中,自带了一个简易的监控中心实现。对于一般的小业务这个监控中心应该能够满足需求,对于那些大业务量的大公司一般都会有自己的监控中心,更加丰富的功能如常用的报警短信通知等等。这章讲解分析使得读者能够了解一般的监控中心实现,也使得有自己接入监控中心需求的大概知道如何集成自己的监控中心实现。下面我们就以dubbo自带的监控中心开始讲解。 监控中心1. 监控中心启动,我们先看原创 2014-12-12 17:17:51 · 9205 阅读 · 2 评论 -
25. Dubbo原理解析-telnet
Dubbo提供了telnet命令去查看服务功能 这里主要介绍一下dubbo实现telnet命令的整体实现 当服务器端接收到的消息类型是string的时候回调用到TelnetHandler的telent方法中 TelnetHanlderAdpter类会从接收的字符串解析出命令,根据dubbo的spi扩展机制获取对应的TelnetHandler实现原创 2014-12-03 20:52:22 · 4785 阅读 · 0 评论 -
15. Dubbo原理解析-集群&容错之目录服务Directory
集群目录服务Directory, 代表多个Invoker, 可以看成List,它的值可能是动态变化的比如注册中心推送变更。集群选择调用服务时通过目录服务找到所有服务Directory的接口定义public interfaceDirectory extends Node { //服务类型ClassgetInterface();//列出所有服务的可执行对象List>l原创 2014-12-03 19:38:50 · 5086 阅读 · 0 评论 -
14. Dubbo原理解析-集群&容错之Cluster
Dubbo作为一个分布式的服务治理框架,提供了集群部署,路由,软负载均衡及容错机制 下图描述了dubbo调用过程中的对于集群,负载等的调用关系。 Cluster将Directory中的多个Invoker伪装成一个Invoker, 对上层透明,包含集群的容错机制Cluster接口定义@SPI(FailoverCluster.NAME)public interf原创 2014-12-03 19:32:52 · 12467 阅读 · 2 评论 -
16. Dubbo原理解析-集群&容错之router路由服务
Router服务路由, 根据路由规则从多个Invoker中选出一个子集AbstractDirectory是所有目录服务实现的上层抽象, 它在list列举出所有invokers后,会在通过Router服务进行路由过滤。Router接口定义public interface Router extendsComparable { URL getUrl(); List> route原创 2014-12-03 19:41:46 · 7703 阅读 · 1 评论 -
1. Dubbo原理解析-Dubbo内核实现之SPI简单介绍
Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!大家是否熟悉spi(service providerinterface)机制,即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLoader类实现spi机制的服务查找功能。 JDK实现spi服务查找: ServiceLoader首先定义下示例原创 2014-11-28 15:57:48 · 25816 阅读 · 8 评论 -
4. Dubbo原理解析-代理之接口定义
代理模式这里不再逻辑介绍,dubbo中有使用这种模式,如: dubbo服务的消费端获取的就是对远程服务的一个代理。Dubbo由代理工厂ProxyFactory对象创建代理对象一:ProxyFactory的接口定义@SPI("javassist")public interface ProxyFactory { @Adaptive({Constants.PROXY_KEY})原创 2014-11-29 17:06:04 · 7722 阅读 · 1 评论 -
5.Dubbo原理解析-代理之Javassist字节码技术生成代理
JavassistProxyFactory:利用字节码技术来创建对象public T getProxy(Invoker invoker,Class[] interfaces) { return (T) Proxy.getProxy(interfaces).newInstance(newInvokerInvocationHndler(invoker));}看似跟jdk生原创 2014-11-29 17:10:13 · 14564 阅读 · 3 评论 -
2. Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现
SPI接口定义定义了@SPI注解public @interface SPI { Stringvalue() default ""; //指定默认的扩展点} 只有在接口打了@SPI注解的接口类才会去查找扩展点实现会依次从这几个文件中读取扩展点META-INF/dubbo/internal/ //dubbo内部实现的各种扩展都放在了这个目录了META-原创 2014-11-28 16:10:18 · 25882 阅读 · 6 评论 -
6. Dubbo原理解析-代理之Javassist生成的伪代码
下面我们以伪代码来展示下生成的代理类比如我们要对如下接口生成代理public interface DemoService { String sayHello(String name); String sayHelloAgain(Stringname);}生成的代理对象public class DemoService.proxy10001impleme原创 2014-11-29 17:13:29 · 8536 阅读 · 0 评论 -
7. Dubbo原理解析-与spring融合
Spring中bean的定义可以通过编程,可以定义在properties文件,也可以定义在通过xml文件中,用的最多的是通过xml形式,由于xml格式具有很好的自说明便于编写及维护。对于xml的文档结构、数据定义及格式验证可以通过DTD和Schema, 在spring2.0之前采用的是DTD,在spring2.0之后采用Schema。使用Schema方式使得spring更加便于与第三方进行集成以及原创 2014-12-01 19:03:00 · 8112 阅读 · 0 评论 -
8. Dubbo原理解析-服务发布
服务发布是服务提供方向注册中注册服务过程,以便服务消费者从注册中心查阅并调用服务。服务发布方在spring的配置文件中配置如下:上面是在spring中配置的服务的具体实现,是spring中的一个普通的bean上面的配置spring容器在启动的过程中会解析自定义的schema元素dubbo转换成实际的配置实现ServiceBean ,并把服务暴露出去。Servic原创 2014-12-01 19:23:04 · 12884 阅读 · 3 评论 -
9. Dubbo原理解析-服务引用
服务引用是服务的消费方向注册中心订阅服务提供方提供的服务地址后向服务提供方引用服务的过程。服务的应用方在spring的配置实例如下:dubbo:referenceid="demoService"interface="com.alibaba.dubbo.demo. DemoService"/>如上配置spring在容器启动的时候会解析自定义的schema元素转换成dubbo内部数原创 2014-12-01 19:40:49 · 8205 阅读 · 0 评论 -
10. Dubbo原理解析-Listener & filter
ListenerExporterListener: dubbo在服务暴露(exporter)以及销毁暴露(unexporter)服务的过程中提供了回调窗口,供用户做业务处理。ProtocolListenerWrapper在暴露过程中构建了监听器链public class ProtocolListenerWrapper implements Protocol { public原创 2014-12-01 19:50:50 · 19363 阅读 · 1 评论 -
13. Dubbo原理解析-注册中心之Zookeeper协议注册中心
下面我们来看下开源dubbo推荐的业界成熟的zookeeper做为注册中心, zookeeper是hadoop的一个子项目是分布式系统的可靠协调者,他提供了配置维护,名字服务,分布式同步等服务。对于zookeeper的原理本文档不分析,后面有时间在做专题。zookeeper注册中心Zookeeper对数据存储类似linux的目录结构,下面给出官方文档对dubbo注册数据的存储示例原创 2014-12-02 20:39:16 · 22428 阅读 · 4 评论 -
12. Dubbo原理解析-注册中心之基于dubbo协议的简单注册中心实现
服务注册与发现的中心,服务的提供者将服务发布到注册中心,服务的使用着到注册中引用服务。Dubbo的注册中心提供了多种实现,其实现是基于dubbo的spi的扩展机制的,使用着可以直接实现自己的注册中心。@SPI("dubbo")public interface RegistryFactory { /** * 连接注册中心. * 连接注册中心需处理契约原创 2014-12-02 20:33:40 · 18747 阅读 · 5 评论 -
27. Dubbo原理解析-管理控制台
Dubbo的dubbo-admin模块是后台管理系统,它的MVC框架式基于webx3的,webx是阿里巴巴开源出来基于页面驱动的mvc框架, webx在阿里内部广泛使用。Webx是基于turbine发展而来逐渐成为一个功能强大扩展性强的mvc框架,利用约定大于配置原则,虽说使用简单,但是也有很多潜在规则在里面。Webx作为除了阿里以外一个小众框架学习起来还是很有成本的,再说dubbo中又对we原创 2014-12-12 17:35:26 · 6523 阅读 · 0 评论