绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
读书 | Making Sense of Stream Processing
2020-05-22 11:02:06

豆瓣:Making Sense of Stream Processing

前段时间读了 I heart Logs 这本小册子,感觉意犹未尽,于是跟随 @阿莱克西斯 的脚步,又看了下这本书。

本书作者还有一本更广为人知的书 Designing Data-Intensive Applications,关于 DDIA 的评价可以参考 ,作者的技术水平、写作态度还是很值得信赖的。

其实这三本书有千丝万缕的联系,尤其是前两本,都是介绍以日志为中心的系统架构,但侧重点不同:

* I heart logs 是对日志架构模式的基本介绍,类似入门手册;
* Making Sense of Stream Processing 偏重将日志架构应用于实际(流式)系统构建,实践性更强,内容更丰富;

而 DDIA 主题更为宏大,不局限于流式系统,而是对现代数据系统构建的方面面都有涉及,尤其是对分布式系统的讲解很赞。

本书一共五章,个人认为每章内容都很赞。

章将各领域关于事件流的术语统一介绍了一下,比如:

* Event Sourcing
* Reactive
* Complex Event Processing
* Actors
* Change Capture
* Stream Processing

相信有很多人跟我一样,听说过其中的部分名词,而且也对它们之间的关系很疑惑,章将解开该疑惑。

第二章介绍“纯粹的”基于日志的系统架构,以及该架构相对传统的以关系型数据库为中的架构的优势。

当然作者并非怂恿大家把已有的系统都推翻重来,对于既存应用,第三章介绍如何借助 Kafak 和 CDC(change data capture)将日志架构融入老系统中。

第四章很有意思,作者提出利用 Kafka 将 Unix 哲学应用于系统构建中,Unix 哲学内容很多,作者指的是这两条:

* Make each program do one thing well.
* Expect the output of every program to become the input to another, as yet unknowm program.

简单说就是各司其职,做小而精的工具,通过组合实现大而全的应用,熟悉 Unix/Linux 的同学对此应该很熟悉,平时用到的 awk、sed、grep 等都是这样设计的。

Unix 工具之间的组合性通过统一接口实现,它们的输入都是 stdin,输出都是 stdout/stderr,自然非常容易组合。

这种设计哲学经过了时间和实践的考验,是一种有效的系统构建方式,但条条大道通罗马,传统的关系型数据库选择了相反的设计方式(数据库集成了大量的特性,是大而全的典型),在过去的几十年里也取得了巨大成功。

遗憾的是在现代应用中,单一数据库越来越难以满足需求了,因此出现了很多各具特色的数据存储系统:

* Redis/Memcached:高速缓存
* Elastic Search:全文检索
* MongoDB:文档型数据库
* Neo4J:图数据库
* Hadoop:批量处理
* Spark Streaming/Flink:流式处理

大家的应用中很大概率会存在其中部分组件,应用现在是跑起来了,但是不同存储组件之间的数据集成、流动却不是那么容易的,作者在提出用 Kafka 也可以作为不同数据系统之间的“统一接口”,这样各种数据存储系统也可以灵活组合了,实际上很多应用都也是这么做的。

后一章是作者对未来数据库和数据应用发展的一个展望,作者认为不同特性将从数据库中剖离出来,形成独立组件,组件之间可灵活组合,数据应用可以灵活选用需要的组件,这正是目前实际正在发生的。

通过本书,能跳出传统系统构建的条条框框,站在一个更新的角度看待我们的应用,多了一种系统构建的思路,非常不错。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Kafka
创建时间:2020-05-22 09:55:12
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • ?
    栈主

小栈成员

查看更多
  • wangdabin1216
  • 小雨滴
  • chenglinjava0501
  • 时间不说话
戳我,来吐槽~