阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

NATS服务器部署及测试

169次阅读
没有评论

共计 2897 个字符,预计需要花费 8 分钟才能阅读完成。

NATS 的服务器是使用 Golang 语言开发的,其可执行文件的名字为 gnatsd,表示 Go NATS Daemon。NATS 服务器是一个开源软件,基于 MIT 许可证发布。

NATS Server 有 Linux 版、Mac 版、Windows 版。下面以 Linux 版为例,详述其部署过程。

NATS Server 当前的最新版本为 0.7.2 版,有三种二进制发布包,详见:https://github.com/nats-io/gnatsd/releases/

  • gnatsd-v0.7.2-darwin-amd64.tar.gz for Mac 的版本
  • gnatsd-v0.7.2-linux-amd64.tar.gz for Linux x64 的版本
  • gnatsd-v0.7.2-linux-arm.tar.gz for Linux ARM 的版本

虽然 NATS Server 是用 Go 语言开发的,但运行 gnatsd 无需安装 Golang 环境。gnatsd 非常的轻量级,发布包只有 2MB 多,启动时可以无需任何参数,直接运行即可。

1、NATS Server 的服务器配置

gnatsd 接受命令行参数作为控制手段。主要的服务器参数如下。

1)服务器选项

  • -a,–addr HOST 绑定主机 IP 地址(默认是 0.0.0.0)
  • -p,–port PORT 客户端连接 NATS 服务器使用的端口(默认是 4222)
  • -P,–pid FILE 存储 PID 的文件
  • -m,–http_port PORT 使用 HTTP 端口作为监听端口
  • -ms,–https_port PORT 使用 HTTPS 端口作为监听端口
  • -c,–config FILE 指定配置文件

2)日志选项

  • -l,–log FILE 指定日志输出的文件
  • -T,–logtime 是否开启日志的时间戳(默认为 true)
  • -s,–syslog 启用 syslog 作为日志方法
  • -r,–remote_syslog 远程日志服务器的地址(默认为 udp://localhost:514)
  • -D,–debug 开启调试输出
  • -V, –trace 跟踪原始的协议
  • -DV 调试并跟踪

3)授权认证选项

  • –user user 连接需要的用户名
  • –pass password 连接需要的密码

4)TLS 安全选项

  • –tls 启用 TLS,不验证客户端(默认为 false)
  • –tlscert FILE 服务器证书文件
  • –tlskey FILE 服务器证书私钥
  • –tlsverify 启用 TLS,每一个客户端都要认证
  • –tlscacert FILE 客户端证书 CA 用于认证

5)集群选项

  • –routes [rurl-1, rurl-2] 路线征求并连接

6)常规选项

  • -h,–help 显示帮助消息
  • -v,–version 显示版本信息

2、NATS Server 部署

1)解压

# tar zvxf /home/gnatsd-v0.7.2-linux-amd64.tar.gz 
./
LICENSE
README.md
gnatsd

2)运行

# ./gnatsd 
[10787] 2016/03/28 23:22:18.472500 [INF] Starting gnatsd version 0.7.2
[10787] 2016/03/28 23:22:18.472716 [INF] Listening for client connections on 0.0.0.0:4222
[10787] 2016/03/28 23:22:18.473127 [INF] gnatsd is ready

3)查看运行

# ps -ef |grep gnatsd
root     10787 10296  0 23:22 pts/0    00:00:00 ./gnatsd
root     10795 10669  0 23:22 pts/2    00:00:00 grep --color=auto gnats

4)远程登录

在远程机器上(我的是 win 8.1),执行 Telnet 登录:

C:\> telnet xxx.xxx.xxx.xxx 4222

连上后 Telnet 立刻输出:

INFO {"server_id":"321233a60fd2a889a1a2f96bc1e95afe","version":"0.7.2","go":"go1.5.2","host":"0.0.0.0","port":4222,"auth
_required":false,"ssl_required":false,"tls_required":false,"tls_verify":false,"max_payload":1048576}

可见,gnatsd 使用了 Golang 1.5.2 版开发。再次按下回车键,Telnet 断开连接,显示:

-ERR 'Unknown Protocol Operation'
-ERR 'Parser Error'

遗失对主机的连接。

同样,gnatsd 服务器端也会输出这样的信息:

[10787] 2016/03/28 23:31:47.050594 [ERR] xxx.xxx.xxx.xxx:58007 - cid:2 - Error reading from client: Client Parser ERROR, state=0, i=0: proto='"\r"...'

3、发布 / 订阅模式的验证

使用两个客户端进行验证。在远程 Windows 主机上开两个 CMD 命令行环境,均使用命令“C:> telnet xxx.xxx.xxx.xxx 4222”连上 gnatsd 服务器。为了以示区别,这里命名为客户端 A 和客户端 B,A 表示发布者,B 表示订阅者。

1)订阅者 B 运行

订阅者 B 使用通配符 foot.* 注册主题 ID 为 90 的主题,订阅成功,gnatsd 服务器返回 +OK 消息。

sub foo.* 90
+OK

2)发布者 A 运行

发布者 A 发布一条消息到主题 foo.bar,消息有效负载的长度为 5,按下回车。消息发布成功,gnatsd 服务器返回 +OK 消息。

pub foo.bar 5
hello
+OK

3)订阅者 B 显示

sub foo.* 90
+OK
MSG foo.bar 90 5
hello

前两行是之前的内容,后两行是新获得的推送消息。可见,发布 / 订阅的消息通信成功。

4)发布者 A 继续执行

发布者 A 继续执行以下命令,消息发布成功,gnatsd 服务器返回 +OK 消息。

pub foo.bar optional.reply.subject 5
hello
+OK

5)接收者 B 继续显示

MSG foo.bar 90 5
hello
PING
MSG foo.bar 90 optional.replay  ly.subject 5
hello

后面三行都是新增的消息内容,其中 PING 是维持连接的消息。

6)接收者 B 执行

接收者 B 执行取消订阅命令,命令消息发送成功,gnatsd 服务器返回 +OK 消息。

unsub 90
+OK

7)发布者 A 运行

发布者 A 再次发布一条消息到主题 foo.bar,消息有效负载的长度为 5,按下回车。消息发布成功,gnatsd 服务器返回 +OK 消息。

pub foo.bar 5
hell2
+OK

此时接收者 B 收不到消息,因为订阅已经取消了。
客户端发出心跳命令消息 PING(用小写 ping 也是同样的),gnatsd 服务器返回 PONG 消息。

ping
PONG
PING
PONG

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-10/136416.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2897字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中