nats

https://github.com/nats-io/nats-server
NATS-Server接受命令行参数作为控制手段。主要的服务器参数如下。



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 显示版本信息

https://blog.csdn.net/weixin_39616603/article/details/99624251
https://www.cnblogs.com/brucemengbm/p/7224478.html
port: 4242 # 供client连接的监听端口
net: apcera.me # 监听的网络地址



http_port: 8222 # HTTP监控端口



client连接的认证信息


authorization {
user: derek
password: T0pS3cr3t
timeout: 1
}



集群定义


cluster {



host: ‘127.0.0.1’ # 主机地址
port: 4244 # 路由连接的入站(inbound)端口



# 路由连接的认证信息
authorization {
user: route_user
password: T0pS3cr3tT00!
timeout: 0.5
}



# Routes are actively solicited and connected to from this server.
# Other servers can connect to us if they supply the correct credentials
# in their routes definitions from above.
routes = [
nats-route://user1:pass1@127.0.0.1:4245
nats-route://user2:pass2@127.0.0.1:4246
]
}



日志选项


debug: false
trace: true
logtime: false
log_file: “/tmp/gnatsd.log”



PID进程文件


pid_file: “/tmp/gnatsd.pid”



一些系统属性



client最大连接数


max_connections: 100



最大协议控制行


max_control_line: 512



最大的有效负载


max_payload: 65536



慢消费者阀值


max_pending_size: 10000000



核心基于EventMachine开发,原理是基于消息发布订阅机制,每台服务器上的每个模块会根据自己的消息类别向MessageBus发布多个消息主题,而同时也向自己需要交互的模块,按照需要的主题订阅消息。能够达到每秒8-11百万个消息,整个程序很小只有3M Docker image,它不支持持久化消息,如果你离线,你就不能获得消息。使用nats streaming可以做到持久化,缓存等功能。



NATS 使用场景
nats是一个简单且强大的消息系统,为支持现代云原生架构设计。由于可伸缩性的复杂性,nats旨在容易使用和实现,且能提供多种质量的服务。



一些适用nats的场景有:



高吞吐量的消息分散 —— 少数的生产者需要将数据发送给很多的消费者。
寻址和发现 —— 将数据发送给特定的应用实例,设备或者用户,也可用于发现并连接到基础架构中的实例,设备或用户。
命令和控制(控制面板)—— 向程序或设备发送指令,并从程序/设备中接收状态,如SCADA,卫星遥感,物联网等。
负载均衡 —— 主要应用于程序会生成大量的请求,且可动态伸缩程序实例。
N路可扩展性 —— 通信基础架构能够充分利用go的高效并发/调度机制,以增强水平和垂直的扩展性。
位置透明 —— 程序在各个地理位置上分布者大量实例,且你无法了解到程序之间的端点配置详情,及他们所生产或消费的数据。
容错
使用nats-streaming的附加场景有:



从特定时间或顺序消费
持久性
有保证的消息投递
NATS消息传递模型
发布订阅
请求回复
队列
NATS的特点
nats的独特功能有:



纯净的pub-sub
集群模式的server
订阅者的自动裁剪
基于文本的协议
多种服务质量
最多一次投递
至少一次投递
持久
缓存



https://zhuanlan.zhihu.com/p/40871363
https://segmentfault.com/a/1190000018309598?utm_source=tag-newest


Category golang