云原生时代消息中间件的演进路线
kafka消息中间件原理

kafka消息中间件原理Kafka消息中间件原理随着互联网的快速发展和大数据的兴起,消息中间件逐渐成为各种分布式系统中不可或缺的一部分。
Kafka作为一种高性能、高可靠性的分布式消息中间件,被广泛应用于各个领域。
本文将介绍Kafka消息中间件的原理和工作机制。
1. 消息中间件的作用消息中间件是一种用于在分布式系统中传递消息的软件解决方案。
它的主要作用是解耦消息的生产者和消费者,提供消息的可靠传递和持久化存储,实现系统之间的异步通信。
通过引入消息中间件,可以降低系统之间的耦合度,提高系统的可伸缩性和可靠性。
2. Kafka的基本概念Kafka是由LinkedIn开发的一种高性能、分布式、可持久化的消息中间件。
它的核心概念包括主题(Topic)、分区(Partition)、偏移量(Offset)和消费者组(Consumer Group)。
主题是消息的逻辑分类,一个主题可以包含多个分区。
分区是消息存储的最小单元,每个分区在物理上都对应一个日志文件。
偏移量是消息在分区中的唯一标识,用于表示消息的顺序。
消费者组是一组消费者的集合,它们共同消费同一个主题下的消息。
3. Kafka的工作原理Kafka的工作原理可以简单地概括为生产者将消息发送到主题,消费者从主题中订阅并消费消息。
生产者将消息发送到指定的主题,消息会被追加到分区的末尾,并被分配一个唯一的偏移量。
Kafka采用顺序写入和批量提交的方式,以提高写入性能。
消费者通过订阅主题来消费消息,每个消费者都会加入一个消费者组。
Kafka会根据分区的数量将消息平均分配给消费者组中的消费者。
消费者通过轮询的方式从分配给自己的分区中拉取消息,并进行处理。
消费者可以控制消费的位置,通过指定偏移量来消费指定位置之后的消息,实现消息的重复消费和消息的回溯。
4. Kafka的可靠性保证Kafka通过多副本机制来保证消息的可靠性。
每个分区都会有一个或多个副本,其中一个被选举为领导者(Leader),其余的为追随者(Follower)。
消息中间件的使用场景

消息中间件的使用场景
消息中间件被广泛应用于各种场景中,主要包括以下四种典型场景:
1. 异步处理:在传统的串行和并行方式中,任务的执行顺序是固定的,而在消息中间件的帮助下,可以将一些不需要立即响应的任务转化为消息,异步地发送给消费者进行处理。
这种方式能够显著提高系统的吞吐量。
2. 应用解耦:当一个系统需要和多个其他系统进行交互时,可以使用消息中间件作为中介。
例如,系统A需要向系统B和系统C 发送消息,为了降低系统A与系统B和系统C之间的耦合度,我们可以让系统A将消息发送给消息中间件,然后由消息中间件将消息转发给系统B和系统C。
3. 流量削锋:在高并发的场景下,消息中间件可以缓冲大量的请求,避免因为瞬间流量过大而导致系统崩溃。
4. 消息通讯:在那些需要进行大量数据传输的应用中,如秒杀活动、抢购、邮件发送、电话短信等,消息中间件都发挥了重要的作用。
中间件的历史与发展

中间件的历史与发展中间件的历史与发展1. 由来中间件在实际的应用过程中,是对应用软件起到支撑作用,最终用户并不直接使用中间件,中间件不是大众消费类软件产品。
因此,除非是一个行业专业人士,一般不大可能与中间件打交道,不太了解什么是中间件。
因此,在系统软件之中,操作系统、数据库、中间件的三驾马车,中间件是最神秘的。
因为,好歹大家通过Windows基本上会了解操作系统是个什么东西,尽管不会很全面,很专业,毕竟是有感觉的。
数据库,虽然没有直接见过,但基本上明白数据是要一个仓库来储存的,因此,也大致知道数据库管理系统是干什么的。
长期以来,中间件是一个专业化非常强的细分产业。
因为中间件的技术门槛比较高,玩家也不多,无论是国外还是国内都是如此。
因此,行业内对什么是中间件并不特别在意。
而公司名称直接叫中间件的就更少了,另一方面,因为中间件软件还处于发展阶段,还没有完全成熟,因此对中间件的定义也就没有深究,或者权威的说法。
但现在情况有点变化,其中一个原因在于2008年底,国家启动了核高基重大科技专项,在基础软件领域明确提出重点支持操作系统、数据库、中间件、文字处理等基础软件产业的自主创新,几乎一夜之间大大小小的软件公司都宣称是做中间件的了,只要不是做最终应用软件的,他们的产品都叫中间件了,一时间,中间件变得蓬勃发展起来了。
作为中间件行业内的专业化和领先企业来说,大家都重视起中间件来了,这是好事,说明社会上重视了。
对行业的发展和繁荣固然重要,但这也隐含了重大的风险。
中间件名字被滥用,无论是对用户,对这个产业,对政府和投资人来说,都会有负面的影响。
鱼目混珠,泥沙俱下的局面,对中间件产业的正常发展未必就是好事情了,也可能对真正的中间件自主创新带来许多困扰,模糊了中间件的本质,可能会弱化中间件核心技术的创新和发展。
因此,在这种情况下,无论是对行业内,还是行业外,突然什么是中间件的问题变成了一个大问题了。
本文试图就中间件的来龙去脉,外延内涵和前世今生,来一个全面的阐释。
中间件的历史与发展

