zookeeper安装:https://blog.youkuaiyun.com/weixin_38943098/article/details/88740399
dubbo监控Monitor安装:https://blog.youkuaiyun.com/weixin_38943098/article/details/88735243
一、原理相关
1. 对dubbo的理解:
Dubbo是Alibaba开源的分布式服务框架,从字面理解就是项目分布式的时候用的到Dubbo,大概意思就是将庞大复杂的项目核心业务拆分成相对独立的服务,每个服务都可以部署一台或多台服务器,利用Dubbo远程调用服务(接口)。
2. Dubbo注册中心的作用:
如图所示,服务提供方发布服务到服务注册中心; 服务消费方从服务注册中心订阅服务;服务消费方调用已经注册的可用服务;Monitor负责对提供方和消费方的监控。zookeeper集群时,服务的消费者从提供者地址列表中,基于软负载均衡算法,选一个提供者进行调用,如果调用失败,再选另一个提供者调用, 每个zookeeper节点都是服务的提供者。
3. zookeeper在dubbo中的作用:
zookeeper是树形结构的目录服务,支持变更推送,不负责转发请求,在Dubbo中只作为服务的发布与查询。
zookeeper是一个分布式的服务框架,能与Dubbo做集群部署,保证高可用;在生产环境中,一般部署3,5,7个奇数节点(服务器);部署的越多,可靠性就越高。
zookeeper集群中只要不超过半数的服务器当机,服务就能正常运行;
zookeeper允许多个分布在不同服务器上的进程基于一个共享的、类似标准文件系统的树状虚拟文件系统来进行协作。
zookeeper节点有主从之分,通过leader选举方式,选出主节点。
二、代码实现
1. 项目结构
2. crm-parent的pom文件中添加dubbo坐标
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<!-- 排除传递spring依赖 -->
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.7</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
3. crm-dubbo-service相关