美文网首页
Dubbo-服务间通讯

Dubbo-服务间通讯

作者: 一个喜欢烧砖的人 | 来源:发表于2018-09-20 15:03 被阅读28次

为什么要用远程通讯

在大部分的web程序中,表现层和服务层是分开的(为什么分开不做讨论),这时就需要进行远程通讯了

为什么不用其他的远程通讯非要用dubbo?

  • webservice : 只要是用在web的聊天端,用在此处效率不高,而且是基于soap协议的,此处不推荐使用
  • restful 形式的服务,http+json ,几乎每个接口都是这样的,如果这样会造成服务之间的关系混乱,需要治疗服务。
  • 使用dubbo 服务,使用rpc 协议进行远程调用,直接使用socket通讯,传输效率高,并且可以统计出调用关系,调用次数等

web 服务的演变

  • 1、开始为单一的服务应用架构
  • 2、垂直应用架构
  • 3、分布式服务架构
  • 4、流动计算架构(soa)

dubbo的架构

image.png

节点角色说明:

  • provider:暴露服务的服务提供方
  • consumer:调用服务的远程服务消费方
  • registry:服务注册于发现的注册中心
  • monitor:统计服务的调用次调和调用时间的监控中心
  • containcer:服务运行容器
    调用关系说明:
  • 0、服务容器负责启动,加载,运行服务提供者;
  • 1、服务提供者在启动时,向注册中心注册自己提供的服务;
  • 2、服务消费者在启动时,向注册中心订阅自己所需的服务;
  • 3、注册中心返回服务提供者地址给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
  • 4、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,在选另一台调用
  • 5、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据给监控中心

代码示例

  • 服务提供方:
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="e3-manager" />
<dubbo:registry protocol="zookeeper"
    address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="cn.e3mall.service.ItemService" ref="itemServiceImpl" />

  • 服务消费方
<!-- 引用dubbo服务 -->
<dubbo:application name="e3-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"/>    
<dubbo:reference interface="cn.e3mall.service.ItemService" id="itemService" />

相关文章

网友评论

      本文标题:Dubbo-服务间通讯

      本文链接:https://www.haomeiwen.com/subject/gdegnftx.html