其他
消息中间件 NATS 集群的构建与使用
NATS 是一个开源的、轻量级的、高性能的分布式消息通信系统,实现了高可伸缩性和优雅的发布/订阅模型。
NATS 适合云基础设施的消息通信系统、物联网设备消息通信和微服务架构。
❤️ 环境准备
三台服务器,建立 Docker Swarm 集群,一个 Manager,两个 Worker。
docker 版本:17-09
nats 版本:1.0.4
❤️ Nats 集群架构设计
架构图
❤️ 搭建集群
1、【Manager】创建集群网络
1docker network create -d overlay --attachable mongo
--attachable 允许其他容器加入此网络
2、创建 Nats 集群
2.1、【Manager】创建 stack.yml
1version: '3.3'
2services:
3 nats1:
4 image: registry.docker-cn.com/library/nats
5 command: --cluster nats://0.0.0.0:5222 -routes nats://nats2:5222,nats://nats3:5222
6 ports:
7 - 4222
8 networks:
9 - nats
10 deploy:
11 restart_policy:
12 condition: on-failure
13 replicas: 1
14 placement:
15 constraints:
16 - node.hostname==manager
17 nats2:
18 image: registry.docker-cn.com/library/nats
19 command: --cluster nats://0.0.0.0:5222 -routes nats://nats1:5222,nats://nats3:5222
20 ports:
21 - 4222
22 networks:
23 - nats
24 deploy:
25 restart_policy:
26 condition: on-failure
27 replicas: 1
28 placement:
29 constraints:
30 - node.hostname==worker1
31 nats3:
32 image: registry.docker-cn.com/library/nats
33 command: --cluster nats://0.0.0.0:5222 -routes nats://nats1:5222,nats2:5222
34 ports:
35 - 4222
36 networks:
37 - nats
38 deploy:
39 restart_policy:
40 condition: on-failure
41 replicas: 1
42 placement:
43 constraints:
44 - node.hostname==worker2
45networks:
46 nats:
47 external: true
2.2、【Manager】启动集群
1docker stack deploy -c stack.yml nats
2.3、【Manager】查看服务的启动情况
1docker service ls
3、连接集群
外部【用于测试】:查看端口随机的端口映射(netstat -ntlp),一般为 30000~30002,连接时指定多个URL:
1nats://managerIP:30000
2nats://managerIP:30001
3nats://managerIP:30002
内部【限 nats 网络下的服务或容器】:
1nats://nats1:4222
2nats://nats2:4222
3nats://nats3:4222
❤️ 在 Spring Boot 中连接 Nats 集群
Github 地址:https://github.com/ChinaSilence/spring-boot-starter-nat
Gitee 地址:https://gitee.com/yyd-code/spring-boot-starter-nats
微服务 WebSocket 集群项目 AnyIM 实战
● 双十一还在盖楼?少年你应该掌握Docker 部署 Consul了
● Spring Boot 配置 - Consul 配置中心
● 天天玩微信,Spring Boot 开发私有即时通信系统了解一下
● Spring Boot 定制 parent 快速构建应用
● Spring Boot 日志处理你还在用Logback?
如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!