log在当前互联网中的应用:
分布式数据系统中有序的数据变化,数据分布式化
消息系统----消息系统是事件驱动架构中必不可少的元素。log是各种消息系统,activemq,kafka,rocketmq中的基本单元,承载事件。可使用消息系统构建业务总线,解耦事件产生者与事件关注者。也可用作负载均衡。
数据流--应用于数据集成,数据共享问题
实时计算--流处理,解决pull方式的沉重低效,与高延迟
简单说上面几点就是 log解决了
协调,同步,数据集成(共享),解耦,过程中处理 五大问题
协调:通过log传输信息,使得各个系统统一对一件事物的决策确定
同步:子系统只关注主系统的数据变化事件log,而不关注应用对数据的操作。
数据集成:各系统共享数据,数据源提供可积压,可重复消费消息,可记录客户端消费位置的log日志集群实现。
解耦:消费者与生产者解耦,互相不关注对方的存在,消费者以log获知事件的发生,并可实现削峰填谷,消费者可扩增消费能力,或削弱消费能力,而生产者不必调整生产能力。
过程中处理:实时计算的奥妙在于拓展了数据源,对于二级消费者,甚至三级消费者,可能消费的数据是一级消费者,二级消费者组装后的数据,但是三级消费者无需关注中间处理过程。实时计算在于在事件最终落地之前,实时的做了合并,修改,分析等操作。通过log,实时计算组件可构建一个完善的数据流。
分布式系统中的logs
解决了两个重要的分布式数据系统中的问题:
1,有序的数据变化 :redis aof数据同步,mysql主从
2,数据分布式化 集群方式存储数据
数据集成中的log
数据集成是把不同来源、格式、特点性质的数据(基础数据,简单加工)在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。例如集团下子公司A,与集团下子公司B的数据需要共享。
可见,数据是整个系统应用中,最底层的支持,一个可靠的数据源是构建一个好的数据集成系统的关键。
数据源可以是各种数据库里的表,也可以是一个消息中间件内整合了的log日志,消息中间件作为数据集成的的数据源,比纯的数据库中的数据作为数据集成的源头有如下优点:
1,可实时消费,减少了对数据仓库大批量pull的繁杂,消费者可根据自己索引快速增量pull数据。
2,消息中间件统一过滤,规范的事件log格式,避免数据仓库中对数据的处理方式不对问题
3,多数据源覆盖困难(kafka使得消费者与生产者解耦,消费者无需关注多数据源,只需关注kafka数据集群)
定义良好的log结构,以及一个好的可积压的消息中间件是数据源构建的关键。
实时计算中的log
实时计算中的log算是对数据集成中的log进行的一种拓展,经过程序处理的log,传递给消费者,而log本身是否经过处理,是否是原生log,对于消费者来说是透明的。
事件驱动架构下的log作用:
分布式系统构建复杂,最好的处理办法是各尽其责,各个组件完善自己的功能,大家协同合作,各系统可通过log进行沟通,数据共享,降低自身复杂度。
在分布式系统中,log应解决的问题:
数据一致性问题
节点数据同步
提供提交语义,来表明多系统对某件事情达成共识
提供可订阅的数据源
数据恢复能力
负载均衡能力