iphone - 如何最好地存储 SNMP 消息并将其发送到 ios?

标签 iphone linux architecture activemq snmp

我的目标是从客户端(可能有防火墙)的后端服务器传输 SNMP 消息,将它们存储在一些快速的数据库服务器中,然后将它们推送到 iOS 设备 (http://bit.ly/vwBf5)。

我有什么选择?

  1. 封装 snmp 消息并通过 http 将其传输到数据库服务器,然后推送到 iOS 并存储在某个数据库中。 SNMP 代理 -> 处理服务器(一些处理传入消息的引擎) -> 推送到 iOS

  2. 然后使用一些 snmp 代理来捕获。使用自己的 ActiveMQ 服务器推送到 IOS,并使用一些快速持久性数据库。代理 -> ActiveMQ 服务器(用于持久化的 Hadoop) -> iOS

在数据库中,我将存储登录名、时间、消息、来源、发送到苹果、服务器 ID 和用户名。大多数时候数据库只会写入,但有时它会读取(来自网络请求)。

我有哪些选择:Hadoop、Cassandra、Mongo?

最佳答案

好吧,有点模糊的场景。但是,由于您已经考虑过 ActiveMQ,请也看看 Apache Camel,它可以满足您的需求(可能是因为它有点难以理解):

Camel has support读取 SNMP 陷阱(或轮询 SNMP 消息),以及支持将消息发送到 APNS 以及多个数据库(包括 MongoDB、Hadoop 以及兼容 JDBC 的 SQL 服务器)。

这只是它在 Camel 代码中的样子的一个例子(请注意,您需要一些消息的自定义格式以及配置才能工作,当然,所以请不要尝试按原样运行此代码):

from("snmp:127.0.0.1:162?protocol=udp&type=TRAP")  // from SNMP trap
   .convertBodyTo(String.class)
   .setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
   .to("apns:notify") // TO iOS
   .to("mongodb:myDb?database=mySnmp&collection=traps&operation=insert"); // To DB

或者,如果您觉得由于陷阱的高峰值负载而必须进行一些暂存,您也可以这样做:

from("snmp:127.0.0.1:162?protocol=udp&type=TRAP")  // from SNMP trap
   .convertBodyTo(String.class)
   .to("seda:stagedProcess");  // 

from("sead:stagedProcess")
   .setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
   .to("apns:notify") // TO iOS
   .to("mongodb:myDb?database=mySnmp&collection=traps&operation=insert"); // To DB

关于iphone - 如何最好地存储 SNMP 消息并将其发送到 ios?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209568/

相关文章:

iphone - 核心图 - 超出边界的图标签

iphone - SFBAudioEngine 的编译问题

android - 响应式网站在智能手机上显示较大的右侧边距

linux - 在非常大的文件中进行快速字符串搜索

sql-server - Linux 上的 JBoss 使用 SQL Server Windows 身份验证

linux - SCP 不适用于目录,但适用于文件 - 从本地上传到 EC2?

architecture - CISC 机器 - 它们不只是将复杂的指令转换为 RISC 吗?

c# - 如何减少来自 .NET Windows 应用程序的数据库 (SQL Server) 调用

asp.net - 解决 .net Web 应用程序中的可伸缩性和性能问题

ios - 模糊效果在 iOS 7.1 上消失