KubeMQ简介

news2024/10/7 16:18:46

如今,企业组织之间的竞争是残酷的。每个组织都希望在其系统之间即时、实时或近乎实时地交换信息,以便做出更好、更快的决策。为了使此类信息持续流动,应用程序组件之间的集成需要无缝。为了充分利用云计算的所有优势,如今构建的应用程序需要是云原生的、灵活的、可扩展的,并且可以快速部署。这样的应用程序被拆分为几个称为微服务的小组件。每个微服务都可以独立于其他微服务运行。每个服务都需要有一种方式来相互通信,以便它们可以协同工作。这就是消息代理的用武之地。消息代理是混合环境中的云组件与本地系统之间的通信连接器。

面向企业的完整消息传递解决方案

您可以在具有不同企业云环境的不同域中针对各种业务问题实施消息代理。它们是应用程序间通信的最佳选择,并确保消息(信息数据包)按要求传递。您通常可以在金融交易和支付处理、电子商务订单处理和履行、保护高度敏感数据等中找到消息代理。物联网 (IoT) 的兴起引入了许多产生大量数据的电子设备。在这里,通信发生在机器之间,电子设备相互通信。在这个级别上,消息代理也用于设备之间的实时通信,这对于数据分析和商业智能至关重要,使您能够实时为客户提供服务。

您必须可靠地存储消息并保证消息的传递,以确保应用程序之间的通信正确发生。为此,消息代理使用称为消息队列的组件。我们可以优化消息队列,以对消息进行排序和存储,直到应用程序使用它们。消息队列按传输的确切顺序存储消息,并且它们一直保留在队列中,直到应用程序收到它们。

因此,从根本上说,消息队列用于通过发送和接收消息数据来促进应用程序之间的通信。应用程序收到消息数据后,应用程序将使用它们与数据库、业务逻辑和 Web 浏览器进行交互。消息队列不知道消息数据包中的内容。消息队列是一个可靠且安全的传输层,用于在应用程序之间移动数据。它们使用一堆应用程序编程接口来发送和接收消息数据。这些应用程序编程接口支持所有平台上的 Visual Basic、Java、C、COBOL 等。

KubeMQ 简介

KubeMQ 是一个企业级、实时、高可用、可扩展且安全的消息代理和消息队列,也是 Kubernetes 原生解决方案。该工具也是轻量级的,因此我们可以在一分钟内将 KubeMQ 部署到容器中。KubeMQ 容器大小仅为 30 MB。KubeMQ 是一个 Go 编程语言应用程序。KubeMQ 可以轻松与 Prometheus、Datadog、Zipkin 等第三方工具集成,以及许多其他云原生应用程序。KubeMQ 是支持高效内存使用和低延迟的大容量消息传递的消息队列。消息传递工具还支持多种消息传递模式,例如发布-订阅(又名发布/订阅)、持久队列、基于 CQRS 的 RPC 流。

与 Kafka、RabbitMQ 或 ActiveMQ 相比,该工具是一个相对较新的解决方案。但是在 Kubernetes 方面,KubeMQ 比其他平台有很大的优势。KubeMQ 是一个 Kubernetes 原生消息代理,因此只需一个命令即可将该工具部署在 Kubernetes 集群上,无需任何额外的清单或模板。这是企业组织选择 KubeMQ 的主要原因之一,如果他们的应用程序运行在 Kubernetes 集群上。

如果您是企业组织,则可以使用 KubeMQ 将您的开发和运营工作流程集成到一个统一的系统中,从而节省大量金钱和时间。您也无需成为专家即可使用该工具,因为它使用起来非常简单且对 DevOps 友好。KubeMQ 可帮助您加快开发和生产周期。

