如何利用 Kafka,实时挖掘企业数据的价值?
首先,问读者老爷们一个简单的问题,如果你需要为你的数据选择一个同时具备高吞吐 、数据持久化、可扩展的数据传递系统,你会选择什么样的工具或架构呢?
答案非常显而易见,那就是 Kafka,不妨再次套用一个被反复用烂掉的例子:淘宝,双十一,上亿的用户在某个时间点同时下单,这个流量规模可想而知,如果直接把所有请求交给后端服务处理,数据库可能已经挂了成千上万次了。而如果先将这些请求写入 Kafka 的消息队列,就可以避免数据库的瞬时高并发写入压力,从而保证数据库的稳定。这就是 Kafka 的削峰填谷场景。
当然,Kafka 的应用场景可不止这一个,还有很多很多,随便再举两个例子:
- 系统解耦:为两个作用不同但相互依赖的系统进行解耦,举个例子,用户下单后,订单系统将访问库存系统,扣除相应库存数量,此时如果库存系统无法访问,则用户将下单失败。如果在两个系统之间接入 Kafka,订单系统只需要把消息传递给 Kafka,就返回成功了,订单系统恢复后再从 Kafka 读取订单数据,完成库存系统的更新。
- 异步处理:同样适用于上述示例,让系统的订单处理、库存扣减等操作异步进行,用户下单后可立即收到成功的反馈,减轻系统的瞬时压力。
而针对上述这些场景,Kafka 具备每秒处理上百万条消息的能力,并且能够以分布式、去中心化的方式进行扩展,这还没完,通过其分区和副本机制,可以保证数据的高可用性和一致性。
那么怎么样才能把这么牛*的工具给用起来呢?我们用 Kafka 的第一步,当然是把我们的事务系统接到 Kafka,让数据实时流过去啦,所以又轮到 NineData 闪亮登场了。
什么是 NineData?
相信各位看官们都知道 NineData 是什么,此处不再赘述,在本文的场景中,NineData 是一个实时数据管道的角色,通过它可以轻松将各种业务系统(例如 MySQL、Oracle)接入 Kafka,摇身一变成为 Kafka 的生产者。
这里我们以 Oracle 为例,介绍配置方法。
步骤一:录入 Oracle 和 Kafka
-
登录 NineData 控制台,单击数据源管理>数据源,然后在页面中单击创建数据源,选择需要录入的数据源。
-
根据页面提示进行配置,然后单击创建数据源完成创建。
步骤二:配置同步链路
-
登录 NineData 控制台,单击数据复制>数据复制,然后单击创建复制。
-
根据页面提示配置复制任务,由于我们想要实现实时数据同步,需要在复制类型处额外勾选增量复制。
-
配置完成后启动任务,针对您配置的所有同步对象,NineData 会先对所有的存量数据进行全量迁移,接下来就是实时迁移源端 Oracle 中新增的增量数据,所有新写入的数据都将一条不漏地传递到 Kafka,每当 Oracle 端的增量数据已经全部写入 Kafka,并且没有新的增量数据时,任务面板中的延迟将显示为 0 秒,代表当前 Kafka 中的数据是最新的。
步骤三(可选):配置任务异常告警
在迁移过程中,可能需要系统实时监控任务状态,在任务有异常时即刻通知你。
-
登录 NineData 控制台,单击数据复制>数据复制,然后单击复制任务名称。
-
单击右上角的配置告警。
-
输入策略名称,单击保存配置即可。您可以直接使用内置的默认规则,在任务运行失败,或复制延迟大于等于 10 分钟的时候,发送短信提醒您。您也可以自定义创建规则,根据您的需求来进行通知。
下一步
至此,你已经完成了业务系统接入 Kafka 的所有步骤,业务数据将源源不断地从 Oracle 流入 Kafka,接下来你只需要让你的应用从 Kafka 中消费数据,即可实现完整的数据流处理。