查看原文
其他

消息中间件 NATS 集群的构建与使用

SpringForAll社区 SpringForAll社区 2021-05-26


点击上方☝SpringForAll社区 轻松关注!
及时获取有趣有料的技术文章


img

NATS 是一个开源的、轻量级的、高性能的分布式消息通信系统,实现了高可伸缩性和优雅的发布/订阅模型。
NATS 适合云基础设施的消息通信系统、物联网设备消息通信和微服务架构。

❤️ 环境准备

三台服务器,建立 Docker Swarm 集群,一个 Manager,两个 Worker。

  • docker 版本:17-09

  • nats 版本:1.0.4

❤️ Nats 集群架构设计

img

架构图

❤️ 搭建集群

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 开发私有即时通信系统了解一下

● SpringBoot正确打日志的姿势

● Spring Boot 定制 parent 快速构建应用

● Spring Boot 容器化部署 - Docker

● SpringBot中教你手把手配置 https

● Spring Boot 日志处理你还在用Logback?

● 【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?

● Spring Boot 新一代监控你该这么玩

● Spring Boot 异常处理

● Spring Boot 配置 - 配置信息加密

● 拒绝黑盒应用-Spring Boot 应用可视化监控

● 并发Bug之源有三,请睁大眼睛看清它们




如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存