我试着写写关于Confluent平台的吸引力
Confluent Platform是一个基于Apache Kafka的事件流处理平台。我尽力以简单易懂的方式解释了Confluent Platform。如果有任何地方不太容易理解或者内容被误解,请指出来,我会感激不尽。
Apache Kafka是什么
我們常聽到分散消息佇列(MQ),但我認為這個概念很難理解。
消息暂存的位置是队列。可以将其类比为存放暂时保管的传票的传票盒。
在现实世界中的形象
关于球杆的效果
通过迅速接收和积攒凭证,然后处理,传票箱在MQ中的作用是减少客户的等待时间。由于有MQ存在,客户的等待时间得到了改善,从而提高了效率。
但是也存在缺点。例如,在订购单中有错误的情况。如果有错误的情况,检查可能会被推迟,而与客户确认的流程会变得复杂。通过在前期尽可能地进行错误检查,并通过交换没有错误的信息来提高效率是很重要的。
在Apache Kafka中,消息的发送者被称为”生产者”,临时接收和存储消息的队列被称为”代理”,接收存储的消息的接收者被称为”消费者”。
排队的效果之二 不受接收方条件的影响
关于接到订单的话题,传真可以24小时接收,对吧?虽然订单将在下一个工作日进行,但只需发送发票是非常方便的,不是吗?
MQ也具有这样的效果。即使消费者程序未启动,生产者仍然可以发送消息并将其保存到代理服务器中。
例如,即使消费者处于维护或计划停止状态,仍然可以积累消息,并且一旦消费者启动,就可以从积累的消息中继续读取。
由于不需要停止生产者以满足消费者的需求,因此可继续处理,因此具有非常高的可维护性。
当然,反过来,只停止生产者对消费者不会造成问题。
通过在业务流程中频繁进行排队,可以提高整体效率。
此外,由于其流畅处理消息的特性,也被称为流媒体平台。
MQ和Kafka的区别
到目前为止,这与一般MQ产品相同。Kafka还可以进行消息的长期存储和分布式处理。
“在Kafka中,长期存储队列的机制能够确保在货物发出后将提货单交给财务部门,财务部门在每月的结算日期进行批量处理并生成发票,以可靠地存储长时间的消息。请注意,在Kafka中,即使关闭了经纪人的电源,消息也不会消失,因为它们被保存在存储设备中。”
Kafka可以并行运行多个代理,并将相同的队列分散处理到多个代理中。
简单来说,就是有多个票箱,票据会负载均衡地分散到多个接收者,每个票箱并行处理。
Confluent平台的特点
虽然Apache Kafka非常出色,但实际上构建系统会变得相当困难。
而Confluent Platform则提供了帮助您进行这项艰巨工作的功能。
它主要提供以下三个扩展。
-
- 開発工数とデータアクセスの簡素化
-
- ストリーム処理の向上
- 運用管理性の向上
简化开发工作量和数据访问
可以利用以下组件来简化应用程序开发。
- Kafkaコネクト
实际上,进行从零开始的开发机会很少,往往更多地使用现有数据进行扩展。为了将现有数据转换为Apache Kafka流,需要编写程序。然而,Confluent拥有各种自由转换数据到Kafka流的Kafka连接器。Kafka连接器是一种通过简单的配置进行数据转换的程序,种类超过100种。
例如,您可以从保存在SQL数据库中的记录创建流,将流中的记录注册到SQL服务器中,将Twitter的tweet内容转化为流,或者从系统日志创建流。
- スキーマレジストリ
这是一个管理表,用于管理消息的内部格式。它不仅可以查看每个模式保存了什么内容,还可以进行前向兼容和后向兼容的数据转换,以适应生产者和消费者之间的消息格式版本。
这样一来,就不再需要同时升级双方的版本,可以灵活调整部署的时机。
- kafkaクライアント
Apache Kafka在标准情况下只能使用Java语言。因此,这给程序带来了限制。Kafka客户端支持多种语言,包括C/C++、Python、Go和Microsoft .NET,这样可以通过必要的编程来使用Kafka。虽然有很多开源客户端可供选择,但需要确保它们是否得到维护,否则可能会遇到意想不到的问题和漏洞。由于Confluent公司提供维护,因此可以放心使用。
- RESTプロキシ
这是一个使用REST-API来访问流的接口。通过这个接口,即使是不支持Kafka客户端的程序也可以访问流,实际上可以选择任何编程语言来使用Kafka流处理。
- MQTTプロキシ
可以将从使用IoT设备的MQTT设备发送的数据流化。不需要准备MQTT代理服务器是其特点。
提升流处理效能
我们提供了两种方法,通过快速对接收到的Kafka消息进行初步处理并传递消息,以简化后续程序并减轻负载。
- KSQL
这是一个非常强大的流引擎,可以根据简单的规则对接收到的消息进行信息附加和过滤。
其主要用途包括:
1. 根据ID添加信息(字段)
2. 根据规则过滤消息
3. 删除不必要的信息
※ 虽然带有SQL,但不具备搜索数据库中累积的数据的功能。它会对每条接收到的消息进行处理,并在Kafka流中输出。
- Kafka Stream
您可以使用Java的自定义程序来处理接收到的消息并发送处理后的消息。与KSQL相比,您可以实现更复杂的处理,但缺点是需要编写一个简单的程序。
提高管理水平
- コントロールセンター
Confluent 是一个用于管理整体的GUI界面。它主要被设计用于监控目的,并且可以清晰地显示代理和主题的详细状态。然而,需要注意的是,只有KSQL和Kafka连接器这两个可以进行设置更改的选项,其他的设置更改无法进行自定义。
- レプリケーター
这是一个在多数据中心(多经纪人)环境中获取消息副本的功能。
※ 由于它是为大规模项目设计的,因此在一开始就不会使用它,故省略之。
- オートデータバランサ
当在多数经纪人中形成集群时,当部分消息增多且偏向一方时,此功能旨在将消息在集群内部进行分散,以消除偏差。
※由于该功能仅适用于大规模使用,因此不在一开始就使用它,故省略不提。
- セキュリティコントロール
AD/LDAP 連携是一种安全功能,它可以防止用户发送和接收没有访问权限的消息。
最终
你对Confluent感兴趣了吗?以后我们将会继续分享一些技术方面的内容,希望你能够持续阅读。