搭建Zookeeper
0.软件版本
CentOS:CentOS Linux release 7.3.1611 (Core)
Zookeeper:apache-zookeeper-3.6.2
1.下载Zookeeper安装包
到https://zookeeper.apache.org/releases.html下载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECp4o5gk-1611548673856)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125102337513.png)]
点进去有多种下载方式
https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZq85TrN-1611548673858)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125102411076.png)]
我选择下到本地,再通过MobaXterm拖到Linux 里,你也可以在Linux系统使用以下命令下载:
wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
2.解压Zookeeper压缩包
登录linux系统,创建一个目录,将上一步放到linux的tar.gz解压
tar zxvf apache-zookeeper-3.6.2-bin.tar.gz
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SnsVkO0x-1611548673860)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125102748088.png)]
3.修改配置文件
进入解压文件的conf目录
cd apache-zookeeper-3.6.2-bin/conf
修改文件名,将zoo_sample.cfg改为zoo.cfg
mv zoo_sample.cfg zoo.cfg
修改zoo.cfg内容
vi zoo.cfg
简单配置如下,本地开发可只配一个机器,
tickTime=2000
initLimit=5
syncLimit=2
# 需要配置此路径
dataDir=/tmp/zookeeper
# 配置端口
clientPort=2181
# server.id=host:port:port
# server固定,id标识机器序号,此id需要到dataDir,配置到myid文件中
server.1=127.0.0.1:2888:3888
#server.2=127.0.0.1:2888:3888
#server.3=127.0.0.1:2888:3888
还需要到配置的dataDir路径下,创建文件名为myid,将机器序号写进入,例如根据配置文件,写入1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3rt0mScp-1611548673868)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125104552452.png)]
4.启动服务端
进入apache-zookeeper-3.6.2-bin/bin目录,启动服务端
sh zkServer.sh start
使用telnet验证,出现下图证明启动成功
telnet ip port
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLZwntsz-1611548673870)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125104939990.png)]
启动成功,可以看到,我们开一台机器,模式就是standalone单机
如果要操作客户端,可在bin目录下使用sh zkCli.sh查看
使用 ls /可以看到根目录下节点,我的已经搭好连上dubbo了,如果第一次查看,应该只有zookeeper一个ZNode
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B73Roq1g-1611548673871)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125105902210.png)]
各模块配置Dubbo
0.版本
已有项目的Springboot版本:2.2.6.RELEASE
Dubbo版本:maven配置是0.2.0,源码版本是2.6.2
1.Maven整合已有或新建项目
将多个项目整合成功一个项目多模块,多模块直接需要互相调用,所以都是平级的,既是生产者也是消费者
2.添加依赖
因为各模块已在pom配置了parent为主项目,所以再主项目的pom添加相关依赖即可
<properties>
<curator-framework.version>4.0.1</curator-framework.version>
<zookeeper.version>3.4.13</zookeeper.version>
<dubbo.starter.version>0.2.0</dubbo.starter.version>
</properties>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.starter.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator-framework.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
3.yml配置
dubbo:
application:
name: 应用名
protocol:
name: dubbo
# port端口每个项目配成不一样的
port: 20880
registry:
address: zookeeper://zk的IP:2181
provider:
timeout: 1000
# 如果多项目互为生产者消费者,此项需设为false,不然启动时会检查生产者是否启动,先启动的消费者就连不上后启动的生产者
consumer:
check: false
# 自定义dubbo version,用于区分service版本
dv:
service:
version: 1.0.0
4.注解
在启动类添加注解
@EnableDubbo
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJwromwX-1611548673873)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125111815851.png)]
5.新建公共接口项目
新建一个项目,定义两系统需要交互的接口,我就叫它对外Service吧
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opfFdGrr-1611548673874)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125112501558.png)]
接口内容如下,就一个简单的接口
public interface DwService {
String hello(String name);
}
6.生产者者实现类
1.此@Service要用dubbo的,version取了yml中的配置
2.实现类继承公共接口,将接口方法实现
import com.alibaba.dubbo.config.annotation.Service;
import com.***.***api.service.DwService;
@Service(version = "${dv.service.version}")
public class ***DwServiceImpl implements DwService {
@Override
public String hello(String name) {
return "I'm provider ,hello, " + name;
}
}
7.消费者调用类
在消费者端实现调用
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.***.***api.service.DwService;
@RestController
public class ***DwController {
@Reference(version = "${dv.service.version}")
private DwService dwService;
@RequestMapping("/hello/{name}")
public String zwcxHello(@PathVariable("name") String name) {
return dwService.hello(name);
}
}
8.测试
启动两个项目,在生产者页面,修改浏览器地址栏url
http://127.0.0.1:8888/ffhj/hello/生产者
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eq1YXxyv-1611548673875)(C:\Users\Thunisoft\AppData\Roaming\Typora\typora-user-images\image-20210125115057187.png)]
搭建Dubbo Admin控制台
1.下载dubbo admin源码
到https://github.com/apache/dubbo-admin下载源码,解压到本地
2.启动dubbo-admin-server
IDEA打开dubbo-admin-server项目,修改配置文件application.properties的Zookeeper配置地址为自己搭建的地址
直接启动,端口为8080,但是因为前后端分离,还不能直接访问页面,需要再启动dubbo-admin-ui
3.启动dubbo-admin-ui
通过DOS启动dubbo-admin-ui
进入dubbo-admin-ui目录,运行
npm install
运行完后,运行
npm run dev
可以看到,前端访问接口为8082
4.访问dubbo admin
登录页面(就这?九折?),默认账号密码是root/root
登录后进入首页也没什么内容,点击左侧服务查询,可以看到已注册的服务
点击列表项的详情,可以看到更多信息
服务关系中可以看到各系统对接情况,现在只适配了两个系统,可以增加更多系统
颜色代表系统角色
- 红色 consumer
- 黑色 provider
- 墨绿(墨蓝?)色 consumer and provider