中间件的历史与发展1. 由来中间件在实际的应用过程中,是对应用软件起到支撑作用,最终用户并不直接使用中间件,中间件不是大众消费类软件产品。
因此,除非是一个行业专业人士,一般不大可能与中间件打交道,不太了解什么是中间件。
因此,在系统软件之中,操作系统、数据库、中间件的三驾马车,中间件是最神秘的。
因为,好歹大家通过Windows基本上会了解操作系统是个什么东西,尽管不会很全面,很专业,毕竟是有感觉的。
数据库,虽然没有直接见过,但基本上明白数据是要一个仓库来储存的,因此,也大致知道数据库管理系统是干什么的。
长期以来,中间件是一个专业化非常强的细分产业。
因为中间件的技术门槛比较高,玩家也不多,无论是国外还是国内都是如此。
因此,行业内对什么是中间件并不特别在意。
而公司名称直接叫中间件的就更少了,另一方面,因为中间件软件还处于发展阶段,还没有完全成熟,因此对中间件的定义也就没有深究,或者权威的说法。
但现在情况有点变化,其中一个原因在于2008年底,国家启动了核高基重大科技专项,在基础软件领域明确提出重点支持操作系统、数据库、中间件、文字处理等基础软件产业的自主创新,几乎一夜之间大大小小的软件公司都宣称是做中间件的了,只要不是做最终应用软件的,他们的产品都叫中间件了,一时间,中间件变得蓬勃发展起来了。
作为中间件行业内的专业化和领先企业来说,大家都重视起中间件来了,这是好事,说明社会上重视了。
对行业的发展和繁荣固然重要,但这也隐含了重大的风险。
中间件名字被滥用,无论是对用户,对这个产业,对政府和投资人来说,都会有负面的影响。
鱼目混珠,泥沙俱下的局面,对中间件产业的正常发展未必就是好事情了,也可能对真正的中间件自主创新带来许多困扰,模糊了中间件的本质,可能会弱化中间件核心技术的创新和发展。
因此,在这种情况下,无论是对行业内,还是行业外,突然什么是中间件的问题变成了一个大问题了。
本文试图就中间件的来龙去脉,外延内涵和前世今生,来一个全面的阐释。
从“中间件”到“中台”——技术架构与应用架构的演进

