日志队列系统一:总体简介

宋鑫    2014-05-21

本文:日志队列系统一:总体简介,原创于:宋鑫的官方网站,转载请注明出处,谢谢。

废弃,原因:小儿科的玩具

最近公司要做一个日志系统,但是需求什么的各方面不明确,而且不想使用任何框架,说activemq这种的太笨重了,而且结果不可控制,出了问题,不知道消息是在哪里丢的。

本来我旁边的一位说用kafka来处理的,但是因为kafka是scala写的,公司也没精通kafka的,所以还是决定自己写。

日志系统主要是为了出现业务问题,或者系统故障,再不就是误操作出现问题之后可以排查和找到原因。

这边发送消息端使用socket,因为这个日志服务不仅仅是提供给java使用的,还会提供给php使用。java这边的消息非常的多,而且发生日志的服务器也就几台,所以准备以长链接来发送。

但是php这边的没有长链接,大部分php的都是以http请求来发送,所以最终还是决定使用socket来作为服务器端。然后对http的请求进行一步处理,去掉http请求的头,然后直接获取数据。这样,后端的业务就可以共用。

消息的传递使用google的protobuf协议来处理,这个用来传输数据还是很不错的,首先就是压缩率高,再者传输中需要序列化,这个协议可以做到跨平台,java,php,c#等都有相应的支持。

然后消息队列这里就是直接使用一个内存中的BlockingQueue来处理。还需要考虑消息的持久化,不丢失等。

后端存储,使用的hadoop的文件系统hdfs,但是没深入研究,批量插入和多线程去进行写入,会丢失很多消息,所以暂时使用了mongodb替代。 但是因为日志的量非常的大,所以后面肯定还是的用hdfs来处理,而且hdfs实时性也非常多好,支持分布式。


文章有用?分享给你的朋友们,让更多的人受益


更多精彩干货,尽请关注我的个人微信公众号
wechat