云原生正在彻底改变应用程序和服务的交付方式,云原生计算基金会(CNCF)在推动行业内的标准化和供应商中立解决方案方面做得很好。在最近的一篇文章中,我们从上到下探索了CNCF的云原生工具格局。我们在那里讨论的工具和技术将在未来几年塑造云原生的面貌。
云原生流媒体和消息服务是该领域最重要的方面之一。这些服务充当云原生的中间件。作为“云原生的中间件”,它们使微服务能够在保持松散耦合和轻量级的情况下进行通信。在这篇文章中,我们将定义云原生消息传递和流媒体,探索它们的用例,并讨论当今可用的一些流行的流媒体和消息传递应用程序。
在我们构建云原生流之前,让我们先解释一下云原生消息传递。云原生消息传递是一种通信模型,可在微服务之间实现基于异步推送的通信。
正如您所预料的那样,一旦深入了解具体细节,消息传递就会变得相当复杂,但让我们从基础开始。
在高层次上,使用消息服务发送信息包含3个关键组件:
这看起来很简单,但是代理如何确定应将哪些消息路由到特定的消费者?实现各不相同,这就是大部分复杂性所在。消息传递的发布/订阅方法在云原生中广泛使用,以概念化该过程。消息按“主题”排序。生产者(发布者)然后将消息发送到特定主题,代理将它们路由到订阅该主题的消费者(订阅者)。
刚接触云原生消息传递的人常问的一个问题是“HTTP和RESTfulAPI无处不在,我为什么要使用消息传递服务?”?简短的回答是,消息传递支持微服务之间的轻量级、可扩展、事件驱动的通信。要了解原因,让我们来看看一些具体的好处。
当然,这并不是说我们应该取消RESTfulAPI。这里的要点是了解适合这项工作的正确工具。
与HTTP(S)获胜的API空间不同,云原生应用程序没有单一的“消息传递协议”。了解哪种协议对您的应用程序有意义需要了解不同的选项,所以让我们来看看三种最常见的消息传递协议并探索它们的用例。
AMQP(AdvancedMessageQueuingProtocol)是当今最流行的云原生消息协议,几乎已经成为事实上的标准。AMQP具有高度可扩展性,如几个真实世界的用例所证明,包括NASA的Nebula云计算服务和JPMorganChase,据报道AMQP每天发送10亿条消息。除了可扩展性之外,AMQP还支持对消息路由进行精细控制,并具有强大的功能集。如果您需要支持复杂的路由和消息传递或超可扩展性,AMQP可能是正确的选择。

STOMP(简单/流式文本导向消息传递协议)是AMQP和MQTT的一种转变。STOMP是本着HTTP的精神设计的:一种基于文本的协议(AMQP和MQTT都是二进制的),易于在客户端实现并支持跨语言和平台的互操作性。除了作为其他消息传递协议的简单、基于文本的替代方案之外,STOMP还具有许多新颖的用例。
云原生流是对连续数据流的处理,常用于海量数据。作为一个粗略的类比,流式传输之于消息传递就像NoSQL之于关系数据库。云原生流式传输与云原生消息传递有许多相似之处,并且许多操作方面都是相同的。流式传输是异步的,有消费者和生产者,并使用带有“主题”的发布/订阅模型。
那么,云原生流媒体和消息传递之间有什么区别?
有了这个定义,流媒体的一些好处可能会变得清晰起来。与消息传递相比,流式传输的优势包括:
鉴于这些好处,很容易理解为什么流式处理在大数据分析和高性能计算领域得到了广泛采用。
流行的云原生流媒体和消息服务
了解什么是云原生流媒体和消息传递后,让我们来看看在现实世界中用于实现它们的一些软件。
NATS是CNCF孵化的开源消息代理,其人气正在飙升。正如凯文霍夫曼在他的CapitalOneTechMedium帖子中所描述的那样,NATS在云原生消息传递世界中占据了一个独特的位置。它为开发人员提供了一种轻量级、简单且基于文本的消息传递方法。它使用传统的发布/订阅方法进行消息传递,提供请求/回复机制。除了启用简单的部署模型外,NATS还拥有比消息和流媒体领域的许多知名公司(包括Kafka和Redis)更高的代理吞吐量。
RabbitMQ是一种开源消息代理,支持AMQP、MQTT、STOMP以及HTTP和WebSockets(虽然HTTP并不是真正的消息传递协议,但存在用于浏览器集成和低容量消息传递的用例)。RabbitMQ是业内部署最广泛、最值得信赖的代理之一,被小型和大型企业所采用。
除了作为一个成熟、可扩展且可靠的平台之外,RabittMQ还具有许多使其对云原生用例具有吸引力的特性。可以使用Chef和Puppet等编排工具部署RabittMQ。此外,它支持多种语言,包括Java、Python、Go和.NET,并且集群和联合支持跨多个区域的分布式、高可用性(HA)部署。
近年来,ApacheKafka的人气飙升。虽然它最初是作为一种消息服务(并且今天仍然支持“传统”消息),但它已经发展成为一种强大的云原生流服务,能够每秒处理数百万个事件。Kafka在云原生领域的常见用例包括日志聚合(想想Hadoop和其他高度分布式文件系统)和流处理。
从容器化和微服务到分布式数据库,云原生正在改变软件工程的完成方式。为了保持竞争力,应用程序开发人员必须了解如何设计健壮、有弹性的分布式服务。通过使微服务能够以松散耦合和轻量级的方式进行通信,流式传输和消息传递是实现这一目标的重要部分。
本文来源:国外服务器--什么是云原生消息传递和云原生流媒体(什么是云原生技术)
本文地址:https://www.idcbaba.com/guowai/3072.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