从“中间件”到“中台”——技术架构与应用架构的演进随着金融科技的快速发展,中间件逐渐不作为一个独立的技术概念被提起,而是在应用架构中扮演更重要的角色,也就是现在普遍应用的“中台”,但无论是“技术中台”还是“业务中台”,都离不开中间件技术的发展。
在中间件技术发展的同时,企业应用系统越来越多、交互越来越复杂,中间件需要解决的问题慢慢地从“提升单个应用系统的开发效率”上升到“提升企业级不同应用系统的整体交互效率”,从“单个应用系统的开发框架”上升到“企业级应用的连接平台”,开始承载公共业务能力,助力企业搭建“业务中台”。
“业务中台”是另一种意义上的“中间件”,它屏蔽的不是技术复杂度,而是将公共服务能力进行抽象、实现、加强,通过组合多个独立的、明确的公共服务,把业务实现变得更为简单。
传统中间件解决了业务实现的技术复杂性,而业务中台则解决了业务实现的“业务复杂性”。
证券行业的技术和业务特点证券行业的技术特点是瞬时并发大、系统错误容忍度低、系统运行压力大,且专业客户对系统在大并发下的处理性能要求高。
因此,证券信息系统的复杂度和技术难度甚至超过了银行业和互联网业,在满足高并发的前提下,还需要保证数据的强一致性,并且瞬间即逝的行情让投资者对系统的连续性运行要求非常高,错误容忍度极低。
所以,证券行业核心系统需要有非常强大的“中间件”,或者说“技术中台”,来保证并发性、数据强一致性、弹性扩容等要求。
在业务范围上,证券业务涵盖互联网金融、财富管理、专业机构交易、托管服务、自营投资、投资银行等,业务覆盖面广、有些业务之间又有或多或少的共性,比如互联网金融和财富管理在面向客户的营销服务方面可能都需要营销活动管理、用户积分等。
专业机构交易和自营投资都需要策略交易和算法执行的支持,托管服务、专业机构和投资银行可能服务于同一个客户等,这些公共能力都可以进行抽取实现复用。
近年来证券行业的创新层出不穷,从股转改革、到创业板注册制等,随着经纪业务竞争加剧、佣金下滑,券商的财富管理转型也迫在眉睫,券商自身的业务也需要在不断地创新中谋求突破。
中间件发展态势

中间件发展态势中间件是一种在软件系统中起到连接、协调和整合不同组件的软件层。
它在不同应用程序和系统之间提供通信和数据传输的桥梁,有助于简化复杂系统的开发和维护。
随着信息技术的快速发展,中间件的发展态势也在不断演变。
下面将介绍中间件的发展历程、现状以及未来趋势。
1. 中间件的发展历程1.1 早期阶段中间件的概念最早出现在分布式计算和企业应用集成领域。
20世纪80年代和90年代初,随着分布式系统和客户端/服务器架构的兴起,人们开始感受到将不同系统、应用程序和数据库进行连接和整合的迫切需求。
这时期的中间件主要用于简化分布式系统的开发和管理。
1.2 Web时代随着互联网的普及,中间件的发展迎来了Web时代。
Web服务和面向服务的架构(SOA)的兴起推动了中间件的演进。
这一时期,中间件主要关注在不同系统之间实现松耦合的通信,以便更好地支持企业间的数据交换和业务流程整合。
1.3 云计算时代进入21世纪后,云计算的崛起推动了中间件的再次演变。
云原生应用的需求日益增加,中间件开始关注容器化、微服务架构和自动化部署等方面。
容器编排工具(如Kubernetes)的出现为中间件提供了更灵活和高效的部署方式。
1.4 现代时代当前,中间件正处于现代化的时代。
在大数据、人工智能、物联网等技术的推动下,中间件不仅要满足传统企业的需求,还需要适应新兴技术的发展。
现代中间件趋向于更加轻量、灵活,支持多语言、多框架的混合式开发和部署。
2. 中间件的现状2.1 微服务和容器化微服务架构的兴起促使中间件更加注重服务的细粒度划分和部署。
容器化技术(如Docker)的广泛应用使得中间件能够更好地适应动态的、可伸缩的环境。
2.2 云原生和服务网格云原生的理念推动中间件向云原生方向发展,更好地支持弹性扩展、自动治理和DevOps。
服务网格技术的应用进一步加强了微服务之间的通信和管理。
2.3 数据集成和流式处理随着大数据时代的来临,中间件在数据集成和流式处理方面的需求逐渐增加。
中间件,微服务,Docker与原生云架构

