看看消息队列 网站日志流量分析系统

一、消息队列对比

1.RabbitMQ

  ①RabbitMQ是使用Erlang语言编写的一个开源的消息队列

  ②本身支持很多协议:AMQP、XMPP、SMTP、STOMP,也正因如此,它非常重量级,更适合于企业级的开发

  ②实现了Broker架构,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。

  ③分布式

2.Redis

  ①Redis是一个基于key-value的NoSQL型数据库,开发维护很活跃

  ②虽然它是一个Key-Value的数据库存储系统,但它本身支持MQ功能,所以完全可以当作一个轻量级的队列服务来使用

3.ZeroMQ

  ①ZeroMQ号称最快的消息队列系统,尤其针对大吞吐量的需求场景

  ②ZeroMQ能供实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这MQ能够应用成功的挑战。

  ③ZeroMQ仅提供非持久性的队列,也就是说如果宕机,数据将会丢失,其中,Twitter的Storm 0.9以前的版本默认使用ZeroMQ作为数据流的传输(Storm从0.9版本开始同时支持ZeroMQ和Netty作为传输模块)

4.ActiveMQ

  ①ActiveMQ是Apache下的一个子项目

  ②类似于ZeroMQ,它能够以代理人和点对点的技术实现队列

  ③类似于RabbitMQ,它少量代码就可以高效地实现应用场景。

5.Kafka

  ①Kafka是Apache下的一个子项目

  ②采用Scala语言编写,它以可水平扩展和高吞吐率而被广泛使用。

  ③Kafka之间传输数据使用的是零拷贝技术

  ④完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡

  ⑤高吞吐,在一台普通的服务器上可以达到10W/s的吞吐速率

  ⑥快速持久化,可以在O(1)的系统开销下进行消息持久化

  ⑦支持Hadoop数据并行加载,对于像Hadoop的一样的日志数据和离线分析系统,但又要要求实时处理的限制,这是一个可行的方案。Kafka通过Hadoop的并行加载机制统一了在线和离线的消息处理。

  这里被被应用于博主的一篇博客:网站日志流量分析系统

二、消息队列使用

1.RabbitMQ的安装及使用

1.异步处理

来一个场景  

 1.messaging

  ①对于一些常规的消息系统,kafka是个不错的选择,partions/replication和容错,可以使kafka具有良好的扩展性和性能优势

  ②kafka并没有提供JMS中的“事务性”、“消息传输担保(消息确认机制)”等企业级特性;kafka只能使用作为“常规”的消息系统,在一定程度上,尚未确保消息的发送与接收绝对可靠(比如,消息重发、消息发送丢失等)

2.Website activity tracking

  ①kafka可以作为“网站活性跟踪”的最佳工具,可以将网页/用户操作等信息发送到kafka中,并实时监控,或者离线

猜你喜欢

转载自www.cnblogs.com/rmxd/p/11583002.html
今日推荐