系统间通讯的解决方案:
实现表现层和服务层间、不同服务不同系统间的远程通讯,多对多的调用关系
- 一种方案是WebService,基于soap协议,效率不高
- 一种是使用restful形式的服务,http+json,中小型项目常用,工程太大的话调用关系混乱
- Dubbo,使用RPC协议进行远程调用,直接使用socket通信。传输效率高,并可以统计出系统之间的调用关系、调用次数。
- 使用SpringCloud的集成解决方案
Dubbo的架构节点:
服务的提供者provider
服务的消费者consumer
注册中心register 为消费者提供匹配服务,从而使消费者获取服务的ip和端口号然后向服务提供者调用服务(使用zookeeper注册中心,zookeeper在大数据中也可以作为集群管理工具)
监控中心Monitor 统计服务的调用次数和调用时间的监控中心
Zookeeper:
Zookeeper可作为服务的注册中心、也可在大数据中作为集群管理工具
安装Zookeeper,并启动
Zookeeper的安装:
第一步:安装jdk
第二步:解压缩zookeeper压缩包
[root@izvluy1jk36n8jz /]# tar zxf zookeeper-3.4.12.tar.gz
查看
[root@izvluy1jk36n8jz /]# ll
进入目录
[root@izvluy1jk36n8jz /]# cd zookeeper-3.4.12
创建data文件夹目录
第三步:将conf文件夹下zoo_sample.cfg复制一份,改名为zoo.cfg
进入conf目录
[root@izvluy1jk36n8jz zookeeper-3.4.12]# cd conf
修改名字
[root@izvluy1jk36n8jz conf]# mv zoo_sample.cfg zoo.cfg
第四步:修改配置dataDir属性,指定一个真实目录
Vim进入编辑,然后:wq保存
第五步:
启动zookeeper:bin/zkServer.sh start
关闭zookeeper:bin/zkServer.sh stop
查看zookeeper状态:bin/zkServer.sh status
[root@izvluy1jk36n8jz zookeeper-3.4.12]# cd bin
[root@izvluy1jk36n8jz bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@izvluy1jk36n8jz bin]#
Dubbo发布服务
<!-- 发布dubbo服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="taotao-manager" />
<!-- 注册中心的地址 -->
<dubbo:registry protocol="zookeeper" address="120.78.89.177:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.taotao.service.ItemService" ref="itemServiceImpl" timeout="300000"/>
引用服务
<!-- 引用dubbo服务 -->
<dubbo:application name="taotao-manager-web"/>
<dubbo:registry protocol="zookeeper" address="120.78.89.177:2181"/>
<dubbo:reference interface="com.taotao.service.ItemService" id="itemService" />