中间件,微服务,Docker与原生云架构今天,许多企业已经采用容器和原生云架构或正在采用它们。
这个话题也越来越和中间件供应商相关。
因此,我们需要做一个有关微服务,容器和云原生架构的中间件世界的现状的更新。
本文的关键要点:•原生云架构可以支持灵活和敏捷的开发,部署,以及运维各种软件•现代中间件技术可以利用容器,微服务,以及原生云架构•仅仅利用容器来包装和隔离是远远不够的,还有很多其他概念值得理解和利用微服务和Docker的发展势头微服务和容器的主要目标是缩短软件开发时间,以及实现开发、部署以及运维的更大灵活性。
为什么它过去几个月的发展势头这么猛?因为几乎所有科技巨头企业如亚马逊,谷歌,Facebook,Netflix都在这里激烈竞争。
微服务就像是一个面向服务的架构(SOA):这是一种架构和供应商技术分别独立的设计理念。
因此,目前并没有明确的界定标准或规范。
你永远需要在和其他人讨论之前定义你所理解的微服务术语。
每个人都有不同的定义。
在这篇文章中微服务是被开发,部署和独立缩放的服务。
它们可以不针对任何技术来提供业务或整合逻辑。
有些供应商提供建立微服务的特殊支持(我们将在后面的文章中看到的),但基本上不涉及任何特定的技术支持。
关于微服务架构的讨论最早是一篇由Martin Fowler在2014写的著名文章开始的,该文章的广泛应用起始于NetFlix的一系列丰富的开源微服务应用框架。
稍后我们会回来介绍更多细节,本文章的很多内容都是受到了Netflix杰出和详细的技术博客帖子的启发。
容器依赖其上运行的操作系统。
容器的实现是基于Linux内核的资源隔离功能,如内核namespaces(隔离的应用程序运行环境,包括进程树,网络,用户ID,以及安装的文件系统),以及cgroup(提供资源限制,包括CPU,内存,I / O和网络),和一个有联合能力的文件系统如AUFS和其他。
这允许独立容器在单个Linux实例中运行,避免了初始化以及维持虚拟机的开销。
云原生时代消息中间件的技术演进

