dubbo和rabbitmq对比

随着项目越来越大,局势就是项目拆分,大项目拆分成很多项目,各种技术也应允而生。
从应用交互层面,按我的理解dubbo和rabbitmq就对比分析进行学习。
dubbo和zookeeper结合
  1.zookeeper基于服务发布和治理
  2.dubbo注册服务和发布应用接口
  配置说明:
  <!-- 提供方 -->    
  <dubbo:application name="productor-batman"></dubbo:application>
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.153.147:2181" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />   
    <!-- 用户服务接口 -->
    <dubbo:service interface="com.batman.model.Apple" ref="apple" />
  <!-- 消费方 -->
    <dubbo:application name="consumer-batman" />
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.153.147:2181" />
    <!-- 用户服务接口 -->
    <dubbo:reference interface="com.batman.model.Apple" />
    3.发布服务说白了就是对需要发布的接口封装成外部调用的jar包让其它应用程序调用
      消费者如果引用了jar并调用,那么生产者要引用并实现该接口
      流程就是这么简单,注册并发布接口,消费者和生产者之间就可以通讯
rabbitmq
  1.安装mq,建立连接
  2.声明一个rabbitTemplate,指定连接信息
  3.建立消息队列
  4.发布服务
    我们使用的rabbitmq其实就是对spring的amqp做了封装,应用之间通过接口关联指定的消息队列
    来达到通讯的目的。好处就是接口不用发布,但是需要指定使用的队列名称
二者比较:
  相同点
  1.都需要安装第三方插件,一个是zookeeper一个是rabbitmq
  2.都是通过发布接口的方式
  不同点
  1.dubbo直接发布接口,消费方可以直接调用;rabbitmq需要指定消息队列
    dubbo的缺点是每个需要调用的接口都要发布,rabbitmq写在业务处理类里面
  2.dubbo直接一个dubbo:reference搞定,rabbitmq要对springamqp做多层封装才能达到通用的目标
  3.dubbo支持负债均衡,rabbitmq??
  4.关于socket通讯和rpc框架的使用,dubbo和rabbitmq底层框架原理有待学习