dubbo学习总结 1

dubbo是什么?
是一个基于RPC调用的分布式服务框架
使用 :
1 基于XML的使用
引入jar dubbo,zookeeper curator
配置xml:
<dubbo:application name=“dubbo-xml-server” owner=“luowei”/>

     					<dubbo:registry id="zk" address="zookeeper://127.0.0.1:2181"/>
    
    					<dubbo:protocol port="20880" name="dubbo"/>
    
  					  <dubbo:service id="serviceBean1" 			interface="com.gupao.dubbo.dubbo_xm_api.UserService" ref="impl"/>
	<dubbo:reference id="userService" interface="com.gupao.dubbo.dubbo_xm_api.UserService" />
	<dubbo:service id="serviceBean2" interface="com.gupao.dubbo.dubbo_xm_api.UserService" ref="impl"/>
	
	<bean id="impl" class="com.dubbo.xml.service.UserServiceImpl"/>
	启动spring容器,就可以实现服务调用了

xml实现原理:
通过spring提供的标签扩展点:dubbo提供了dubboNamespaceHandler去解析对应的标签:
解析成:
ApplicationConfig
RegistryConfig
ProtocolConfig
ServiceBean
ReferenceBean
实现依赖注入的
dubbo源码分析:
** SPI机制:
同java的spi机制一样,dubbo提供的spi机制也是去加载对应路径下的文件信息,不同的是key–value的形式
ExtensionLoader.loade(Class<? extends >Object)
dubbo默认会加载:META-INF/dubbo META-INF/services具体的可以参见源码:ExtensionLoader源码
dubbo的spi机制是dubbo的核心
dubbo服务发布过程:
基于spring提供的监听机制和InitializingBean,上面说了,在每个dubbo:service标签都会生成对应的ServiceBean进行解析,解析完了之后,发布服务
过程如下:
拿到注册中心地址----》通过proxyFactory把对应的对象包装成一个Invoker----->protocol.export协议发布---->RegistryProtoco(向注册中心发布服务地址)l---->DubboProtocol---->启动nettyServer,实现监听(维持心跳)
客户端的启动过程:
如上:
每个dubbo:reference都会被解析成一个ReferenceBean对象放入ioc容器中,和发布一样,解析完成之后会调用 getObject();方法createProxy创建代理类 registryProtocol#refer()—>生成一个RegistryDirectory(保存了服务实例,连接信息等)
当实际调用时就可以调用代理方法发起远程通信调用
springboot+zookeeper+dubbo 使用

org.apache.dubbo
dubbo-spring-boot-starter
2.7.1


org.apache.dubbo
dubbo
2.7.1


org.apache.curator
curator-framework
4.0.1


zookeeper
org.apache.zookeeper




org.apache.curator
curator-recipes
4.0.1


zookeeper
org.apache.zookeeper
3.4.7

和xml的使用基本一致,只是进入了springboot生态,实现自动装配
服务端:通过注解发布:org.apache.dubbo.config.annotation.Service
客户端通过:org.apache.dubbo.config.annotation.Reference注入
application.properties里面配置dubbo相关
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.application.name=dubbo-springboo-server
dubbo.scan.base-packages=com.dubboSpringbootServer.serverImpl
就可以实现远程调用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值