之前学习了SpringCloud全家桶,一站式解决方案
SpringCloud从入门到入土
服务网关------Netflix Zuul
服务注册与发现------Netflix Eureka
客户端负载均衡------Netflix Ribbon 服务端负载均衡-----Feign
断路器------Hystrix
分布式配置------Spring Cloud Config
基本上对于微服务的注册发现和远程调用都有解决方案。
但是最近在SSM项目,传智健康,这一套解决方案只能针对SpringBoot,所以Dubbo+Zookeeper还是需要学习的。
2021年阿里巴巴重新启动Dubbo,将来会不会重放光彩我们拭目以待。
1.简介
Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。
Dubbo官网地址:官网地址
Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
节点 角色名称
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Provider 暴露服务的服务提供方
Container 服务运行容器
2.服务注册中心Zookeeper
上面介绍的Dubbo相当于和SpringCloud比较,一个RPC框架,只不过SpringCloud是一站式解决方案,不仅仅是rpc框架,Dubbo是专精rpc框架
Zookeeper就相当于Eureka和nacos,用于服务的注册和发现。
2.1 安装
下载地址:下载地址
直接去我的资源下载 Zookeeper
前提你得安装了jdk
第一步 把 zookeeper 的压缩包(zookeeper-3.4.6.tar.gz)上传到 linux 系统。
这里用自己的阿里云服务器,你可以自己装个虚拟机。
第二步 解压缩压缩包
tar -zxvf zookeeper-3.4.6.tar.gz
第三步进入zookeeper-3.4.6目录,创建data目录
mkdir data
第四步:进入conf目录 ,把zoo_sample.cfg 改名为zoo.cfg
cd conf
mv zoo_sample.cfg zoo.cfg
第五步 打开zoo.cfg文件, 修改data属性:dataDir=/home/zookeeper-3.4.6/data
当然你复制到哪就写哪
vim zoo.cfg
2.2 启动
进入Zookeeper的bin目录,启动服务命令
./zkServer.sh start
停止服务命令
./zkServer.sh stop
查看服务状态:
./zkServer.sh status
2.3 windows启动
和linux系统一样的配置,注意路径修改成windows系统的路径
双击这个cmd即可。
netstat -ano |findstr 2181
3. Dubbo快速入门
3.1 服务提供方开发
pom.xml
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.0</version>
</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>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
然后在spring的xml文件
<!-- 指定应用名称 -->
<dubbo:application name="health_service_provider"/>
<!--指定暴露服务的端口,如果不指定默认为20880-->
<dubbo:protocol name="dubbo" port="20887"/>
<!--指定服务注册中心地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--批量扫描,发布服务-->
<dubbo:annotation package="com.liu.service"/>
3.2 服务消费方
<!-- 指定应用名称 -->
<dubbo:application name="health_backend" />
<!--指定服务注册中心地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--批量扫描-->
<dubbo:annotation package="com.liu.controller" />
实际应用项目实战在看吧,这里只是介绍简单的配置