mooon-agent设计要点

mooon-agent以简约的设计为主,力求各对象之间保持简单的关系,尽量避免过度的传递,因此CAgentThread成了核心。除此之外,还有几个关键的设计点:

1、采用了可Epollable的队列,以保证消息的实时上报

2、使用了状态机,分别为发送消息的CSendMachine和接收消息的CRecvMachine,保证所有过程是异步非阻塞的,同时又使得代码简洁

3、对下行消息处理的抽象,以达到通用的目的

4、使用了NetInt,使用得消息网络字节序问题迎刃而解

保证Agent做好的前提:

1、充分的设计,追求对象间的关系最简化

2、有限的设计,每个阶段控制功能数,鄙弃一步到位的思想,比如上报心跳这个功能,那需要同时支持发送简单的心跳,也要支持发送富心跳(附带数据的心跳,如CPU使用率等),这样做会导致第一版本难以收敛,会导致设计扩张

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

最优布线问题

【问题描述】   学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们间有数据线连接。由于计算机所处的位置不同,因此不同的两...

3567
来自专栏安智客

Android O新特性之Treble介绍

Android 8.0 版本最重要的一个新特性是Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成...

4199
来自专栏架构师小秘圈

cdn技术原理

作者:IT世界,来自:www.it.com.cn 1. 前言   Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和...

1.2K9
来自专栏GA小站

Google Analytics数据保护政策变更解读(201804)

相信很多管理员一大早就收到一封谷歌分析的关于数据保存和数据保护协议变更的通知邮件,有些人就问,这会不会对Clientid,Userid有什么影响,或对我们有什么...

742
来自专栏微信公众号:Java团长

我的编码习惯 —— 日志规范

开发中日志这个问题,每个公司都强调,也制定了一大堆规范,但根据实际情况看,效果不是很明显,主要是这个东西不好测试和考核,没有日志功能一样跑啊。

962
来自专栏魏琼东

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 实现业务

业务分层         依据行业经验来看,分层是解决复杂问题的简单方法,通过分层,可以把一个复杂问题分解为不同层次应用的小问题,解决各层小问题的难度小于总的问...

19410
来自专栏YG小书屋

logstash 重复消费kafka问题

前两天业务方突然找到我说当天索引ES查询很慢,原来毫秒级的查询现在竟然要20s,让我处理下。我看了下索引大小,原来是1分片6g左右,今天突然就变成了1分片32g...

2723
来自专栏纯洁的微笑

电商平台备战促销季的运维秘诀——高可用服务层

1182
来自专栏IT技术精选文摘

再论分布式事务:从理论到实践

本文补充一种分布式事务解决方法:Best Effort. Best Effort   best effort即尽最大努力交付,主要用于在这样一种场景:不同的服...

2666
来自专栏猿人谷

三种Linux服务器监控技术的对比

本文介绍三种Linux服务器监控技术的优缺点,其中有SNMP代理(客户端)方式、SSH方式、安装私有代理(客户端)方式等内容。 Linux系统的强大的功能和绚丽...

2277

扫码关注云+社区