消费架构实战-原理

简介: 消费架构实战-原理

一.简介

当今应用多是类微服务架构,每个服务解耦,只处理一种逻辑,服务之间的调用为了实现异步和解耦,通过提交事件后再由服务分发消费的形式完成。
本文从最开始思想设计,慢慢演化,目前常用的架构思想,根据一些示例,说明消费架构在服务内部作用。

二.发展

2.1 串行

最开始服务内部调用基于串行,同步进行。

优点

容易实现,快速做业务功能。
可以在某些功能分发到独立线程去运行,但是整个编程模型还是串行化。

缺点

无法充分利用资源,多任务并发不支持。
扩展性不好,整个链路是函数化的编程模型。

例如:Map Reduce V1 版本系列就是基于此编程模型,分发任务,调度整个工作流程。

2.2 并行

基于上述,为了满足分布式系统的一些需求。

2.2.1 分布式系统复杂度

高性能

单机为了高性能带来复杂度,虽然引进了进程和线程,但是本质还是分时系统,并不能做到真正并行,需要结合实际情况,结合业务选择合适编程模型。
例如:Nginx 可以用多进程也可以用多线程,JBoss 采用的是多线程;Redis 采用的是单进程,Memcache 采用的是多线程,这些系统都实现了高性能,但内部实现差异却很大。

集群为了高性能带来复杂度,虽然增多了一些机器,但带来更大的复杂性,如何任务分配,网关服务分发,分布式存储等等,任务分解能带来性能很大的提升,用并行的编程让任务流转,无论异步还是同步提高性能。

高可用

系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一(参考维基百科)。
高性能增加机器目的为了扩展性能,高可用增加机器目的为了冗余处理单元(备份节点)。
计算高可用:任务分配
存储高可用:异地多活,存储分发。

高可用的状态决策,这个其实很重要,无论研究任意分布式源码,都会有一个状态机模块,这个是为了系统需要能够判断当前的状态是正常还是异常,因为网络的世界是现实世界的虚拟,现实世界判断一个流程的走向,有很多细节被忽略,因为人脑智能化,快速判断,但是网络世界,无法做到,需要状态机判断模块/任务走向,类似动态规划的过程,这样就衍生了一些算法:

  • 独裁式(有个最高的管理者,分配决策)
  • 协商式(主/备)
  • 民主式(选举,例如:ZooKeeper)

可扩展

正确预测变化,完美封装变化。这句话其实意思很深远,很多技术大牛都是按照这个方向扩展服务,这句话其实也是设计模式的核心。

低成本

设计“高可用”,“高性能”架构时,通常考虑水平扩展,增加机器,那样的话与低成本相矛盾,所以往往“创新”才能达到低成本的目标。

安全

安全本身是一个庞大和复杂的技术领域,只有千日做贼,那有千日防贼,所以需要考量的事情比较多,软件层面(业务功能,架构),硬件层面。

规模

有些经验的朋友肯定知道,规模带来复杂度的主要原因就是“量变引起质变”。

2.2.2 模型

基于上述的复杂度,提供很好的理论思想,基于此更好的设计。
目前常见的模型,事件模型,分组消费模型,相似的地方很多,不同的地方面向业务不同。
都是为了更好的提升性能,监控完整的链路,更加适合分布式系统。

事件模型

这种模型是一种思想,无限制任何编程语言,为了将组件解耦,生产者和消费者实现逻辑分离,其实也在延续微服务的分离耦合的思想,后续有专门的内容模块详细介绍,在此不赘述了。

分组消费模型

这种模型与事件模型相似,但是不同点因为面向业务不同,这种方式是为了面向大数据Hadoop多租户的思想,延伸而来,分组的概念,根据不同的引擎,不同的队列,延伸出来组的概念,为了更好的管理事件,这方面很像我在上述提到的高可用的思想形态。

三.事件模型

