Apache Kafka & SAP

最近项目关系了解到了Kafka,一下被这个神奇的物种折服,它代表着无限扩展,发布/订阅,随时在线并且连通万物。所以必须要进一步了解它,欢迎同道的朋友一起讨论学习。

Event Streaming事件流

参考:
https://kafka.apache.org/documentation.html#introduction
https://www.confluent.io/blog/microservices-apache-kafka-domain-driven-design/
https://www.confluent.io/hub/
https://www.confluent.io/apache-kafka-vs-confluent/
https://www.kai-waehner.de/blog/2019/11/22/apache-kafka-automotive-industry-industrial-iot-iiot/
https://www.jianshu.com/p/f13844f815f0
https://www.jianshu.com/p/894549cd2068
https://www.jianshu.com/p/fa307ecc1eeb
https://www.orchome.com/343
https://www.jianshu.com/p/1136f37cc419
https://blog.51cto.com/quantfabric/2499090
https://blog.csdn.net/xiaoyu_BD/article/details/81783076
https://blogs.sap.com/2021/03/16/cloud-integration-what-you-need-to-know-about-the-kafka-adapter/
https://assets.cdn.sap.com/sapcom/docs/2017/06/66673acb-c37c-0010-82c7-eda71af511fa.pdf
https://help.sap.com/docs/SAP_NETWEAVER_750/6522d0462aeb4909a79c3462b090ec51/d90da4dd2c4743948e3f018c90a235d7.html?locale=en-US&version=7.5.17
https://help.sap.com/saphelp_nwes72/helpdata/EN/4a/1415a4174f0452e10000000a421937/content.htm?no_cache=true
https://www.sap.com/products/data-intelligence.html?btp=5dbe7fa2-8f01-4b3c-bf38-e3d7788ea06b
https://blogs.sap.com/2018/11/11/sap-data-hub-2.3-hello-kafka-world/
https://blog.csdn.net/i042416/article/details/105289270/

首先要搞清楚什么是事件,然后什么是事件流?

对于关系型数据库,它的数据日志机制就是时间流,我们对数据库做的CUD操作(查询不修改状态 ),会写两个日志,一个是redo log,一个是bin log,而日志中记录的就是驱动数据库系统状态变化的事件(日志),比如把表t的id为5的记录年龄+1。

一个例子说明什么是事件流:
在这里插入图片描述
在这里插入图片描述
从上边购买图书的例子中,笔者特别强调这7个步骤的动作,其实每个步骤都会产生事件,而这些时间按照时间就组成了购买图书这个业务的事件流,而对于用户来讲,我只在天猫上做了下单购买的操作而已。考虑到天猫或者淘宝在国内占据统治地位的电商平台每天的订单量,你大概能测算出来每天会产生多少数量的事件,可以说是数以亿计。

事件流之后,是事件流平台

事件流平台Kafka

Kafka是一个事件流平台。它通常被描述为发布/订阅消息传递系统或分布式提交日志。Kafka在可以分区的主题中存储键值消息(记录)。每个分区使用增量偏移量(记录在分区中的位置)按顺序存储这些记录。记录在使用时不会被删除,但它们会一直保留,直到代理满足保留时间或保留大小。在此之前,消息可以由一个或多个(不同的)消费者一次又一次地重新处理。
为了优化效率,底层消息传递协议是基于tcp的。消息通常被分组在一起以减少网络开销,这将导致更大的网络包。
Kafka运行在一个或多个服务器(代理)的集群上,所有的主题和分区都分布(和复制)在这些代理上。这种体系结构允许您分配负载并提高容错能力。集群中的每个代理充当某些分区的leader,并充当由其他代理领导的分区的副本。
在这里插入图片描述
在这里插入图片描述