KubeMQ 的主要功能

  • 一个用于 Kubernetes 后端的分布式基础架构消息传递平台
  • 超快、小巧、轻量级的 Docker 容器。
  • 消息传递支持至少一次、最多一次且恰好一次的传递模型。
  • 支持基于 FIFO 的持久队列、RPC 命令、具有持久性的发布-订阅(事件存储)、发布-订阅事件和查询消息传递模式。
  • 支持 WebSocket 传输协议、REST 和 gRPC,支持 TLS。
  • 内置跟踪、指标和缓存。
  • 该工具提供了一个流畅的监控仪表板。
  • 提供 Go、Java、Python、C#、PHP、Ruby、Node、jQuery 和 cURL 的 SDK。
  • 不需要消息代理配置。

KubeMQ 的优缺点

优点:

  • KubeMQ 创始人团队由一群 IT 资深人士组成,在开发强大且可扩展的技术方面拥有 20 多年的经验。
  • KubeMQ 现在在生产环境中实时支持数十亿条消息。
  • 与金融、医疗保健、电子商务、电信和网络系统轻松集成。
  • 加快您的开发和生产周期。
  • 为组织节省了大量运营成本。
  • 支持一组丰富的连接器来连接微服务。

缺点:

  • 在与 SQL 系统集成时存在一些限制。
  • NodeJs 的 SDK 很难遵循。
  • 目前还没有官方的 KubeMQ 社区。
  • 尚不存在对 C# 客户端库的跟踪支持。

解决方案用例和注意事项

由于 KubeMQ 是一个 Kubernetes 原生解决方案,因此该工具有几个地方真正闪耀,也有几个方面可能和将会出现挑战。在大多数复杂的架构设计中,对于任何关键解决方案组件,都没有灵丹妙药,也没有万能的答案,KubeMQ 也不例外。

优点

  • 这个工具很容易与依赖它的 Kuberntes 工作负载一起部署,使 KubeMQ 从本地开发到生产的整个过程中都很容易使用。
  • 作为 Kubernetes 工作负载本身,该工具非常适合您希望在不同云提供商之间或云与本地之间提供一致的消息传递/队列解决方案的情况。
  • KubeMQ 解决了许多消息传递需求,使其成为一个可以代替其他几个解决方案的单一解决方案。对于方案一,如果您需要发布/订阅、工作线程消息队列和流式队列,以便单独跟踪生产者和使用者。场景二,在 AWS 中,您可能需要将 SQS、SNS 和 Managed Streaming for Kafka 用作离散服务。KubeMQ 可以做到这一切。

缺点

  • 默认情况下,Kubernetes 不一定能为你提供一个很好的基础设施环境来运行 KubeMQ 可以支持的所有用例。一些 KubeMQ 使用案例需要高速本地存储才能获得良好的吞吐量,如果您将其放入 AWS 中的典型 EKS 集群中,您可能会发现 gp2(或 gp3)EBS 存储的组合不足以满足您的流工作负载来处理您的创建者卷。您可能还会发现,您没有小型通用工作线程节点实例所需的网络吞吐量,无法限制流量。您可能需要拥有具有本地 NVMe 和高速网络的特殊工作节点,然后进行高级设置以确保 KubeMQ 仅在那里运行并专门使用这些高速卷。
  • 虽然 KubeMQ 解决了许多用例,但它可能不是最适合、最快或最具可扩展性的选项。对于纯工作线程队列使用案例,您只需插入 AWS SQS 之类的工具,即可支持大规模扩展,而无需思考、工作或规划。对于具有 AWS SNS 等选项的大规模发布/订阅,情况类似。
  • 增加 基于 Kubernetes 的解决方案(如 KubeMQ)的运营开销与管理专用 VM 的负担几乎不同(假设您现在已经在管理 Kubernetes 基础架构)。但是,总的来说,与主要云提供商提供的同等托管服务相比,它仍然需要更多的管理和运营开销。特别是如果您花费大量时间对其进行优化以满足您的扩展目标。

由您来决定灵活性的优势是否超过运营开销的优势,有时诸如多云要求(以及因此需要配置/支持来自不同提供商的不同托管服务)或需要支持在云和本地运行工作负载等因素将有助于明确哪种架构适合您。

结论

