dubbo的使用(二)

节点说明:

  • Provider:暴露服务的服务提供方
  • Container:服务运行容器
  • Registry:服务注册于发现的注册中心
  • Consumer:调用注册于发现的注册中心
  • Monitor:统计服务的调用次数和调用的监控中心

关系说明:

  • 0:服务容器负责启动,加载,运行服务提供者
  • 1:服务提供者在启动的时候,向注册中心注册自己提供的服务
  • 2:服务消费者在启动的时候,想注册中心订阅自己所需要的服务
  • 3:注册中心返回服务提供者的地址列表给消费者,如果有变更,注册中心将基于长连接推送变更的数据给消费者
  • 4:服务消费方,从提供者地址列表中,基于软负载的均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
  • 5:服务消费者和提供者,在呢哦村中累计调用次数和调用的时间,定时每分钟发送一个统计数据到监控中心

连通性:

注册中心负责服务地址的注册于查找,相当于目录服务,服务提供者和消费者只在启动的时候于注册中心交互,注册中心不转发请求,压力较小。

监控中心负责统计各服务调用的次数,调用的时间等,统计先在内存汇总后每分钟发送一次到监控中心服务器,并以报表展示

服务提供者想注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销

服务消费方在注册中心获取服务提供者地址列表,并根据负载短发直接调用服务提供者,同时汇报调用时间到监控中心,此时间包含网络开销的时间

注册中心,服务提供者,服务消费者三者之间均属于长连接,监控中心除外

注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者

注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表

注册中心和监控中心都是可选的,服务消费者可以直姐连接到服务提供者

健壮性:

  • 监控中心宕机后不影响使用,只是丢失部分采样数据
  • 数据库宕机后,注册中心仍能通过缓存提供服务列表查询,但不能注册新的服务
  • 注册中心对等集群,任意一台宕机后,将自动切换到另一台
  • 注册中心全部宕机后,服务提供者和服务消费者仍能通过本地缓存通信
  • 服务提供者无状态,任意一台宕机后,不影响使用
  • 服务提供者全部宕机后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复(可以设置重试连接的次数)

伸缩性:

  • 注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的 注册中心
  • 服务提供者无状态,可动态增加机器部署的实例,注册中心将推送新的服务信息给消费者

当zookeeper宕机后,dubbo的消费者也可以访问生产者,因为项目在启动的时候,回去主动拉取生产者的地址端口等数据,每次消费者应用访问的时候首先是从本地址的缓存中读取。

服务方配置 : 可以引入服务和发布服务

流程:首先服务名称- ---  >服务发布的地址--- > 服务的端口  --->  使用的协议  --- > 提供的服务的版本号,协议  -- >  依赖的版本号,连接的次数,超时的时间,-- > 引入的服务(可选) -- > 提供的服务(可选)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        
    <dubbo:application name="${dubbo.name}" />
	<dubbo:registry protocol="zookeeper" address="${dubbo.url}" />
	
	<dubbo:protocol name="dubbo" port="-1" />
	<!-- rest协议 -->
    <dubbo:protocol name="rest" server="servlet" port="${rest.port}" contextpath="${rest.contextpath}"/>
    <!-- 该标签为<dubbo:service>和<dubbo:protocol>标签的缺省值设置
      retries               ==> 服务调用超时时自动重试的次数
      timeout               = => 服务超时时间(单位:毫秒)
    -->
    <dubbo:provider retries="0" timeout="20000" protocol="dubbo" version="${dubbo.version1}" />
   	<!-- 该标签为<dubbo:reference>标签的缺省值设置
      retries               ==> 服务调用超时时自动重试的次数
      timeout               ==> 服务超时时间(单位:毫秒)
    -->
    <dubbo:consumer retries="0" timeout="10000" version="${dubbo.version}" />
	
	
	
	<dubbo:reference id="cbService" interface="com.strongit.nj.czyd.sim.service.inter.shipinfo.ICbService" />

</beans>

对外提供的服务,在设置对外提供的接口的时候,ref引用的是接口的实现类的@Server(name="xxxxx")中的xxxx

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
	
	<dubbo:service interface="com.strongit.nj.wjcz.ais.service.inter.BindingTransactionalService" protocol="dubbo" ref="bindingTransactionalServiceImpl" timeout="10000" />
		
	<dubbo:service interface="com.strongit.nj.wjcz.ais.service.inter.BindingQueryService" protocol="dubbo" ref="bindingQueryServiceImpl" timeout="10000" />
	
	<dubbo:service interface="com.strongit.nj.wjcz.rest.ILocationInfoService" protocol="rest" ref="locationInfoServiceImpl" timeout="5000" />
</beans>

消费方: 消费不能自己提供服务,但是可以引入服务

流程:发布到注册中心的名称 --->  注册中心的地址 ----- > 引入服务的地址  ---- > 引入相关的接口

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
	
	<!--在发布服务的时候的名称  -->
    <dubbo:application name="${appname}" />
	<!-- 注册中心地址 -->
    <dubbo:registry protocol="zookeeper" address="${dubbo.address}" timeout="300000"/>
<!-- 用于指定协议和端口号,协议是由提供方指定,消费方被动接受 -->
    <dubbo:protocol name="dubbo" port="-1" />
	
    <!-- 该标签为<dubbo:reference>标签的缺省值设置
      retries               ==> 服务调用超时时自动重试的次数
      timeout               ==> 服务超时时间(单位:毫秒)
    -->
    <dubbo:consumer retries="0" timeout="100000" version="${dubbo.version}" />
    
		
	<dubbo:reference id="organiseService" interface="com.strongit.nj.czyd.bim.service.inter.organise.IOrgService" />

	<dubbo:reference id="yhService" interface="com.strongit.nj.czyd.bim.service.inter.user.IYhService" />

	<dubbo:reference id="permissionService" interface="com.strongit.nj.czyd.bim.service.inter.permission.IPermissionService" />

	<dubbo:reference id="uploadFileService"
					 interface="com.strongit.nj.czyd.bim.service.inter.uploadFile.IUploadFileService"/>
</beans>

在引用服务的时候, id表示的是@Server(name="xxxx")服务层的Server的名称,interface引用的是api中的接口

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        
	
	<dubbo:reference id="cbService" interface="com.strongit.nj.czyd.sim.service.inter.shipinfo.ICbService" />
	
	<dubbo:reference id="bindingTransactionalService" interface="com.strongit.nj.wjcz.ais.service.inter.BindingTransactionalService" />
		
	<dubbo:reference id="bindingQueryService" interface="com.strongit.nj.wjcz.ais.service.inter.BindingQueryService" />

	<dubbo:reference id="qyfxService" interface="com.strongit.nj.wjcz.qyfx.service.inter.IQyfxService" />
</beans>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值