美文网首页
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