消息系统或者是说消息队列中间件是当前处理大数据的一个非常重要的组件,用来解决应用解耦、异步通信、流量控制等问题,从而构建一个高效、灵活、消息同步和异步传输处理、存储转发、可伸缩和最终一致性的稳定系统。

 

当前比较流行的消息中间件有:KafKa、RocketMQ、RabbitMQ、ZeroMQ、ActiveMQ、Redis等,这些消息中间件在性能以及功能上各有所长。如何选择一个消息中间件取决于我们的业务场景、系统运行环境、开发人员以及运维人员对消息中间件的情况等。

 

以下的场景可以选择使用KafKa:

 

(1):消息系统:

 

KafKa作为一个优秀的消息系统,具有高吞吐量、内置的分区、备份冗余分布式的特点,为大规模的消息处理提供了一种很好的解决方案;

 

(2):应用监控:

 

利用KafKa采集应用程序和服务器健康相关指标,如CPU占用率、IO、内存、连接数、TPS、QPS等,然后将指标信息进行处理,从而可以构建一个具有监控仪表盘、曲线图等可视化监控系统。例如:很多公司采用KafKa与ELK(Elasticsearch、Logstash和Kibana)真核构建应用服务监控系统;

(3):网站用户行为追踪:

 

为了更好的了解用户的行为,操作习惯,改善用户体验,进而对产品进行升级,将用户的操作轨迹、内容等信息发送到KafKa集群上,通过Hadoop、Spark或者Strom等进行数据分析处理,生成相应的统计报告,未推荐系统推荐对象提供数据源,进而为每个用户进行个性化推荐;

 

(4):流处理:

 

需要将已经收集的流数据提供给其他流式计算框架进行处理,KafKa已经提供了KafKa Streams支持对流数据的处理;

 

(5):持久性日志:

 

KafKa可以为外部系统提供一种持久性日志的分布式系统。日志可以在多个节点之间进行备份,KafKa为故障节点数据恢复提供了一种重新同步机制。同时,KafKa很方便的与HDFS和Flume进行整合,这样就可以方便的将KafKa采集的数据持久化到其他的外部系统;