Kafka是一款开源的消息处理引擎,通常我们称之为消息中间件,与之齐名的还有阿里巴巴开源的RocketMQ。汽车行业中,奥迪、宝马、保时捷和特斯拉等汽车制造商,以及优步、Lyft和Here Technologies等移动服务公司都在使用Kafka。
Kafka除了提供消息中间件所必须的消息发送,Borker,分区,消费者端,高可用和高可靠等机制外,还提供了事件流模式所需要的核心组件和能力。站在事件流模式的角度,我们可以把Kafka提供的能力分为三类:1,消息的发布和订阅模式;2,持久化存储机制;3,消息处理引擎。
在这里插入图片描述

适用场景

  1. 监控:主机通过Kafka发送与系统和应用程序健康相关的指标,然后这些信息会被收集和处理从而创建监控仪表盘并发送警告。
  2. 消息队列: 应用程度使用Kafka作为传统的消息系统实现标准的队列和消息的发布—订阅,例如搜索和内容提要(Content Feed)。比起大多数的消息系统来说,Kafka有更好的吞吐量,内置的分区,冗余及容错性,这让Kafka成为了一个很好的大规模消息处理应用的解决方案。消息系统 一般吞吐量相对较低,但是需要更小的端到端延时,并尝尝依赖于Kafka提供的强大的持久性保障。在这个领域,Kafka足以媲美传统消息系统,如ActiveMR或RabbitMQ
  3. 站点的用户活动追踪: 为了更好地理解用户行为,改善用户体验,将用户查看了哪个页面、点击了哪些内容等信息发送到每个数据中心的Kafka集群上,并通过Hadoop进行分析、生成日常报告。
  4. 流处理:保存收集流数据,以提供之后对接的Storm或其他流式计算框架进行处理。很多用户会将那些从原始topic来的数据进行阶段性处理,汇总,扩充或者以其他的方式转换到新的topic下再继续后面的处理。例如一个文章推荐的处理流程,可能是先从RSS数据源中抓取文章的内容,然后将其丢入一个叫做“文章”的topic中;后续操作可能是需要对这个内容进行清理,比如回复正常数据或者删除重复数据,最后再将内容匹配的结果返 还给用户。这就在一个独立的topic之外,产生了一系列的实时数据处理的流程。
  5. 日志聚合。使用Kafka代替日志聚合(log aggregation)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或HDFS)进行处理。然而Kafka忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的系统比如Scribe或者Flume来说,Kafka提供同样高效的性能和因为复制导致的更高的耐用性保证,以及更低的端到端延迟。
  6. 持久性日志:Kafka可以为一种外部的持久性日志的分布式系统提供服务。这种日志可以在节点间备份数据,并为故障节点数据回复提供一种重新同步的机制。Kafka中日志压缩功能为这种用法提供了条件。在这种用法中,Kafka类似于Apache BookKeeper项目。

一个例子对比显示使用Kafka的效果

使用前:
在这里插入图片描述
使用后:
在这里插入图片描述
从Kafka体系结构来看,Kafka是一套分布式的系统,由客户端和服务器端组成,服务器端也叫Broker,客户端负责生产和消费事件数据。接下来我们分别介绍一下Kafka的核心组件以及事件流组件。

Kafka的核心组件以及事件流组件

【Kafka Broker】
Broker的最主要的工作就是持久化生产者客户端发送的消息数据,消息被按照key-value的格式进行存储。由于消息是以字节码的格式被保存在磁盘上,因此这些消息数据对于Broker来说就如同黑盒子,因为Broker其实也不知道消息中具体有什么内容,并且Borker也不关心。

【Schema registry】
基于消息队列通信的两个系统,消息格式非常重要,因为消息格式就如同两个做生意实体签订的合同,业务往来必须按照约定的模式进行。而Schema在消费者端和生产者端建立了这种约束。Kafka的Sechema Registry机制为生产者端和消费者端提供Schema管理,版本控制,序列化和反序列等机制,来加速基于事件流模式的应用落地实施。

【Kafka Connect】
Kafka Connect基于客户端对象模型进行了抽象,来提供Kafka数据的接入和输出的能力。Connect是和外部数据源集成的核心,并且提供了轻量级的数据转换机制。如下图所示:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值