嘉宾文章最初由Oz Golan在KubeMQ发表
https://kubemq.io/kubernetes-message-queue/
背景
大多数企业正在采用Kubernetes,因为它提供了无穷无尽的好处。用于容器的无缝管理;它提供了高可伸缩性并增强了通信/消息传递。它还允许在构建微服务时添加许多应用程序。这意味着随着项目的扩展,企业可以轻松地做出很多改变。
在Kubernetes精心设计的微服务体系结构中,存在着大量的信息流。在部署Kubernetes之前,如何有效地管理系统中的大流量是企业面临的主要挑战。这意味着支持生产环境所需的操作和架构需求获得了重要的关注。在新的微服务中,每个数据模型与系统的其余部分分离。但一个项目可以发展成数千个微服务,这意味着每天的消息流量将增长到数百万条消息。因此,为了在微服务之间实现有效的消息传递系统,必须采用健壮的通信机制。
一些企业试图使用点到点连接系统(如REST)来解决Kubernetes中的这种通信差距。然而,REST可能会在服务的消息传递结构中产生限制和其他复杂性。如果没有合适的消息传递解决方案,那么每次需求更改时都需要进行维护。进行频繁的维护是昂贵、耗时和不可靠的。REST不能解决这个问题,因为它有许多限制。
为了解决微服务体系结构和Kubernetes中的问题,必须部署消息队列系统进行有效管理。消息传递队列系统重新构建堆栈并部署单个通信焦点以实现更好的通信。这确保每个服务都用自己的语言与消息队列代理通信。然后,消息队列系统将消息传递给等待它的服务。
构建管理良好的消息传递解决方案
如果消息传递系统不是Kubernetes原生的,那么它就不可能有效。企业必须确保在构建消息队列系统时,Kubernetes能够利用这些优势。
优点是:
消息队列在混合云解决方案中的优势
在混合云服务上部署企业解决方案提供了灵活性、控制、速度、敏捷性、低成本和全面控制。它还确保企业可以同时使用本地云服务和公共云服务。随着成本和工作负载需求的变化,从一个解决方案迁移到另一个的灵活性是一个很大的好处。使用混合解决方案,企业可以将敏感的应用程序和工作负载托管在私有云解决方案上,而次要/不太重要的工作负载则托管在公共云解决方案上。此外,使用私有云服务的组织仅为其使用的资源付费。这些资源可以在需要时按比例增加或减少。要使混合云有效、透明、无缝连接和交互,消息队列必须部署在Kubernetes中。
用例
消息队列支持多样化的消息传递模式;它确保了灵活性,并可以创建广泛的用例。Kubernetes中消息队列最常见的用例是:
多级流水线
当需要以协调的方式处理消息时,可实现和使用同步模式。多级流水线方法允许在不同服务之间按顺序处理消息。多级流水线方法也处理无法处理的消息。它通过采用死信队列机制来实现这一点,死信队列机制接受未处理的消息并以预定义的方式处理它。在一个多阶段的流水线系统中,每个服务被认为是一个单独的阶段,消息在序列中的所有阶段之间传递。
消息流
当需要从大数据、物联网等多个数据源进行数据流时,将采用异步模式。这意味着大数据是在专用服务中处理的,比如流水线、数据库、存储、机器学习和许多其他方法。这是一个有效的机制,将许多生产者聚集到一个更小的消费者单元。使用这种方法,可以保证消息的交付。
实时发布/订阅
当数量较少的生产者需要向数量较多的消费者发送消息时,就会应用此方法。行为类似发布者的服务将向通道发送消息。订阅者将通过该通道实时接收消息。这就像有线电视向世界各地的用户发送内容一样。
应用解耦
连接解决方案(如应用程序编程接口、数据库和存储设备)将充当路由器,向使用者发送消息。这意味着它们彼此连接,并在它们之间分发信息,将统一的数据发送给最终用户
易用性
微服务架构节省时间和金钱,而且超级容易使用。它无缝地统一了操作流程和开发,从而节省了大量的成本。易用性还确保了不需要专门的IT专家。微服务确保高效的内存使用、低延迟、基本模式和对高容量消息传递的支持。它不会影响实时发布/订阅、请求/回复和队列。
逐渐迁移到Kubernetes
迁移到Kubernetes必须逐步进行,以保持数据的连续性并确保业务的可操作性。要实现这个,Kubernetes消息队列必须与新旧系统无缝连接。连接性确保迁移是在不停机的情况下一步一步地创建新服务的过程中进行的。