Alligator 系列:实例
概述
这篇文章主要介绍 Alligator 系统的部署启动过程。
配置
启动 Alligator 系统,需要启动 4 个服务,分别是:
- 注册中心:实现服务的注册与发现,单机部署;
- 在线服务:实现用户的在线管理;
- 网关: 接收客户端的连接并将消息转发到注册中心,单机部署;
- 客户端:连接网关并实现消息的接收及处理。
MQ topic 配置
在 Alligator 系统中,网关与后端服务使用 MQ 进行通信,需要为每一个服务(每一台机器)配置一个 Topic, 其说明如下:
- TopicTest:在线服务;
- TopicTest-1:网关服务;
- UserEvent:用于广播用户登陆/下线事件;
- ServiceEvent:用于广播服务上线/下线事件,由注册中心广播出去。
在该实例中,使用 RocketMQ 作为消息组件,还需要定义两个惟一的参数:producerGroup 及 consumerGroup。MQ 参数定义完整实例如下:
1 | common: |
引入多 MQ 支持之后,配置调整如下(网关的配置):
1 | common: |
在新的配置中,需要指定使用的 MQ 类型,并根据每一种类型设置与其相关的参数。
服务信息配置
在后端服务中,需要向注册中心注册其服务,注册的消息包括 zone, id, name, topic 及 load 等信息,同时需要指定注册中心的地址及端口,配置如下所示(网关服务):
1 | common: |
另外,每一个服务如果开发端口,必须指定 ip 及 端口。
1 | common: |
各服务地址端口如下配置:
- 9090: 注册中心端口;
- 9091: 网关端口;
- 9098: 客户端服务端口;
在配置中,可以设置一些通用的配置,如工作队列大小及线程池大小。
1 | common: |
请求链路
在这里有几个关键的点:
- 服务发现是通过注册中心来实现的;
- 网关与后端服务是通过 MQ 来通信的;
- 所有的客户端连接到网关上,网关下线,注册到该网关的用户都会下线;
- 用户登陆成功之后,会调用获取全量用户信息,用户在线数据可能比较大,在这里使用 request-stream 方式进行通信;
启动流程
- 启动 RocketMQ, 并创建相关的 topic;
- 启动注册中心,工程为:alligator-registration-server;
- 启动在线服务,工程为:alligator-biz-online;
- 启动网关服务,工程为:alligator-gateway-websocket;
- 启动在线客户端,工程为:alligator-client-online;
- 访问在线客户端:http://ip:9098.
说明:
用户名和密码可以任意输入,没有校验。