MULTI DOMAINS
STREAMING
WIRE LEVEL PLUGGABLE
PLATFORM INDEPENDENT
CLOUD ORIENTED
STANDARD BENCHMARK
OpenMessaging
接入&迁移
多协议 多API 多语言 多终端 多生态 全球消息路由
多租户
命名空间 访问控制 实例限流 资源隔离
Event Sources
Event Broker
Event Consumers
• 事件是具像化的,代表事情的发生、条件和状态的变化 • 事件源可能来自不同的环境与组织 • 事件源对事件将被如何响应没有任何预期 • 采用事件的应用架构是更彻底的解耦 • 采用事件的应用架构将更加具备可扩展性和灵活性
Event Sourcing
Master-Slave DLedger 秒级RTO协议 统一存储接口
Deep Storage
本地块设备 云存储
盘古原生存储 OSS
架构开发
面向失败设计
开发测试
Code Review 单元测试 集成测试 性能测试 容灾测试
变更管理
可灰度 可监控 可回滚 可降级
稳定性防护
限流、降级 容量评估 应急方案 大促保障 故障演练 预案演练
标准版 铂金版
海量堆积
消息类型
普通消息 事务消息 定时消息 顺序消息 重试消息 死信消息
消费&治理
Pub/Sub 广播/集群 Tag过滤 SQL过滤 消息轨迹 消息查询 消息回放
服务能力
高可用
• 交易链路12年,双十一10年 • 可用性99.95%,可靠性8个9
• 双 11 消息收发 TPS 峰值过亿, 日消息收发总量3万亿;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
消息队列 AMQP 100% 兼容 AMQP 事实标准协议, 全面融合 RabbitMQ 开源社区生态;
事件总线 EventBridge 原生支持 CloudEvents 标准,提供中心化 事件服务能力,加速云原生生态集成,EDA 首选;
互联网
大数据
移动互联网 & 物联网
拥抱开源
消息通知服务
下一代消息产品形态
C on tainer
MQBroker-A
Pub
Sub
S idecar P roxy
StatelessPub/Sub
C on tainer
MQBroker-B
Pub
Sub
S idecar P roxy
01 云 原 生 消 息 服 务 02 云 原 生 消 息 三 化 03 云 原 生 消 息 生 态 04 云 原 生 消 息 核 心 竞 争 力 05 云 原 生 消 息 展 望
应用定义/ 开发层
云原生 其它层次
云原生 消息服务
云原生 通信 基础设施
云原生消息服务定义
云原生消息服务定位
云原生消息服务演进方向
高SLA
与云一致的可用性
低成本
按需付费、无容量评估
易用性
开箱即用、云原生通信基础设施
多样性
大而全的消息生态、丰富的业务场景
标准化
社区标准、自建标准
标准化
高SLA
云原生消息 服务
MQ实例
2W TPS
根据业务流量 自动升降配
10W TPS
根据消费者数量 自动升降配
实例规格
..…
队列数量 逻辑资源按需扩缩容
Kubernetes集群
MQ 集群
Broker1 PV1
Broker2 PV2
Broker3 PV3
Broker4 PV4
MQ 集群
根据Load等Metrics 做出扩容决策
云原生时代消息中间件的演进路线
技术创新,变革未来
引子
01 云 原 生 消 息 服 务 02 云 原 生 消 息 三 化 03 云 原 生 消 息 生 态 04 云 原 生 消 息 核 心 竞 争 力 05 云 原 生 消 息 展 望
目录
CONTENT
什么是云原生
云原生是一个天然适用于云计算的架构理念,实践云原生技术理念的应用可以最大化云计算的技术红利, 包括弹性伸缩、按量付费、无厂商绑定高SLA等。
• 阿里云消息队列 RocketMQ 是国内第二个成功进入 Service Mesh 官方社区的 中间件产品
• 推动 Envoy 社区加速ondemand CDS的支持
• 创新性地使用Pop消费模式适 配Mesh的无状态网络模型
• 类Frame的协议设计降低解 码成本
M CPServer
N am eS erver
目录
CONTENT
云原生消息产品矩阵
阿里云消息产品矩阵包含消息队列RocketMQ、Kafka、AMQP、微消息队列MQTT、消息通知服务MNS 以及即将发布的EventBridge,涵盖互联网、大数据、移动互联网、物联网等领域的业务场景,
为云原生客户提供一站式消息解决方案。
消息队列 Kafka 聚焦大数据生态链,100% 融合 Kafka 开源 社区,大数据应用领域中不可或缺的消息产 品;
云原生消息生态
阿
计算平台
视频云
IoT
数据库
里
云 消
Blink
Max Compute
MPS
IoT PaaS
ADB
息
商
ES
HBase
RTC
IoT 边缘智能
DTS
业
化
Dataphin
RouteInfo
Control Plane
C itadel
M ixer
P ilot
G aley
Injector
Data Plane
Registration
xDSConfig ···
C on tainer
Rpc
S idecar P roxy
C on tainer
MQSDK
Sub
Pub
S idecar P roxy
根据Load等Metrics 做出缩容决策
MQ 集群
Broker1 PV1 PV3
PV漂移
Broker4 PV4
Broker2 PV2 PV4
MQ 集群
物理资源按需扩缩容
云原生消息Mesh化
云原生消息Mesh化将消息的富客户端能力下沉至Sidecar,将消息的服务发现、负载均衡、流量监控等职责 与业务逻辑隔离,在运行时完成透明组装,同时提供细粒度的消息灰度和治理能力。
消息队列 RocketMQ 阿里巴巴自主研发及双 11 交易核心链路 消息产品,阿里云主打品牌, 主要面向业务消息处理, 打造金融级高可靠消息服务;
微消息队列 MQTT 基于 MQTT 标准协议自研,拓展消息产品 的领域与边界,延伸到移动互联网以及物 联网,实现端与云的连接;
消息服务 MNS 聚焦云产品生态集成 & 消息通 知服务(HTTP Endpoint、 Function Compute、事件通 知、移动推送等);
Distribution
Performance
Automation
Configuration
Delivery
Diagnosability
云原生四要素
Resistancy
Elasticity
云原生核心设计理念
Security
什么是云原生消息服务
云原生消息服务是云原生的通信基础设施,处于云原生全景图的应用定义和开发层,为微服务和EDA架构 提供核心的解耦、异步和削峰的能力,同时在云原生其它层次领域,还发挥着数据通道、事件驱动以及 集成与被集成等重要作用。
• 快速部署 RocketMQ集群至 Kubernetes 环境
• 利用 K8S 的能力低成本运 维 RocketMQ 集群
• 使用云原生Prometheus观 测集群指标
云原生消息Serverless化
云原生消息Serverless化主要是从两个维度落地按需的概念。一方面根据业务规模自动化扩缩容实例规格、 队列数等逻辑资源;另一方面,根据服务端负载自动化扩缩容计算、存储等物理资源。
多样性
易用性
低成本
01 云 原 生 消 息 服 务 02 云 原 生 消 息 三 化 03 云 原 生 消 息 生 态 04 云 原 生 消 息 核 心 竞 争 力 05 云 原 生 消 息 展 望
目录
CONTENT
云原生消息Kubernetes化
云原生消息Kubernetes化是指通过自定义CRD资源将有状态的消息集群托管至Kubernetes集群中,充分利用 K8S提供的部署、升级、自愈等能力提高运维效率,同时尽可能享受K8S的社区生态红利。