Kafka基本概念:实时异步流解决方案

x33g5p2x  于2020-12-20 发布在 Kafka  
字(1.7k)|赞(0)|评价(0)|浏览(699)

随着使用微服务架构创建架构模式,每个服务进行通信的结构比以前更加复杂。这种复杂的数据传输结构带来了部署困难和障碍。另外,当发送数据时,存在协议的分段变得严重的问题。

Apache Kafka是由Linked In开发的用于解决此问题的开放源代码,旨在减弱源应用程序与目标应用程序之间的耦合,并充当应用程序的中枢神经。

下图显示了开发Kafka之前LinkedIn的数据处理系统。

它具有一个架构流程图,乍一看。先前的方法是端到端方法。换句话说,这是一种直接从端点向端点传输数据的方法,而不是通过中间的任何消息传递队列进行传递的方法。此方法的优点是 传输速度快,并且具有能够快速查看传输结果的优点。但是,由于微服务之间的耦合是令人愉快的,因此很难进行扩展和抵抗故障。例如,假设在上面的架构流程图中添加了一个新的Web服务器。添加一台Web服务器并不能简单地添加一台,但是由于要链接的系统更多,因此大大增加了额外的工作。并且,如果响应是由于一对一通信的服务器A出现问题而延迟的,则可能存在一个问题,即由于链式操作,连接到服务器A的其他微服务会出现延迟。

为了解决这个问题,LinkedIn开发了Kafka来降低微服务之间的耦合并集中化数据,并于2011年初以开源的形式向全世界发布。

Kafka基本上是一个消息传递系统。消息传递系统不是上面的端到端方法,而是发送消息的发布者(或生产者)将数据存储在称为Kafka主题的消息存储中的消息,以及获取消息的一方称为订户(或消费者)所需的对话选择的数据。它讨论了采用表格的系统。 换句话说,它被称为发布/发布/订阅模型,用于以与中心的消息传递系统服务器发送和接收消息的形式进行通信。

应用Kafka的架构流程图中的内容

当应用应用发布/订阅模型的体系结构流程图时,与上述端到端方法不同,由于每个微服务都以消息传递系统为中心进行连接,因此易于扩展,并且服务被延迟或无法接收。即使处于状态,只要消息传递系统处于活动状态, 从生产者传递来的消息也不会丢失,因此它具有能够在恢复服务时随时接收消息的优点。 但是,由于所有技术都无法发挥其优势,因此存在一个缺点,即与端到端方法相比,速度较慢,这是因为数据不是直接在服务之间传输的,并且代码变得更加复杂,以验证消息是否正确传递。

Kafka是目前最有趣的技术之一。从下面的堆栈溢出中越来越多的问题中可以看出,它一直在上升,并且许多IT公司(例如Netflix,Airbnb,Microsoft,Kakao和Naver)正在逐渐采用Kafka。

这种集中式消息传递系统无疑是有吸引力的,但是Kafka并不是第一个消息传递系统。不过,您为什么对Kafka如此热情?

Kafka与以前的消息传递系统有几个区别。

1.高性能

传统消息传递系统主要用于将简单事件发送到服务器。由于准确地管理消息传递系统的负载以及每个使用者的队列一致性和传递结果的过程变得非常复杂,因此开发该过程时着重于可靠性,而对速度和容量的关注却很少。

Kafka最大限度地分离了角色,以克服这些消息传递系统的性能限制。换句话说,对消息交换传递的可靠性的管理移交给了每个生产者和消费者,并且通过允许消费者也创建重型交换功能,大大减少了消息传递系统内的工作量。通过将节省下来的费用集中在消息传递性能上,我们创建了一个高性能的消息传递系统。

2.磁盘存储

Kafka与传统消息传递系统相比,最独特的功能是 它可以在磁盘上存储和维护消息 。在传统的消息传递系统中,当使用者阅读消息时,该消息将从队列中删除。但是,在Kafka中,即使使用者阅读了该消息,该消息也会在磁盘上存储预定的存储时间。因此,即使由于流量增加而暂时延迟了使用者的处理,或者由于故障而中断了服务,消息仍存储在Kafka的磁盘上,因此使用者可以无损失地获得消息。

3.可扩展性

Kafka非常容易扩展。Kafka群集可以在不中断服务的情况下联机工作,并且根据流量和使用情况扩展群集非常麻烦。

因此,通过集中化以前分散在多个地方的零散数据,诸如大数据分析和机器学习之类的实时数据已成为重要领域中非常重要的因素。在接下来的文章中,可以在分布式应用程序。

相关文章

微信公众号

最新文章

更多