跳至主要內容

Dubbo

HeChuangJun约 983 字大约 3 分钟

1. 如何实现远程调用?

  • 1、Webservice:效率不高基于soap协议。项目中不推荐使用。
  • 2、使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。(不同语言不同公司使用)
  • 3、使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。(同语言使用)

2. Dubbo使用

  • Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

  • 远程服务中spring的配置,在本地服务的基础上,只需做简单配置,即可完成远程化:

  • 将上面的local.xml配置拆分成两份,将服务定义部分放在服务提供方remote-provider.xml,将服务引用部分放在服务消费方remote-consumer.xml。并在提供方增加暴露服务配置dubbo:service,在消费方增加引用服务配置dubbo:reference

	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
	以上两句配置在xml中
	<!-- 使用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" />
	
	<bean id="xxx" class="itemServiceImpl实现类">
	<!-- 声明需要暴露的服务接口 -->
	<dubbo:service interface="cn.e3mall.service.ItemService接口" ref="xxx" />


	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
	以上两句配置在xml中
	<!-- 引用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起一个名字,相当于bean的name" />

	在controller层
	@Autowired
	private ItemService itemservice使用即可

3. 注册中心Zookeeper

  • 官方推荐使用zookeeper注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
  • 使用dubbo-2.3.3以上版本,建议使用zookeeper注册中心。
  • Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,
  • 适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
  • Zookeeper优点:
    • 1、可以作为集群的管理工具使用。
    • 2、可以集中管理配置文件。

4. Dubbo的安装

  • 第一步:安装jdk

  • 第二步:把zookeeper的压缩包上传到linux系统(目录随意)

  • 第三步:解压缩压缩包tar -zxvf zookeeper-3.4.6.tar.gz

  • 第四步:进入zookeeper-3.4.6目录,创建data文件夹。

  • 第五步:把zookeeper-3.4.6目录下的conf目录将zoo_sample.cfg改名为zoo.cfg :mv zoo_sample.cfg zoo.cfg

  • 第六步:修改zoo.cfg的data属性设置为data所在的目录:vim zoo.cfg然后输入i编辑 dataDir=/usr/zookeeper-3.4.6/data 然后Esc,然后:wq保存并退出

  • 第七步:进入bin目录启动zookeeper

    • ./zkServer.sh start 关闭:./zkServer.sh stop 查看状态:./zkServer.sh status
    • 注意:需要关闭防火墙。service iptables stop 永久关闭修改配置开机不启动防火墙:chkconfig iptables off
    • 如果不能成功启动zookeeper,需要删除data目录下的zookeeper_server.pid文件。
  • 第八步:Dubbo监控中心的安装

    • cp dubbo-admin-2.5.4.war apache-tomcat-7.0.47/webapps/dubbo-admin.war
    • 进入tomcat的bin目录下启动tomcat
  • 第九步:访问http://192.168.25.167:8080/dubbo-admin/open in new window 用户名:root密码:root

  • 如果监控中心和注册中心在同一台服务器上,可以不需要任何配置。

  • 如果不在同一台服务器,需要修改配置文件dubbo.properties:

/root/apache-tomcat-7.0.47/webapps/dubbo-admin/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181注册中心地址
dubbo.admin.root.password=root root用户的密码
dubbo.admin.guest.password=guest