我正在为我们的客户建立一个位置跟踪系统。他们在车辆中安装了GPS设备,每个设备都配有服务器IP和端口号,我们开发了一个TCP监听器,用于监听设备发送的请求。这些设备每分钟发送一次请求。
实际问题是,每分钟有1万10万GPS设备发送请求,因此存储信息非常困难,我无法找出存储来自设备的数据的最佳方法,我是否应该存储文件还是memcached?
请帮我找到解决此问题的最佳方法。请记住,每个GP设备都支持GPRS,因为它们具有互联网连接,因此可以与我们的后端服务器通信。 有时这些设备无法找到互联网,因为车辆将在所有地方移动,但一旦设备获得互联网连接,它就会一次发送所有数据包,假设每分钟发送一次。
所以我找到了处理这个问题的最佳方法,我正在使用Java编程语言。
先谢谢!!!!
答案 0 :(得分:0)
我想到的一个选项是Apache Flume,作为将数据收集到Hadoop中的一种方法。 另一个(商业)选项是Splunk
答案 1 :(得分:0)
为了能够处理这些数据,我设置了一堆消息队列服务器来排队所有传入的数据,并设置一组侦听器来从这些队列中获取消息并解释它们。从理论上讲,ActiveMQ,RabbitMQ和HornetQ每秒都能处理数千条消息。
例如,HornetQ有一个high performance journal,可以非常有效地在内存日志和文件系统分页之间取得平衡。在Linux上,它有一个native integration with LibAIO来优化文件系统交互。如果您设置了硬件负载平衡器,则可以将GPS设备配置为与负载均衡器通信,这些设备将转发到其中一个消息队列服务器。
然后瓶颈可能是从消息队列侦听器获取数据到您的数据库。为避免这种情况,您可以使用MySQL Cluster's horizontal partitioning。