在这种数字化工作中,软件开发人员经常面临在应用程序/服务之间发送和接收消息数据的问题。在开发此类工具之前,开发人员使用端点进行通信和消息交换,但现在您有了消息代理和消息队列。这些是企业组织用于在应用程序/服务之间进行通信的现代、可靠和安全的方式。由于 KubeMQ 是 Kubernetes 原生的,因此该工具非常适合作为 Kubernetes 集群上的消息传递系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1433384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双非本科准备秋招(16.1)—— 力扣二叉树

1、101. 对称二叉树 检查是否对称,其实就是检查左节点等不等于右节点,我们可以用递归来做。 如果左右节点都为null,说明肯定对称呀,返回true。 如果一个为null一个不为null,或者左右的值不相等,则为false。…

k8s-深入理解Service(为Pod提供负载均衡和发现)

一、Service存在的意义 二、Service的定义和创建 Pod与Service的关系 Service的定义和创建 三、Service使用NodePort对外暴露应用 四种类型,常用的三种: 指定Service的NodePort端口 在实际生产中,k8s的集群不会直接暴露在公网中&#xff0c…

free5GC+UERANSIM

使用arp、ifconfig、docker inspect及网桥brctl 相关命令,收集容器IP及Mac地址相关信息,可以梳理出UERANSIMfree5GC模拟环境组网,如下图所示: 如上图所示:环境基于ubuntu 18.04 VMware虚机部署,5GC网元分别…

【Redis】字符串原理--简单动态字符串SDS

一.SDS定义 free 属性值为0,标识SDS没有分配任何未使用空间。len 属性值为5,标识SDS保存了一个5字节长度的字符串。buf 属性是一个char类型数组,数组的前5个字节保存了,R e d i s 五个字符,最后一个保存空字符串 \0…

uniapp android和微信小程序实现PDF在线预览

在使用uniapp开发移动端时,微信开发者工具里webview能正常打开后端接口返回的pdf文件流。正式发布后,在配置了业务域名和服务器域名的前提下,预览pdf文件却只能看到白屏,因此我猜测微信小程序不能通过webview读取文件流。这个想法…

Leetcode—32. 最长有效括号【困难】(动态规划及ranges::max()使用)

2024每日刷题&#xff08;110&#xff09; Leetcode—32. 最长有效括号 栈实现代码 class Solution { public:int longestValidParentheses(string s) {stack<int> st;st.push(-1);int n s.size();int maxn 0;for(int i 0; i < n; i) {if(s[i] () {st.push(i);}…

vulnhub靶场之Thales

一.环境搭建 1.靶场描述 Description : Open your eyes and change your perspective includes 2 flags:user.txt and root.txt. Telegram: machineboy141 (for any hint) This works better with VIrtualBox rathe than VMware 2.靶场地址 https://www.vulnhub.com/entry/t…

platform tree架构下i2c应用实例(HS3003)

目录 概述 1 探究platform tree下的i2c 1.1 platform tree下的i2c驱动 1.2 查看i2c总线下的设备 1.3 使用命令读写设备寄存器 2 认识HS3003 2.1 HS3003特性 2.2 HS3003寄存器 2.2.1 温湿度数据寄存器 2.2.2 参数寄存器 2.2.3 一个参数配置Demo 2.3 温湿度值转换 2.…

ubuntu22.04 经常死机,鼠标,键盘无响应

一、现象说明 1. 开机一小时后&#xff0c;突然之间网络掉线&#xff0c;鼠标、键盘无反应。 2.强制重启后&#xff0c;恢复正常。 3.多次重复出现该问题。 二、环境说明&#xff1a;内核、显卡 三、异常日志&#xff1a; /var/log/syslog: 四、问题解答&#xff1a; 1.…

Linux 路由配置与使用

概念 路由信息用于指导数据包从源地址查找到目的地址传输路径的信息&#xff1b; 路由分类 根据路由信息的来源分为静态路由和动态路由 静态路由 由管理员手动配置的路由表项信息&#xff0c;根据路由形式的不同&#xff0c;静态路由又可细分为&#xff1a; 直连路由&#xf…

asp.net core 依赖注入 实例化对象实例

在面向对象编程中&#xff0c;推荐使用面向接口编程&#xff0c;这样我们的代码就依赖于服务接口&#xff0c;而不是依赖于实现类&#xff0c;可以实现代码解耦。 名称解释&#xff1a; 我们把负责提供对象的注册和 获取功能的框架叫作“容器”&#xff0c; 注册到容器中的对象…

java设计模式:观察者模式

在平常的开发工作中&#xff0c;经常会使用到设计模式。合理的使用设计模式&#xff0c;可以提高开发效率、提高代码质量、提高代码的可拓展性和维护性。今天来聊聊观察者模式。 观察者模式是一种行为型设计模式&#xff0c;用于对象之间一对多的依赖关系&#xff0c;当被观察对…

vue前端+nodejs后端通信-简单demo

本文记录vue前端nodejs后端通讯最简单的方法&#xff0c;供广大网友最快速进入全栈开发。 技术架构 前端 vue axios 后端 nodejs express 一、前端部分-搭建VUE 项目 vue create Vnodenpm run serve 启动&#xff1b; 具体操作步骤&#xff0c;请自行百度&#xff0c;这里没…

MySQL-----约束

目录​​​​​ 约束 一 主键约束 1-1 操作-添加单列主键 1-2 操作-添加多列主键 1-3 修改表结构添加主键 1-4 删除主键约束 二 自增长约束 2-1 指定自增长字段的初始值 2-2 删除自增列 三 非空约束 3-1 创建非空约束 3-2 删除非空约束 四 唯一约束…

算法学习——华为机考题库10(HJ64 - HJ69)

算法学习——华为机考题库10&#xff08;HJ64 - HJ69&#xff09; HJ64 MP3光标位置 描述 MP3 Player因为屏幕较小&#xff0c;显示歌曲列表的时候每屏只能显示几首歌曲&#xff0c;用户要通过上下键才能浏览所有的歌曲。为了简化处理&#xff0c;假设每屏只能显示4首歌曲&a…

ffmpeg的使用,安装,抽帧,加水印,截图,生成gif,格式转换,抓屏等

实际使用中总结的关于ffmpeg对视频的处理的记录文档 具体信息&#xff1a; http://ffmpeg.org/download.html 官网下载ffmpeg 关于ffmpeg的安装详细步骤和说明 装ffmpeg 方式,Linux和windows下的 http://bbs.csdn.net/topics/390519382 php 调用ffmpeg , http://bbs.csdn.net/t…

『 C++ - Hash 』闭散列与开散列哈希表详解及其实现 ( 万字 )

文章目录 &#x1f47e; 哈希表概念&#x1f47e; 常见哈希函数&#x1f38f; 直接定址法&#x1f38f; 除留余数法 &#x1f47e; 哈希冲突的解决方案&#x1f38f; 闭散列与闭散列哈希表的实现&#x1f390; 闭散列哈希表的节点设置与基本架构&#x1f390; 闭散列哈希表的插…

【Linux系统 01】Vim工具

目录 一、Vim概述 1. 文件打开方式 2. 模式切换 二、命令模式 1. 移动与跳转 2. 复制与粘贴 3. 剪切与撤销 三、编辑模式 1. 插入 2. 替换 四、末行模式 1. 保存与退出 2. 查找与替换 3. 分屏显示 4. 命令执行 一、Vim概述 1. 文件打开方式 vim 文件路径&#…

jmeter设置关联

一、为什么要设置关联&#xff1f; http协议本身是无状态的&#xff0c;客户端只需要简单向服务器请求下载某些文件&#xff0c;无论是客户端还是服务端都不去记录彼此过去的行为&#xff0c;每一次请求之间都是独立的。如果jmeter需要设置跨线程组脚本&#xff0c;就必须设置…

【代码随想录-哈希表】有效的字母异位词

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…