赞
踩
最近项目关系了解到了Kafka,一下被这个神奇的物种折服,它代表着无限扩展,发布/订阅,随时在线并且连通万物。所以必须要进一步了解它,欢迎同道的朋友一起讨论学习。
参考:
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在可以分区的主题中存储键值消息(记录)。每个分区使用增量偏移量(记录在分区中的位置)按顺序存储这些记录。记录在使用时不会被删除,但它们会一直保留,直到代理满足保留时间或保留大小。在此之前,消息可以由一个或多个(不同的)消费者一次又一次地重新处理。
为了优化效率,底层消息传递协议是基于tcp的。消息通常被分组在一起以减少网络开销,这将导致更大的网络包。
Kafka运行在一个或多个服务器(代理)的集群上,所有的主题和分区都分布(和复制)在这些代理上。这种体系结构允许您分配负载并提高容错能力。集群中的每个代理充当某些分区的leader,并充当由其他代理领导的分区的副本。
Kafka是一款开源的消息处理引擎,通常我们称之为消息中间件,与之齐名的还有阿里巴巴开源的RocketMQ。汽车行业中,奥迪、宝马、保时捷和特斯拉等汽车制造商,以及优步、Lyft和Here Technologies等移动服务公司都在使用Kafka。
Kafka除了提供消息中间件所必须的消息发送,Borker,分区,消费者端,高可用和高可靠等机制外,还提供了事件流模式所需要的核心组件和能力。站在事件流模式的角度,我们可以把Kafka提供的能力分为三类:1,消息的发布和订阅模式;2,持久化存储机制;3,消息处理引擎。
一个例子对比显示使用Kafka的效果
使用前:
使用后:
从Kafka体系结构来看,Kafka是一套分布式的系统,由客户端和服务器端组成,服务器端也叫Broker,客户端负责生产和消费事件数据。接下来我们分别介绍一下Kafka的核心组件以及事件流组件。
【Kafka Broker】
Broker的最主要的工作就是持久化生产者客户端发送的消息数据,消息被按照key-value的格式进行存储。由于消息是以字节码的格式被保存在磁盘上,因此这些消息数据对于Broker来说就如同黑盒子,因为Broker其实也不知道消息中具体有什么内容,并且Borker也不关心。
【Schema registry】
基于消息队列通信的两个系统,消息格式非常重要,因为消息格式就如同两个做生意实体签订的合同,业务往来必须按照约定的模式进行。而Schema在消费者端和生产者端建立了这种约束。Kafka的Sechema Registry机制为生产者端和消费者端提供Schema管理,版本控制,序列化和反序列等机制,来加速基于事件流模式的应用落地实施。
【Kafka Connect】
Kafka Connect基于客户端对象模型进行了抽象,来提供Kafka数据的接入和输出的能力。Connect是和外部数据源集成的核心,并且提供了轻量级的数据转换机制。如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。