学习资料:
21讲吃透实时流计算 - 拉勾教育
为什么要学习实时流计算
服务场景:当请求非常多、数据量非常大,并且对请求时延要求非常严格时,比如,必须在毫秒甚至微秒级返回,那么问题就变得复杂了。如:
- 实时检测异常的反欺诈或风控系统;
- 实时展示业务报表的大屏系统;
- 实时计算用户兴趣偏好的推荐系统;
- 实时统计过车流量的智能交通系统。
如果按照传统对数据库增删改查的方法,是无法应对大数据情况下的计算的。因此可用实时流计算方式来解决。
接触实时流计算会遇到的问题
- 缺乏对实时流计算技术以及它的适用场景的整体认识
- 如何用“流”来实现各种业务逻辑的异步和高并发计算
- 如何针对“流”这种独特的数据模式,设计实时算法
- 对各种流计算框架的认识只停留在 API 调用层面,而没有理解其背后的设计原理,也就是“流”这种计算模式的,核心概念和关键技术点;
- 缺少对一些已有案例的借鉴和思考。
如何解决实时流计算问题
系统架构
“流计算”本质上是一种“异步”编程方法。业务数据像“流水”一样,通过“管道”,也就是“队列”,持续不断地流到各个环节的子系统中,然后由各个环节的子系统独立处理。所以,为了更快地处理“流”,可以通过增加管道的数量,来提高流计算系统的并行处理能力。
目前,开源的流计算框架虽然有许多(比如 Storm、Spark Streaming、Samza 和 Flink),但其实这些主流框架背后,都有着一套类似的设计思路和架构模式。它们都涉及流数据状态、流信息状态、反向压力、消息可靠性等概念。
实时算法
系统架构提供了整体的计算框架,但要实现具体的业务功能,还需要针对“流数据”设计合适的算法。 毕竟,与传统“块数据”相比,“流数据”需要连续不断并且实时地进行处理。
对于实时流计算中的算法,最最核心的问题,在于解决“大数据量”和“实时计算”之间的矛盾。数据量一大,几乎所有事情都会变得复杂和缓慢。“大数据量”的问题,集中在四个方面:时间窗口很长、业务请求量很大、内存受限、数据跨网络访问。为了实现“实时计算”的效果,需要你针对算法做非常精心的设计。