Kafka(二)消息系统设计

文章目录

  • 前言
  • 整体设计
  • 时序图
    • 时序图解释
  • 最后

前言

当多个系统之间通过Kafka来解耦时,在系统设计初期,基本的要求都是相似的,只不过是消费消息时的业务逻辑可能不同。

本文以业务系统和邮件系统解耦作为示例。业务系统需要发送邮件时,不在自身服务器上发送邮件, 不通过RPC的方式调用邮件系统,而是通过将发送邮件需求以消息的形式发送到Kafka, 邮件系统通过从Kafka中消费消息来发送邮件。

通过这样的解耦有以下几点好处

  1. 由于业务系统不直接调用邮件系统,所以不会将压力给到邮件系统,避免两个系统因大量的请求响应而出现的系统不稳定问题
  2. Kafka的性能是非常出色的,所以对于业务系统的大量写入应该可以hold住。当然我司每天写入的数据量和头部互联网公司的每天的海量数据没法比
  3. 邮件系统可以根据实际情况来从容的消费消息,也有利于我们可以针对邮件系统服务器进行硬件、软件、JVM等精细化的调优

整体设计

  1. 业务系统向Kafka发送消息
  2. 消息系统从Kafka获取消息,执行消费逻辑
  3. 业务系统的消息被邮件系统消费之后还需要通知业务系统
  4. 确保消息不丢失
  5. 确保消息不重复消费
  6. Kafka的高可用、稳定性不在本文讨论范围之内

时序图

下列时序图使用mermaid绘制
在这里插入图片描述
如果看不清楚,使用点此查看高清图片

时序图解释

  1. 1 ~ 10步骤为核心流程
  2. 11 ~ 20步骤为可选流程, 如果存在回调消息,则还要回调

最后

整体大的细节就如时序图所示,后续将在具体编码中进行更详细的说明。 下一篇博文专注于业务系统生产者端逻辑的实现。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cubase 13 官宣升级,用户界面重新设计,音乐创作“更自然、更直观、更方便”,全面支持 MIDI 2.0

Cubase 13简介 Steinberg发布Cubase 13升级,带有显著的重新设计了用户界面,还有众多新功能和提升作曲、制作、混音和给你创意的工作流。 获取地址 Steinberg Cubase Pro 13 功能新特性 随时随地的混音: MixConsole重新设计了更简洁的界面…

R语言爬虫代码模版:技术原理与实践应用

目录 一、爬虫技术原理 二、R语言爬虫代码模板 三、实践应用与拓展 四、注意事项 总结 随着互联网的发展,网络爬虫已经成为获取网络数据的重要手段。R语言作为一门强大的数据分析工具,结合爬虫技术,可以让我们轻松地获取并分析网络数据。…

【Mac开发环境搭建】JDK安装、多JDK安装与切换

文章目录 JDK下载与安装下载安装 配置环境变量安装多个JDK共存 JDK下载与安装 下载 Oracle官网提供了非常多个版本的JDK供下载,可以点击如下链接重定向到JDK下载页面 ORACLE官网JDK下载 安装 下面的官方文档可以点开收藏到浏览器的收藏夹,这样后续在开…

Ps:PSDT 模板文件

自 Photoshop CC 2015.5 版以后,Ps 中新增了一种文件格式:.PSDT。 说明: PSD、PDD、PSDT 都是 Ps 的专用文件格式,需要继续在 Ps 中进行编辑的文件可存为此类格式。 PSD Photoshop document Photoshop 默认文档格式,支…

华纳云:centos系统中怎么查看cpu信息?

在CentOS系统中,我们可以使用一些命令来查看CPU的详细信息。下面介绍几个常用的命令: 1. lscpu lscpu命令可以显示CPU的架构、型号、核心数、线程数、频率等信息。 # lscpu 执行以上命令后,会输出类似以下内容: 2. cat /proc/…

作用域,基本数据类型(常量const),转义字符,运算符

1.作用域 全局作用域:定义在所有花括号外的名字具有“全局作用域” 块作用域:在某个花括号内定义的名字具有“块作用域” 一般把具有全局作用域的变量叫做“全局变量”,具有块作用域的变量叫做“局部变量” 如果在嵌套作用域里出现重名&a…

安全操作(安卓推流)程序

★ 安全操作项目 项目描述:安全操作项目旨在提高医疗设备的安全性,特别是在医生离开操作屏幕时,以减少非授权人员的误操作风险。为实现这一目标,我们采用多层次的保护措施,包括人脸识别、姿势检测以及二维码识别等技术…

Educational Codeforces Round 157 (A--D)视频详解

Educational Codeforces Round 157 &#xff08;A--D&#xff09;视频详解 视频链接A题代码B题代码C题代码D题代码 视频链接 Educational Codeforces Round 157 &#xff08;A–D&#xff09;视频详解 A题代码 #include<bits/stdc.h> #define endl \n #define deb(x)…

龙迅LT6911UXC替换LT6911UXE 支持单PORT 4K60HZ 带HDCP

LT6911UXC 描述&#xff1a; 龙迅LT6911UXC是一个高性能的HDMI2.0到MIPI DSI/CSI & LVDS转换器。HDMI2.0输入支持高达6Gbps的数据速率&#xff0c;这为60Hz的视频提供了足够的带宽。同时&#xff0c;还支持使用HDCP2.2来进行数据解密。对于MIPI DSI/CSI输出&#xff0c;LT…

链表(1)

目录 单链表 主函数test.c test1 test2 test3 test4 头文件&函数声明SList.h 函数实现SList.c 打印SLPrint 创建节点CreateNode 尾插SLPushBack 头插SLPushFront 头删SLPopBck 尾删SLPopFront 易错点 本篇开始链表学习。今天主要是单链表&OJ题目。 单链…

【Linux】多路IO复用技术②——poll详解如何使用poll模型实现简易的一对多服务器(附图解与代码实现)

在阅读本篇博客之前&#xff0c;建议大家先去看一下我之前写的这篇博客&#xff0c;否则你很可能会一头雾水 【Linux】多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器&#xff08;附图解与代码实现&#xff09;http://t.csdnimg.cn/…

yolov5--ptq--qat量化之敏感层分析

敏感层分析&#xff0c;应该是发生在ptq量化之前进行分析的操作&#xff0c;经过该操作&#xff0c;可得出哪些层不适合进行量化&#xff0c;则在接下来ptq时可以手动关闭这些层的量化。 进入敏感层分析函数sensitive_analysis中&#xff0c; 具体流程为&#xff1a; 首先验证…