快速,实时处理大量数据,架构如何解?

2020-08-18 00:00:00 数据 互联网 业务 切分 聊聊

随着业务越来越大,数据也是越来越多,怎么能让业务在数据大的时候还能保证快呢。


互联网的业务无外乎线上OLTP场景和线下OLAP场景,这两种场景,数据量增大后,我们应该分别怎么应对呢。


OLTP

在业务初期,单库单表,就能满足绝大部分业务需求,其典型的架构为:

(1)DAS:数据访问层
(2)DB:数据库

当数据量越来越大,例如达到1亿注册量时,我们必然遇到性能和存储瓶颈,这时我们应该怎么做?

此时需要对数据库进行水平切分。

常见的水平切分算法有“范围法”和“哈希法”。

范围切分,一般就是按主键划分,采用区间的方式,将数据水平切分到多个数据库实例上去。
哈希法,一般我们会选定某个业务主键,采用哈希的方式,将数据水平切分到两个数据库实例上去。

通过对比,我们可以发现:
(1)范围切分,实现足够简单,但是存在后续负载不均衡的问题,不同的区间用户活跃度不一样。
(2)哈希法,通过hash随机,能实现数据和负载的均衡,但是扩容后存在hash数据迁移问题。 
画外音:互联网通过水平扩展来应对大流量。

OLAP

在数据量上来后,我们一般都会采用大数据平台进行数据分析。MapReduce 能很好的解决大数据的计算问题,但是我们怎么能让数据更快呢?此时需要对数据进行实时计算了,比如Flink


大数据实时分析主要基于流式数据,也就是数据源源不断的产生,并被计算。Flink 主要处理有界流和无界流两种形式。

(1)有界流,就是通常的批处理,Flink专为固定大小数据集特殊设计的算法,让批处理有出色的性能

(2)无界流的数据必须持续处理,因为输入是无限的,在任何时候输入都不会完成。Flink擅长的时间控制和状态化,使得运行时能够推断事件结果的完整性,从而运行任何处理无界流的应用。


Flink以及大数据各种计算引擎,到底怎么实现更大数据、更快处理的呢?相信大家一定愿意更加深入的了解。


相关文章