事件模型被很多开源组件所应用,例如:Hadoop、Kafka。基本所有消息队列都有这个模型的身影,在设计模式中也有类似的思想,观察者模式/发布-订阅式编程模式。
事件
已经发生的事情,暗含状态变化,串行化一些Task,不可改变,例如我在以前的Chat(开源数据交换 https://github.com/dlimeng/exchange-parent) 就用到这种模型,每个数据源就是一个Job,这里面暗含事件的流转,感兴趣的可以看看。

架构
开源数据交换(https://github.com/dlimeng/exchange-parent),示例讲解,数据流转。
image.png

角色:有两个,生产者,消费者。
状态机:INITED,STARTED,STOPPED,NOTINITED

  • 这个是有中央处理器(AsyncDispatcher),把所有事件(Job/Task)都注册到EventHandler容器中。
  • 初始化serviceInit,翻转状态INITED。
  • 中央处理器(AsyncDispatcher)注册到服务列表中。
  • 生产者根据事件请求类型,注册到队列中。
  • 消费者启动(长连接)轮询消费的事件(状态翻转STARTED)。
  • 停止队列(状态翻转STOP)

优势

  • 生产者与消费者解耦。
  • 扩展容易,只关注业务开发,不用像以前耦合度很高。
  • 消费者快速响应。
  • 链路可监控,快速反应状态。

挑战

  • 消息有序性。
  • 消息不丢失。

四.原理

讲了这么多,其实最根本是根据并发的设计模型(生产-消费模型),也是通信中常见的经典模型,通过根本思想不断演化出很多种类。

jms

image.png

jms是一套技术规范。
实现:生产消费者模式(生产者、服务器、消费者)。

传输方式

点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)。
发布/订阅模式(一对多,数据生产后,推送给所有订阅者)。

优点

  • 解耦。
  • 支持异步。
  • 平衡生产者和消费者的速度差异,假设生产者很慢,消费速率很快。
  • 支持批量执行以提升性能(Beam中DoFn方法就是这个机制.)。
  • 支持分阶段提交以提升性能(可以查看Log4j2 中Appender )。

小结

有兴趣研究jms可以看(https://blog.csdn.net/qq_19968255/article/details/82803805)。

目录
打赏
0
1
1
0
18
分享
相关文章
RocketMQ实战—3.基于RocketMQ升级订单系统架构
本文主要介绍了基于MQ实现订单系统核心流程的异步化改造、基于MQ实现订单系统和第三方系统的解耦、基于MQ实现将订单数据同步给大数据团队、秒杀系统的技术难点以及秒杀商详页的架构设计和基于MQ实现秒杀系统的异步化架构。
330 64
RocketMQ实战—3.基于RocketMQ升级订单系统架构
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
从理论到落地:MCP 实战解锁 AI 应用架构新范式
本文旨在从 MCP 的技术原理、降低 MCP Server 构建复杂度、提升 Server 运行稳定性等方面出发,分享我们的一些实践心得。
1633 103
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
479 7
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
本文深入探讨了混合专家(MoE)架构在大型语言模型中的应用与技术原理。MoE通过稀疏激活机制,在保持模型高效性的同时实现参数规模的大幅扩展,已成为LLM发展的关键趋势。文章分析了MoE的核心组件,包括专家网络与路由机制,并对比了密集与稀疏MoE的特点。同时,详细介绍了Mixtral、Grok、DBRX和DeepSeek等代表性模型的技术特点及创新。MoE不仅解决了传统模型扩展成本高昂的问题,还展现出专业化与适应性强的优势,未来有望推动AI工具更广泛的应用。
187 4
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
Google揭秘Agent架构三大核心:工具、模型与编排层实战指南
本文为Google发布的Agent白皮书全文翻译。本文揭示了智能体如何突破传统AI边界,通过模型、工具与编排层的三位一体架构,实现自主推理与现实交互。它不仅详解了ReAct、思维树等认知框架的运作逻辑,更通过航班预订、旅行规划等案例,展示了智能体如何调用Extensions、Functions和Data Stores,将抽象指令转化为真实世界操作。文中提出的“智能体链式组合”概念,预示了未来多智能体协作解决复杂问题的革命性潜力——这不仅是技术升级,更是AI赋能产业的范式颠覆。
599 1
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
83 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
103 9
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
431 21
RocketMQ原理—5.高可用+高并发+高性能架构

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问