E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Dubbo源码分析
Dubbo源码分析
(八):Javassist字节码技术生成代理
Java动态编程的作用: 通过配置生成代码,减少重复编码和维护成本 我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使用反射,因为反射的性能开销较大。其实还有一种和反射一样强大的特性,但是开销却很低,它就是Javassit。 Javassit其实就是一个二方包,提供了运行时操作Java字节码的方法。大家都知道,Java
ZuoAnYinXiang
·
2016-05-08 10:00
(未完成)
Dubbo源码分析
(七):Dubbo内核实现之基于SPI思想Dubbo内核实现
SPI接口定义定义了@SPI注解packagecom.alibaba.dubbo.common.extension;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.R
杰布斯
·
2016-05-07 15:32
Dubbo源码分析
Dubbo源码学习与剖析
(未完成)
Dubbo源码分析
(七):Dubbo内核实现之基于SPI思想Dubbo内核实现
SPI接口定义定义了@SPI注解packagecom.alibaba.dubbo.common.extension; importjava.lang.annotation.Documented; importjava.lang.annotation.ElementType; importjava.lang.annotation.Retention; importjava.lang.annotat
ZuoAnYinXiang
·
2016-05-07 15:00
Dubbo源码分析
(六):Dubbo内核实现之动态编译
我们运行的java代码,一般都是编译之后的字节码。Dubbo为了实现基于spi思想的扩展特性,特别是能够灵活添加额外功能,对于扩展或者说是策略的选择这个叫做控制类也好设配类也好的类要能够动态生成。当然对应已知需求如Protocol,ProxyFactory他们的策略选择的设配类代码dubbo直接提供也无妨,但是dubbo作为一个高扩展性的框架,使得用户能够添加自己的需求,根据配置动态生
ZuoAnYinXiang
·
2016-05-07 15:00
dubbo源码分析
-consumer端5-Filter
前面一篇
dubbo源码分析
中,我们对ClusterInvoker和LoadBalance进行了分析,可以知道ClusterInvoker在一批Invoker中选择了一个Invoker来进行调用
youaremoon
·
2016-05-07 12:00
filter
DUBBO
源码分析
Consumer
Dubbo源码分析
(五):Dubbo内核实现之SPI简单介绍
Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!大家是否熟悉spi(service providerinterface)机制,即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLoader类实现spi机制的服务查找功能。 JDK实现spi服务查找:ServiceLoader 首先定义下示
ZuoAnYinXiang
·
2016-05-06 21:00
Dubbo源码分析
(四):dubbo中bean的加载
Dubbo首先使用com.alibaba.dubbo.config.spring.schema.NamespaceHandler注册解析器,当spring解析xml配置文件时就会调用这些解析器生成对应的BeanDefinition交给spring管理:publicclassDubboNamespaceHandlerextendsNamespaceHandlerSupport{ static
ZuoAnYinXiang
·
2016-05-06 21:00
Dubbo源码分析
(三):自定义Schema--基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)
在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的时候,会显得非常笨拙。一般的做法会用原生态的方式去解析定义好的xml文件,然后转化为配置对象,这种方式当然可以解决所有问题,但实现起来比较繁琐,特别是是在配置非常复杂的时候,解析工作是一个不得不考虑的负担。Spring提供了可扩展Schema的支持,这是一个不错
ZuoAnYinXiang
·
2016-05-06 14:00
Dubbo源码分析
(二):Dubbo中采用的设计模式
1、工厂模式 ServiceConfig中有个字段,代码是这样的: 查看文本打印 privatestaticfinalProtocolprotocol=ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); Dubbo里有很多这种代码。这也是一种工厂模式,只是实现类的获取采用了jdks
ZuoAnYinXiang
·
2016-05-06 11:00
Dubbo源码分析
(二):Dubbo中采用的设计模式
1、工厂模式 ServiceConfig中有个字段,代码是这样的: 查看文本打印 privatestaticfinalProtocolprotocol=ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); Dubbo里有很多这种代码。这也是一种工厂模式,只是实现类的获取采用了jdks
ZuoAnYinXiang
·
2016-05-06 11:00
Dubbo源码分析
(一):Dubbo源码的结构概述
1.dubbo源码的结构Dubbo源文件主要包含以上这么多包,其中:dubbo-common公共逻辑模块,包括Util类和通用模型。dubbo-remoting远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。dubbo-rpc远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。dubbo-cluster集群模块,将多个服务提供方伪装为一
杰布斯
·
2016-05-06 11:38
Dubbo源码分析
Dubbo源码学习与剖析
Dubbo源码分析
(一):Dubbo源码的结构概述
1.dubbo源码的结构Dubbo源文件主要包含以上这么多包,其中: dubbo-common公共逻辑模块,包括Util类和通用模型。 dubbo-remoting远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。 dubbo-rpc远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。 dubbo-cluster集
ZuoAnYinXiang
·
2016-05-06 11:00
dubbo源码分析
-consumer端4-ClusterInvoker与LoadBalance
dubbo中提供了多种集群调用策略: 1、FailbackClusterInvoker: 失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作; 2、FailfastClusterInvoker:快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作; 3、FailoverClusterInvoker:失败转移,当出现失败,重试
youaremoon
·
2016-04-23 16:00
cluster
源码分析
DUBBO
Consumer
dubbo源码分析
(1)
在Spring容器启动的时候,会加载各种文件,其中会读取provider.xml配置文件String[] configFiles = { "classpath:applicationContext-dubbo.xml", "classpath:provider.xml", "classpath*:mq-provider.xml", "classpath*:modules/spring*.xml"
李白吃白菜
·
2016-04-15 10:00
dubbo源码分析
-consumer端4-MockClusterInvoker
在前面几篇文章中,我们分析了consumer端的代理生成过程。创建完成后,应用就可以进行调用了,调用的代码如下://代理类中的sayHello方法 publicStringsayHello(StringparamString){ //将调用时的参数传入arrayOfObject中 Object[]arrayOfObject=newObject[1]; arrayOfObject[0]=p
youaremoon
·
2016-03-11 08:00
源码分析
DUBBO
mock
dubbo源码分析
-consumer端3-Invoker创建流程
从前面一篇创建注册中心的流程当中,我们知道在从注册中心获取到provider的连接信息后,会通过连接创建Invoker。代码见com.alibaba.dubbo.registry.integration.RegistryDirectory的toInvokers方法://protocol实现为com.alibaba.dubbo.rpc.Protocol$Adpative, //之前已经
youaremoon
·
2016-03-08 14:00
源码
DUBBO
Consumer
dubbo源码分析
-consumer端3-Invoker创建流程
从前面一篇创建注册中心的流程当中,我们知道在从注册中心获取到provider的连接信息后,会通过连接创建Invoker。代码见com.alibaba.dubbo.registry.integration.RegistryDirectory的toInvokers方法://protocol实现为com.alibaba.dubbo.rpc.Protocol$Adpative, // 之前已经讲
youaremoon
·
2016-03-03 09:20
源码
DUBBO
invoker
dubbo源码分析
-consumer端1-consumer代理生成
dubbo(官网地址)是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架。目前,阿里巴巴内部已经不再使用dubbo,但对很对未到一定量级的公司来说,dubbo依然是一个很好的选择。 之前在使用duubo的时候,对dubbo有了一些初步的了解,但没有深入,有些问题还是不清楚。所以准备静下心来看下dubbo源码。这
youaremoon
·
2016-02-24 14:00
代理
DUBBO
源码分析
Dubbo源码分析
首先是 Dubbo启动方法,启动方式如SpringContainer为列子第一步 加载Spring配置文件 代码如下: //默认加载路径 public static final String DEFAULT_SPRING_CONFIG = "classpath*:META-INF/spring/*.xml"; //如果没有传入配置文件 则使用默认的spring配置路径 pu
liangbo
·
2016-01-06 20:00
Dubbo源码分析
(三):Dubbo之服务端(Service)
如上图所示的Dubbo的暴露服务的过程,不难看出它也和消费者端很像,也需要一个像reference的对象来维护service关联的所有对象及其属性,这里的reference就是provider。由于ServiceBean实现了InitializingBean接口,所有在Spring实例化这个bean后会调用接口方法afterPropertiesSet:[java] viewplaincop
m635674608
·
2015-10-30 15:00
Dubbo源码分析
(四):Dubbo之Registry
dubbo的总体架构如图所示:服务注册对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即既需要提供服务,有需要消费服务。通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务
闲庭细步
·
2015-03-23 23:05
Dubbo源码分析
(三):Dubbo之服务端(Service)
如上图所示的Dubbo的暴露服务的过程,不难看出它也和消费者端很像,也需要一个像reference的对象来维护service关联的所有对象及其属性,这里的reference就是provider。由于ServiceBean实现了InitializingBean接口,所有在Spring实例化这个bean后会调用接口方法afterPropertiesSet:publicvoidafterProper
闲庭细步
·
2015-03-20 00:17
JAVA学习
Dubbo源码分析
1
http://humn-chou.iteye.com/blog/1866272?utm_source=tuicool
干死it
·
2015-03-19 12:00
Dubbo源码
Dubbo源码分析
(二):Dubbo之消费端(Consumer)
通观全部Dubbo代码,有两个很重要的对象就是Invoker和Exporter,Dubbo会根据用户配置的协议调用不同协议的Invoker,再通过ReferenceFonfig将Invoker的引用关联到Reference的ref属性上提供给消费端调用。当用户调用一个Service接口的一个方法后由于Dubbo使用javassist动态代理,会调用Invoker的Invoke方法从而初始化一个RP
闲庭细步
·
2015-03-19 00:10
JAVA学习
Dubbo源码分析
系列1---Dubbo异步通信
1、client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字。 2、将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object。 3、向专门存放调用信息的全局ConcurrentHashMap里
flychao88
·
2015-03-08 19:00
DUBBO
Dubbo源码分析
系列1---Dubbo异步通信
1、client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字。 2、将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object。 3、向专门存放调用信息的全局ConcurrentHashMap里
flychao88
·
2015-03-08 19:00
DUBBO
Dubbo源码分析
系列1---Dubbo异步通信
1、client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字。 2、将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object。 3、向专门存放调用信息的全局ConcurrentHashMap里
flychao88
·
2015-03-08 19:00
DUBBO
Dubbo源码分析
(一):概览
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,是阿里巴巴的一个开源项目。笔者认为阿里巴巴的Dubbo的userguide写得非常好,下面是笔者摘抄的一部分内容:随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构当网站流量很小时
闲庭细步
·
2015-02-25 18:20
JAVA学习
Dubbo源码分析
2
这是本人对于
Dubbo源码分析
的系列二,对于系列一,主要是对Dubbo的初始化、请求-响应过程的分析,并没有详细分析每个细节,接下来的系列主要是分析Dubbo中的各个细节,以供更加准确的了解这个支持SOA
humn_chou
·
2013-07-31 11:00
Dubbo序列化与反序列化
连通性设计
Dubbo源码分析
1
这是本人对于
Dubbo源码分析
的系列一,没有说明Dubbo是什么,不清楚请先了解,此处只是为了给自己做个笔记,也给正在学习Dubbo的同学一些借鉴,后期会继续奉上所有关于Dubbo的逻辑分析,包括Dubbo
humn_chou
·
2013-05-09 21:00
编程
框架
DUBBO
分布式框架
dubbo源码分析
之注册表设计
前言: 第一次发表技术文章,勿吐槽哈,给点面子,谢谢本文从dubbo中的registry分包来讲解,dubbo内部设计和实现细节,registry分包在com.alibaba.dubbo.registry包中,我参照的是2.5.2的较新版本。为了方便代码阅读,我删除了很多的关于版权的注释信息。 注册表服务提供以下功能:添加、删除某个注册项注册项为原子节点,原子节点在dubbo框架中定义为扩
xiangkui
·
2012-11-13 15:00
框架
DUBBO
事件模型
注册表设计
通知者设计模式
dubbo源码分析
之注册表设计
阅读更多 前言:第一次发表技术文章,勿吐槽哈,给点面子,谢谢本文从dubbo中的registry分包来讲解,dubbo内部设计和实现细节,registry分包在com.alibaba.dubbo.registry包中,我参照的是2.5.2的较新版本。为了方便代码阅读,我删除了很多的关于版权的注释信息。注册表服务提供以下功能:添加、删除某个注册项注册项为原子节点,原子节点在dubbo框架中定义为扩展
xiangkui
·
2012-11-13 15:00
dubbo
框架
注册表设计
事件模型
通知者设计模式
dubbo源码分析
之注册表设计
阅读更多 前言:第一次发表技术文章,勿吐槽哈,给点面子,谢谢本文从dubbo中的registry分包来讲解,dubbo内部设计和实现细节,registry分包在com.alibaba.dubbo.registry包中,我参照的是2.5.2的较新版本。为了方便代码阅读,我删除了很多的关于版权的注释信息。注册表服务提供以下功能:添加、删除某个注册项注册项为原子节点,原子节点在dubbo框架中定义为扩展
xiangkui
·
2012-11-13 15:00
dubbo
框架
注册表设计
事件模型
通知者设计模式
上一页
1
2
3
4
5
6
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他