- 论坛徽章:
- 42
|
从前网络监控基本都是基于 perl,python实现的.
对比成百上千的设备,使用多进程/多线程机制,通过snmp/telnet/ssh等方式去管理,还是能够胜任的.
但是面对接入网,十万,百万的海量设备,传统的方式就有些痛苦了.
和server端c10k问题类似,客户端也存在海量连接的处理问题.
ping和snmp还好点,因为icmp和udp是无连接的,传统的方式就可以实现大并发,只是换成异步方式就好.
基于tcp连接的协议就比较麻烦了.
解决的方法也有,就是事件和协程.perl有AE,python有gevent.
但是这些技术还比较新,而且不是原生方案,不是很成熟.相关的模块也不全。
而erlang的并发机制是原生的,而且erlang本身就是电信语言,对协议的支持比较广泛.
我考虑把snmp/telnet/ssh的并行采集操作都迁移到erlang.
采集数据的处理可以由其他语言完成.
问题是中间结果的存储选择,大家有什么好的建议?
ets的话,其他语言好像不好操作
redis的话,erlang的比较好的redis的驱动有什么?
或者直接用文件?
或者有其他更好的思路?
|
|