开发一个 Agent 服务,需要注意(考虑)哪些点啊,求指导 🤣

2019-02-27 01:10:35 +08:00
 ns2250225
RT,最近业务需要做一个配置更新的 Agent,配置控制端用了 Nacos,目标节点机器( Nginx,Mysql,Redis 等),想实现一个 Agent,部署到 [目标节点机器] 上面,一个是上报节点功能的健康情况,一个是负责接受 [控制端] 的更新配置请求。
实现的语言不限(最好是 Golang 或 Python ),暂时考虑到的问题有:
( 1 )怎样保持 Agent 长期正常地工作
( 2 )使用 HTTP 还是 WebSocket 来连接 [控制端]
( 3 ) Agent 自动怎样识别 [目标节点机器] 上的服务是什么
...
PS:
走过路过千万不要错过呀,留下建议吧,共同交流学习,立个 F,实现之后会开源,💪
5311 次点击
所在节点    程序员
24 条回复
airfling
2019-02-27 13:29:08 +08:00
这个很简单,代理你用 spring boot 开发,配置更新选择 spring cloud config,这样你既可以更新 agent 的配置也可以使用 agent 触发更新其他服务的配置。基本指标的开发你可以使用 sigar。至于一键部署卸载,你就用一个管理端远程连接到 linux 环境部署,scp 过去。远程连接你选择 jsch
airfling
2019-02-27 13:33:37 +08:00
还有 agent 的数据不是直接发给 server 的,你要用 kafka,作为消息总线,数据我这里以前是存储到 hadoop,后来我就存储到 es 了
binux
2019-02-27 13:34:07 +08:00
@xkeyideal #16 用 MQ 虽然不用自己维护那么多 Agent 连接了,但是压力转嫁到 MQ 上有什么本质区别吗?
xkeyideal
2019-02-27 14:59:31 +08:00
@binux 说的没毛病,应该是我没有说清楚,下面我详细表述一下。

在连接的处理上没有本质区别。

我想表述的是解耦的问题:
1. 当 server 下达的任务量比较大,server 是直连多个 agent 的,如果换成 mq,server 只需要连接一个 mq 即可
2. 当 agent 上传的数据比较多,server 肯定不可能只存在一个,agent 需要连接多个 server 并做好负载均衡的问题,当然加入个 nginx 可以解决,但对 server 的处理能力要求比较高,否则必然导致阻塞,此时加入 mq,每个 agent 只需要连一个 mq 即可,server 可以慢慢处理 mq 的数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/539074

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX