当前位置: 首页 > news >正文

消息队列技术的发展历史

在这里插入图片描述

消息队列技术的演进历程宛如一幅波澜壮阔的科技画卷,历经多个标志性阶段,各阶段紧密贴合不同的技术需求与市场风向,下面为您详细道来。

第一阶段:消息中间件的起源(1970 年代末期 - 1980 年代中期)

在计算机发展的早期,硬件资源极度匮乏,运算能力和存储容量都极为受限。1970 年代末期,消息队列技术悄然萌芽,最初聚焦于管理主机之间的打印作业。彼时,大型企业办公场景下,仅有的几台大型主机承担着核心运算任务,打印机作为稀缺资源,众多部门员工的打印请求若无序涌入,极易引发混乱。早期的消息队列机制恰似一位有条不紊的调度员,将不同用户的打印请求依次排队,有序输送给打印机,保障打印流程顺畅无阻。

到了 1980 年代初期至中期,随着计算机网络逐步搭建,分布式系统概念崭露头角,消息队列技术顺势拓展,成为分布式系统里不可或缺的标准组件。以企业内部电子邮件系统为例,当时网络带宽狭窄,服务器性能欠佳,Sendmail 这类邮件传输代理借助简单的消息队列机制,把用户撰写好的邮件先排入队列等待,再按序逐个发送,有效避免因大量并发发送请求致使系统崩溃,让邮件传输更趋稳定、有序。

第二阶段:消息代理的演进(1980 年代后期 - 2000 年代初期)

自 1980 年代后期起,企业数字化转型加速,业务复杂度与数据量呈指数级攀升,简单的消息排队机制已难以满足精细化运作需求,消息队列由此开启向功能丰富的消息代理的进阶之旅,这一进程贯穿 2000 年代初期。

在企业级应用领域,伴随企业规模扩张,部门间数据交互愈发频繁复杂。传统制造业的供应链管理系统便是典型例证,采购、生产、销售部门的数据需实时共享协同。TIBCO Rendezvous 这款消息代理软件大放异彩,凭借可靠的消息持久化功能,生产订单数据从销售端传来后,即便系统遭遇短暂故障,TIBCO Rendezvous 也能将数据持久存储,保障生产流程无缝衔接。

金融行业也不例外,银行转账汇款业务每日需处理海量交易信息。IBM MQ 作为经典消息代理解决方案,具备强大的消息路由与过滤能力,不同分行、不同业务类型的交易请求进入 IBM MQ 后,能依据预设规则精准路由至对应处理模块,同时剔除无效或重复请求,显著提升业务处理效率与精准度。

航空业票务预订系统同样受益,BEA WebLogic JMS 发挥关键作用。彼时全球航空客流量攀升,票务预订系统面临高并发的预订、改签、退票请求,BEA WebLogic JMS 通过成熟的发布/订阅模型,及时推送票务信息更新至售票终端、线上平台及合作伙伴,确保票务数据实时性与一致性,满足乘客购票需求。

示例代码如下,用 Java 和 IBM MQ 实现简单消息发送:

import com.ibm.mq.MQException;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;public class Main {public static void main(String[] args) {try {MQQueueManager qmgr = new MQQueueManager("QMGR_NAME");int openOptions = MQC.MQOO_OUTPUT;MQQueue queue = qmgr.accessQueue("QUEUE_NAME", openOptions);MQMessage message = new MQMessage();message.writeUTF("Sample transaction message");MQPutMessageOptions pmo = new MQPutMessageOptions();queue.put(message, pmo);queue.close();qmgr.disconnect();} catch (MQException | java.io.IOException e) {e.printStackTrace();}}
}

此阶段的消息代理软件,为后续进阶技术筑牢根基,凸显消息队列在复杂业务场景下解耦、增效与保障可靠性的巨大潜力。

第三阶段:事件流平台的发展(2000 年代中期 - 2010 年代中期)

步入 2000 年代中期,大数据与物联网技术蓬勃兴起,事件驱动架构渐成热门趋势,消息队列加速演变为事件流平台,这一变革延续至 2010 年代中期。

在物联网场景里,智慧城市建设催生海量传感器数据处理需求。城市环境监测系统中,遍布角落的温度、湿度、空气质量传感器持续产出海量数据。Apache Kafka 凭借卓越的分布式架构与高吞吐量特性,成为处理这类数据流的利器。它一边持久化存储传感器数据,构建庞大数据湖,供后续环境趋势研究;一边实时监测,遇空气质量超标等异常,即刻触发预警通知相关部门,实现实时感知与响应。

Apache Flink 与 Kafka 相得益彰,专注流计算。实时广告投放场景下,广告平台需依据用户实时浏览、位置信息快速决策。Flink 从 Kafka 获取实时用户行为数据流,运用窗口聚合、实时机器学习模型算出匹配广告,提升广告转化率。

这一时期,ZeroMQ 也崭露头角,它主打轻量级、高性能的消息传递,更聚焦于底层网络通信优化。在一些对延迟要求严苛的高频交易场景中,每毫秒的延迟都关乎巨大收益,ZeroMQ 能够通过精简协议、高效的内存管理,快速在交易系统各组件间传递买卖指令,减少网络开销,保障交易速度。与其他消息队列不同,它不需要专门的消息代理服务器,直接基于点对点或发布/订阅模式进行通信,降低部署复杂度。

RabbitMQ 和 ActiveMQ 同样持续进化,融入事件流处理特性。电商物流信息追踪场景里,RabbitMQ 在原有可靠传递基础上,支持简单流式数据处理,对包裹运输状态消息筛选聚合,为用户展示清晰物流进度。ActiveMQ 在企业系统监控场景发力,接收各业务系统日志当作事件流,依规则定位异常模块,辅助运维排查故障。

第四阶段:多合一解决方案(2010 年代后期至今)

2010 年代后期,数字化转型全面深入,企业对数据处理与管理服务要求愈发精细多元,消息队列与事件流平台深度融合,催生多合一解决方案。

金融风控系统是典型应用场景,对数据精准度、实时性、完整性要求极高。阿里云的 RocketMQ 脱颖而出,整合众多功能,交易流水入系统,内置规则引擎速标可疑交易;流式处理监控交易趋势,捕捉异常资金流向;持久化存储长期交易数据,深挖潜在风险;分布式存储保障多节点冗余,守护金融稳定。

腾讯云的 CMQ 在游戏行业表现出色。游戏运营涉及海量玩家登录、充值、道具使用消息,CMQ 高效传递之余,提供可视化监控工具,运营团队据此实时调控参数,从容应对游戏高峰流量,保障玩家流畅体验。

内在推动力
  • 系统耦合性高:传统同步调用让企业级应用系统脆弱不堪,如传统制造业 ERP 系统,生产、采购、销售模块紧密耦合,一处故障便致流程停滞,促使企业寻求解耦工具,消息队列应运而生。
  • 性能瓶颈:高并发互联网场景尽显同步调用弊端,热门直播带货时,大量下单请求同步处理,数据库不堪重负,页面响应延迟,异步消息队列可排队处理请求,缓解压力、提速响应。
  • 可靠性问题:远程数据传输场景常遇网络不稳,石油勘探队偏远地区传地质数据,同步调用易丢数据,消息队列的多副本存储、重试策略确保数据完整送达。
  • 功能需求:电商业务创新催生特殊功能诉求,拼团活动需延迟消息提醒未成团用户,跨境电商资金结算靠事务消息保障流转无误,生鲜电商依顺序消息维持订单处理秩序。
  • 场景需求:股票交易市场实时性要求苛刻,每秒价格波动关乎巨额财富,需毫秒级响应;大数据分析场景海量日志涌入,要求消息队列强吞吐能力,不同场景倒逼技术升级。
  • 分布式集群的支持:企业从单体架构迈向微服务集群,跨国电商全球部署服务节点,消息队列需适配分布式架构,保障全球节点间消息畅达。
现代发展

近年来,云计算和微服务架构风靡,为消息队列技术注入新活力。构建云原生分布式系统时,消息队列是关键拼图。电商平台微服务化后,商品、订单、用户服务等需交互协作,消息队列搭建异步通信桥梁,削峰填谷,保障系统弹性。

在云计算环境里,AWS 的 SQS、阿里云的 RocketMQ 等深受青睐,植入各类云原生项目。业界 MQ 朝融合实时消息与流消息架构迈进,Kafka 持续优化流处理能力;Serverless 模式让开发者摆脱繁琐运维,聚焦业务逻辑;Event 驱动适配多元事件源;协议兼容助力不同系统无缝接入,全方位解锁计算、存储弹性,迈向集群的 Serverless 化,巩固消息队列核心地位。

总结而言,消息队列技术随软件架构复杂度攀升、系统交互频次激增、数据量膨胀持续革新,其系统解耦、异步处理、流量削峰、可靠传输的核心价值,引领它从简易通信手段蜕变成为现代分布式系统的关键支柱。

相关文章:

消息队列技术的发展历史

消息队列技术的演进历程宛如一幅波澜壮阔的科技画卷,历经多个标志性阶段,各阶段紧密贴合不同的技术需求与市场风向,下面为您详细道来。 第一阶段:消息中间件的起源(1970 年代末期 - 1980 年代中期) 在计算…...

20.抽卡只有金,带保底(WPF) C#

这是一个界面应用化后的抽卡,目前只能抽金,只有基础概率加保底概率 适合界面化应用初学者。 这是展示图: 使用的是WPF不是winform,我也是第一次做WPF内容,就可以试一试,代码都在这里了,简单来…...

DALFox-一款XSS自动化扫描工具

声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 目录标题 一、介绍及使用启动及使用1. 单个扫描2. 多个扫描3. 文件扫描…...

软件测试之压力测试【详解】

压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…...

电视大全 1.3.8|汇聚多频道资源,秒切换流畅播放

电视大全TV版是一款功能丰富的TV端直播软件,由悠兔电视的同一开发者打造。最新版本更新了更多频道,包括央视、卫视和地方频道等,提供了多线路流畅播放体验,并支持节目回看、线路选择、开机自启等功能。该应用免登录且无购物频道&a…...

MaxKB基于大语言模型和 RAG的开源知识库问答系统的快速部署教程

1 部署要求 1.1 服务器配置 部署服务器要求: 操作系统:Ubuntu 22.04 / CentOS 7.6 64 位系统CPU/内存:4C/8GB 以上磁盘空间:100GB 1.2 端口要求 在线部署MaxKB需要开通的访问端口说明如下: 端口作用说明22SSH安装…...

大恒相机开发(3)—大恒相机工业检测的实际案例

大恒相机工业检测的实际案例 工业检测的实际案例图像采集性能优化技巧工业环境下的稳定性 工业检测的实际案例 以下是一些使用大恒相机进行工业检测的实际案例: 多特征光学成像系统: 在这个案例中,使用大恒相机构建了一个全方位、多特征的图…...

《Java 与 OpenAI 协同:开启智能编程新范式》

在当今科技飞速发展的时代,人工智能已成为推动各领域创新变革的核心力量。OpenAI 作为人工智能领域的领军者,其开发的一系列强大模型,如 GPT 系列,为自然语言处理等诸多任务带来了前所未有的突破。而 Java,作为一种广泛…...

HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别

在智能手机、平板和其他智能设备日益智能化的今天,视觉识别技术成为提升用户体验和智能交互的重要手段。HarmonyOS NEXT通过基础视觉服务(HMS Core Vision)提供了一套强大的视觉识别功能,其中多目标识别作为其关键技术之一&#x…...

MySQL体系架构

MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。 网络连接层 客户端连接器(Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主 流的服务端编程技术,例如常见的 Java、C、Python、.…...

如何学习Trustzone

阅读官方文档 ARM 官方文档是学习 Trustzone 最权威的资料来源。例如,ARM Architecture Reference Manual 中详细介绍了 Trustzone 的架构原理、寄存器定义和操作模式等内容。这些文档虽然比较复杂,但能够提供最准确的技术细节,适合在学习过…...

【视觉SLAM:Panoptic FPN全景分割网络】

Panoptic FPN是一种全景分割(Panoptic Segmentation)的经典网络,最早由 Kirillov 等人在 2019 年提出。全景分割是一种统一的视觉任务,结合了实例分割(Instance Segmentation)和语义分割(Semant…...

【Linux】数据呈现

一、数据的输入与输出 1、标准文件描述符 Linux系统会将每个对象都当做文件来处理,包括输入和输出。它用文件描述符来标识每个文件对象。 文件描述符是一个非负整数,唯一会标识的是会话中打开的文件。每个进程一次最多可以打开9个文件描述符。bash sh…...

编译原理期末复习--伪代码部分

1.词法分析 token token nexttoken()c getchar();switch(c):case <:c getchar();switch(c):case : return RE;case >: return NE;default: rollback(); return LT;case :return EQ;case >:c getchar();switch(c):case : return GE;default: rollback(); return GT…...

云原生相关的 Go 语言工程师技术路线(含博客网址导航)

要成为一名云原生相关的 Go 语言工程师&#xff0c;需要在 Go 语言、云原生技术栈以及相关的开发和运维工具上建立扎实的基础。下面是一个前字节员工总结的技术路线规划&#xff1a; 1. 掌握 Go 语言基础 深入理解 Go 语言&#xff1a;你需要熟练掌握 Go 的语法、数据结构、并…...

基于Springboot + vue实现的汽车资讯网站

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…...

【YashanDB知识库】ycm-YashanDB列表有数据库显示故障排除步骤

本文内容来自YashanDB官网&#xff0c;原文内容请见 https://www.yashandb.com/newsinfo/7802959.html?templateId1718516 数据库状态 正常 异常 1、查看告警列表 例如&#xff1a;告警显示实例无法连接&#xff0c;一般是数据库实例服务掉了&#xff0c;需要尽快联系系统…...

如何使用 FastAPI 框架创建 RESTful API ?

FastAPI是一个现代、快速&#xff08;高性能&#xff09;的Web框架&#xff0c;用于构建API&#xff0c;它基于Python 3.6的类型提示功能&#xff0c;可以自动生成交互式API文档&#xff08;使用Swagger UI或ReDoc&#xff09;&#xff0c;并且支持异步编程。 二、创建第一个F…...

Java 继承

继承是所有 OOP 语言和 Java 语言不可缺少的组成部分。 继承是 Java 面向对象编程技术的一块基石&#xff0c;是面向对象的三大特征之一&#xff0c;也是实现软件复用的重要手段&#xff0c;继承可以理解为一个对象从另一个对象获取属性的过程。 如果类 A 是类 B 的父类&…...

嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目

此项目是基于人脸识别的考勤系统开发&#xff0c;包括如下模块&#xff1a; 1、人脸识别考勤系统GUI界面设计&#xff0c;包括&#xff1a; &#xff08;1&#xff09;Qt环境(window环境/linux环境) &#xff1b; &#xff08;2&#xff09;Qt工程创建分析&#xff1b; &am…...

门户系统需要压测吗?以及门户系统如何压力测试?

一、门户系统为什么要进行压力测试&#xff1f; 首先一点要明确一下&#xff0c;统一门户上线以后&#xff0c;将是所有应用系统的入口&#xff0c;对应门户稳定性要求较高&#xff0c;门户实现了统一入口和统一认证&#xff0c;系统宕机将影响其他系统使用。一般部署架构要求…...

Linux扩展——shell编程

前置&#xff1a;Linux基础及命令复习 目录 shell概述Shell脚本入门案例 sh bash ./ . source 变量系统预定义变量 $HOME $PWD $SHELL等自定义变量 unset readonly补充&#xff1a;开启子Shell进程的常见方法 (...) $(...) ... <(...) >(...) 特殊变量 $n $# $* $ $&…...

golang, go sum文件保证下载的依赖模块是一致的

在 Go 编程语言中&#xff0c;go.sum 文件是 Go 模块管理的一部分&#xff0c;主要用于记录模块的校验信息&#xff08;模块版本的校验和&#xff09;。它的设计目标是确保模块的完整性和安全性&#xff0c;解决以下关键问题&#xff1a; 1. 确保模块版本的一致性 go.sum 文件…...

TANGO与LabVIEW控制系统集成

TANGO 是一个开源的设备控制和数据采集框架&#xff0c;主要用于管理实验室设备、自动化系统和工业设备。它为不同类型的硬件提供统一的控制接口&#xff0c;并支持设备之间的通信&#xff0c;广泛应用于粒子加速器、同步辐射光源、实验室自动化和工业控制等领域。 1. TANGO的核…...

【day14】异常处理与Object类深入解析

【day13】回顾 在深入探讨异常处理与Object类之前&#xff0c;让我们回顾一下【day13】中的关键内容&#xff1a; 权限修饰符&#xff1a; public&#xff1a;最广的访问范围&#xff0c;任何地方都可以访问。protected&#xff1a;在同包和子类中可以访问。默认&#xff08;无…...

云技术基础知识(二):虚拟化与容器技术

内容预览 ≧∀≦ゞ 虚拟化与容器技术虚拟化技术一、虚拟化的核心概念二、虚拟化的主要类型1. 服务器虚拟化2. 操作系统虚拟化&#xff08;容器化&#xff09;3. 网络虚拟化4. 存储虚拟化 三、虚拟化的实现方法和工具1. 服务器虚拟化实现2. 操作系统虚拟化&#xff08;容器化&am…...

【Java基础面试题033】Java泛型的作用是什么?

Java的基础语法可以看尚硅谷的这个PDF&#xff1a;尚硅谷JavaSE基础/《Java从入门到精通(JDK17版)》_尚硅谷电子书.pdf Autism_Btkrsr/Blog_md_to_pdf - 码云 - 开源中国 (gitee.com) 回答重点 Java泛型的作用是通过在编译时检查类型安全&#xff0c;允许程序员编写更通用和…...

Linux 基本使用和程序部署

1. Linux 环境搭建 1.1 环境搭建方式 主要有 4 种&#xff1a; 直接安装在物理机上。但是Linux桌面使用起来非常不友好&#xff0c;所以不建议。[不推荐]。使用虚拟机软件&#xff0c;将Linux搭建在虚拟机上。但是由于当前的虚拟机软件(如VMWare之类的)存在一些bug&#xff…...

react中使用ResizeObserver来观察元素的size变化

在 React 中使用 ResizeObserver 来观察元素的大小变化&#xff0c;可以通过创建一个自定义 Hook 来封装 ResizeObserver 的逻辑&#xff0c;并在组件中使用这个 Hook。以下是一个完整的示例&#xff0c;展示了如何在 React 中使用 ResizeObserver 来观察元素的大小变化。 自定…...

常见数据结构

1.数组 vector 2.链表 list 双向链表&#xff0c;不能通过下标找元素 3.栈 stack 4.队列 queue 优先队列priority_queue. 默认队头为最大值&#xff0c;可以用来任务调度&#xff0c;图算法&#xff0c;霍夫曼树 5.双端队列 deque 6.集合 set multiset s.begin() //返回…...

【服务器】linux服务器管理员查看用户使用内存情况

【服务器】linux服务器管理员查看用户使用硬盘内存情况 1、查看所有硬盘内存使用情况 df -h2、查看硬盘挂载目录下所有用户内存使用情况 du -sh /public/*3、查看某个用户所有文件夹占用硬盘内存情况 du -sh /public/zhangsan/*...

Java-冒泡排序、选择排序、二分查找算法

1. 冒泡排序 (1) 冒泡排序&#xff1a;每次从数组中找出最大值放在数值的后面去 public static void main(String[] args) {//冒泡排序int[] arr {5, 6 ,4, 9, 3, 1};for (int i 0; i < arr.length - 1; i) {for (int j 0; j < arr.length - i - 1; j) {if (arr[j] &…...

leetcode之hot100---240搜索二维矩阵II(C++)

思路一&#xff1a;通过遍历主对角线上元素判断查找方向 主对角线遍历&#xff1a; 遍历主对角线上的每个元素&#xff08;matrix[i][i]&#xff09;&#xff0c;其中 i 的范围是 [0, min(m, n) - 1]。如果目标值小于当前主对角线元素&#xff0c;说明目标值可能在当前元素的左…...

牛客--求小球落地5次后所经历的路程和第5次反弹的高度,称砝码

求小球落地5次后所经历的路程和第5次反弹的高度 描述 假设有一个小球从 hh 米高度自由落下&#xff0c;我们不考虑真实的物理模型&#xff0c;而是简洁的假定&#xff0c;该小球每次落地后会反弹回原高度的一半&#xff1b;再落下&#xff0c;再反弹&#xff1b;……。 求小球…...

EasyPoi 使用$fe:模板语法生成Word动态行

1 Maven 依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.0.0</version> </dependency> 2 application.yml spring:main:allow-bean-definition-over…...

在 PowerShell 中优雅地显示 Python 虚拟环境

在使用 Python 进行开发时&#xff0c;虚拟环境管理是一个非常重要的部分。无论是使用 venv 还是 conda&#xff0c;我们都希望能够清晰地看到当前所处的虚拟环境。本文将介绍如何在 PowerShell 中配置提示符&#xff0c;使其能够优雅地显示不同类型的 Python 虚拟环境。 问题…...

GUI07-学工具栏,懂MVC

MVC模式&#xff0c;是天底下编写GUI程序最为经典、实效的一种软件架构模式。当一个人学完菜单栏、开始学习工具栏时&#xff0c;就是他的一生中&#xff0c;最适合开始认识 MVC 模式的好时机之一。这节将安排您学习&#xff1a; Model-View-Controller 模式如何创建工具栏以及…...

免费线上签字小程序,开启便捷电子签名

虽如今数字化飞速发展的时代&#xff0c;但线上签名小程序的开发制作却并非易事。需要攻克诸多技术难题&#xff0c;例如确保签名的真实性与唯一性&#xff0c;防止签名被伪造或篡改。 要精准地捕捉用户手写签名的笔迹特征&#xff0c;无论是笔画的粗细、轻重&#xff0c;还是…...

计算机的错误计算(一百八十九)

摘要 用大模型计算 tan(12.345) . 自变量取弧度。结果保留10位有效数字。不同于前面两节的大模型&#xff0c;本节调用了新的两个大模型。然而&#xff0c;很遗憾&#xff0c;它们给出的答案似乎仍然是“匹配”出来的&#xff0c;不是计算出来的。当然&#xff0c;均是错误的。…...

HDR视频技术之十一:HEVCH.265 的 HDR 编码方案

前文我们对 HEVC 的 HDR 编码优化技术做了介绍&#xff0c;侧重编码性能的提升。 本章主要阐述 HEVC 中 HDR/WCG 相关的整体编码方案&#xff0c; 包括不同应用场景下的 HEVC 扩展编码技术。 1 背景 HDR 信号一般意味着使用更多比特&#xff0c;一般的 HDR 信号倾向于使用 10…...

使用 AI 辅助开发一个开源 IP 信息查询工具:一

本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时&#xff0c;总是会遇到一些有趣的机缘巧合。前几天&#xff0c;我在翻看自己之前的开源项目时&#xff0c;又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…...

『 Linux 』高级IO (一)

文章目录 内容回顾及铺垫五种IO模型不同类型IO的区别非阻塞IOfcntl( ) 多路转接 - select( )select( ) 的基本使用 - SelectServer服务器 内容回顾及铺垫 在博客『 Linux 』基础IO/文件IO (万字)中介绍了对IO的认识; IO实际上为Input/Output,输入输出; 以网络协议栈的视角来看,…...

Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践

导读&#xff1a;Cisco WebEx 早期数据平台采用了多系统架构&#xff08;包括 Trino、Pinot、Iceberg 、 Kyuubi 等&#xff09;&#xff0c;面临架构复杂、数据冗余存储、运维困难、资源利用率低、数据时效性差等问题。因此&#xff0c;引入 Apache Doris 替换了 Trino、Pinot…...

Java - 日志体系_Apache Commons Logging(JCL)日志接口库

文章目录 官网1. 什么是JCL&#xff1f;2. JCL的主要特点3. JCL的核心组件4. JCL的实现机制5. SimpleLog 简介6. CodeExample 1 &#xff1a; 默认日志实现 (JCL 1.3.2版本)Example 2 &#xff1a; JCL (1.2版本&#xff09; Log4J 【安全风险高&#xff0c;请勿使用】 7. 使用…...

Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02

在嵌入式开发中&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;是一种常用的串行通信协议&#xff0c;广泛应用于与外设&#xff08;如 EEPROM、传感器、显示屏等&#xff09;进行数据交换。AT24C02 是一种常见的 I2C EEPROM 存储器&#xff0c;它提供 2Kbit…...

盒子模型(外边距的设置)

用于页面中元素的合理布局所有的元素都可以有宽高所有元素都是一个矩形所有元素都可以看成一个盒子盒子包括 外边距边框内边距元素内容 外边距设置 外边距的要素&#xff1a;top、bottom、left、right外边距的尺寸&#xff1a;合法的尺寸单位外边距语法&#xff1a;marign-方…...

买卖股票的最佳时机 IV - 困难

************* C topic&#xff1a;188. 买卖股票的最佳时机 IV - 力扣&#xff08;LeetCode&#xff09; ************* Stock angin: Still stocks. Intuitively, it feels hard. For once: class Solution { public:int maxProfit(vector<int>& prices) {in…...

ElasticSearch - 深入解析 Elasticsearch Composite Aggregation 的分页与去重机制

文章目录 Pre概述什么是 composite aggregation&#xff1f;基本结构after 参数的作用问题背景&#xff1a;传统分页的重复问题after 的设计理念响应示例 after 如何确保数据不重复核心机制Example步骤 1: 创建测试数据创建索引插入测试数据 步骤 2: 查询第一页结果查询第一页返…...

HTML5 Web IndexedDB 数据库

IndexedDB 是一种基于浏览器的 NoSQL 数据库&#xff0c;用于在客户端持久化存储大量结构化数据。 IndexedDB 允许通过键值对存储复杂的数据对象&#xff08;如对象、数组、文件等&#xff09;&#xff0c;并支持事务、索引、版本控制和复杂查询操作。 IndexedDB 是异步的&am…...

苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...