业务每天会产生大量日志,日志规模庞大,因为业务日志量大,滚动频繁,不可能永久保存,只能定时收集日志,将业务日志归集到一个中心,再做计算。对于实时收集的日志需要一个缓存队列来存储。
Kafka设计的初衷就是处理日志的,可以看做是一个日志系统,针对性很强。kafka有以下特性:快速持久化,可以在O(1)的系统开销下进行消息持久化;高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡;支持spark数据并行加载,对于像spark的一样的日志数据和实时流式分析系统,这是一个可行的解决方案。Kafka通过spark的并行加载机制来统一了在线和离线的消息处理。Apache Kafka是一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统。
总的来说kafka的高可用性设计虽然看起来很合理很可行,但实际使用上并非如此,对数据可用性比较高的场景,建议另外保留一份原始数据,防止kafka故障时带来的数据丢失。kafka兼容性,容错性等看起来也相当合理,但是在大量数据面前还是容易出问题,在这方面,建议使用常规用法,不要使用混用等非常规用法挑战kafka兼容性和容错性的用法,否则必踩大坑。
以上仅为个人在实践中对当前业务场景的一些做法和总结,可能会有使用姿势不对的问题及错误,请指正,欢迎拍砖指正
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。