博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NATS服务器部署及测试
阅读量:5951 次
发布时间:2019-06-19

本文共 3196 字,大约阅读时间需要 10 分钟。

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/51002444

NATS服务器部署及测试

作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:

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

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

NATS Server当前的最新版本为0.7.2版,有三种二进制发布包,详见:

  • 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 ./LICENSEREADME.mdgnatsd

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 gnatsdroot     10787 10296  0 23:22 pts/0    00:00:00 ./gnatsdroot     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 5hello+OK

3)订阅者B显示

sub foo.* 90+OKMSG foo.bar 90 5hello

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

4)发布者A继续执行

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

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

5)接收者B继续显示

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

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

6)接收者B执行

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

unsub 90+OK

7)发布者A运行

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

pub foo.bar 5hell2+OK

此时接收者B收不到消息,因为订阅已经取消了。

客户端发出心跳命令消息PING(用小写ping也是同样的),gnatsd服务器返回PONG消息。

pingPONGPINGPONG
你可能感兴趣的文章
关于Linux系统下若干易混淆目录的分析
查看>>
《统一沟通-微软-实战》-6-部署-7-部署移动功能-1
查看>>
Java实现MongoDB的日期(Date)分组功能
查看>>
《从零开始学Swift》学习笔记(Day 39)——构造函数重载
查看>>
如何了解事件中回调函数的参数
查看>>
电商3.0:构建互利共赢的生态圈
查看>>
疯狂ios讲义之实例:通过旋转手势旋转图片
查看>>
软件定义重划边界——IT就是把复杂东西简单化
查看>>
Exchange Server 2016管理系列课件22.通讯组概述
查看>>
exchange 2013设置分层通讯簿(HAB)
查看>>
Puppet基础篇5-如何建立master和agent之间的认证关系
查看>>
OSSIM5 自定义安装
查看>>
《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换
查看>>
把握现在才是最重要的
查看>>
Wijmo 更优美的jQuery UI部件集:在安全站点使用Wijmo控件
查看>>
前端开发者常用的9个JavaScript图表库
查看>>
拇指接龙游戏从WIN32向Xcode 4.5移植过程问题记录
查看>>
windows服务器远程关机或重启
查看>>
WPF老矣,尚能饭否——且说说WPF今生未来(中):策略
查看>>
redux-form(V7.4.2)笔记(三)之Flow简介
查看>>