高并发系统:常见的设计思路

高并发的书籍文章其实有很多,我们工作中也或多或少遇到过一些。今天这里总结下常见的思路。

一,分而治之。

        这个是最容易想到的办法,这里面包含了几层思路。

        1,产品设计。业务上就引导用户分开使用,按需购买,这样会从产品形态上就减少对系统压力。最容易举的例子就是12306放票不是一次性放出来,而是分时段放票。

        2,服务水平扩展。一个节点处理不了就分给两个三个节点处理,这种叫水平扩展。

        3,服务垂直扩展。一个服务越简单那么它越能做到极致,当一个服务干太多事后,它性能一定高不到哪里去,所以需要把它干的事分出去。比如把运单的创建模块单独剥离,那么创建就可以做到极致。

二,缓存

        如果每个请求都去访问数据节点,那么数据节点早挂了。缓存的做法也很多了。本地缓存、组件缓存、客户端缓存。

三,异步

        1,本来数据结果就依赖第三方处理,这种天然就是异步的。比如支付结果。2,不依赖第三方,但是我方处理能力有限。比如很多用户导单子,后续处理单子能里有限,不可能全部同步处理,这种场景异步就可以很好解决。

四,批处理

        1,如果一个业务请求会导致来回调用很多次请求,那么请求链路上的耗时也是很大一笔开销。2,一次处理10个请求,肯定比一次处理一个请求吞吐量高些。

五,隔离

        刚才提到分而治之思路,那秒杀系统岂不是正好相反?秒杀系统可以看成是99%的客户会失败,而1%的客户会成功。系统设计的时候是不是把这个1%的客户和99%的客户隔离就对了。既然只有1%的客户会成功,那何必把99%的客户的请求都放入核心系统呢?还有vip客户和非vip客户也是会用到隔离的思路。这也是和二八原则的契合的,热点数据和热点用户毕竟是少数。

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

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

相关文章

力扣题目训练(15)

2024年2月8日力扣题目训练 2024年2月8日力扣题目训练507. 完美数520. 检测大写字母521. 最长特殊序列 Ⅰ221. 最大正方形237. 删除链表中的节点115. 不同的子序列 2024年2月8日力扣题目训练 2024年2月8日第十五天编程训练,今天主要是进行一些题训练,包括…

ViT: transformer在图像领域的应用

文章目录 1. 概要2. 方法3. 实验3.1 Compare with SOTA3.2 PRE-TRAINING DATA REQUIREMENTS3.3 SCALING STUDY3.4 自监督学习 4. 总结参考 论文: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 代码:https://github.com…

C++中的constexpr

C中的constexpr 什么是constexpr? 在C中,constexpr是一个关键字,它用于声明常量表达式。这些表达式在编译时被计算,而不是在运行时。这意味着constexpr可以用于任何需要在编译时知道值的地方,例如数组的大小或模板参…

Python爬虫详解(一看就懂)

爬虫 爬虫是什么 爬虫简单的来说就是用程序获取网络上数据这个过程的一种名称。 爬虫的原理 如果要获取网络上数据,我们要给爬虫一个网址(程序中通常叫URL),爬虫发送一个HTTP请求给目标网页的服务器,服务器返回数据…

机器学习---规则学习(序贯覆盖、单条规则学习、剪枝优化)

1. 序贯覆盖 回归: 分类: 聚类: 逻辑规则: 读作:若(文字1且文字2且...),则目标概念成立 规则集:充分性与必要性;冲突消解:顺序规则、缺省规则…

nacos 2.3.1-SNAPSHOT 源码springboot方式启动(详细)附改造工程地址

文章时间是2024-2-18日,nacos默认develop分支,最新版是2.3.1-SNAPSHOT版本。 我们这里就以nacos最新版进行改造成springboot启动方式。 1. Clone 代码 nacos github地址:https://github.com/alibaba/nacos.git 根据上面git地址把源码克隆到…

【模板】负环 问题题解(spfa和bellman解决)

P3385 【模板】负环 题目描述 给定一个 n 个点的有向图,请求出图中是否存在从顶点 11 出发能到达的负环。 负环的定义是:一条边权之和为负数的回路。 输入格式 本题单测试点有多组测试数据。 输入的第一行是一个整数 T,表示测试数据的组…

[ai笔记10] 关于sora火爆的反思

欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第10篇分享! 最近sora还持续在技术圈、博客、抖音发酵,许多人都在纷纷发表对它的看法,这是一个既让人惊喜也感到焦虑的事件。openai从2023年开始,每隔几个…

你知道什么是物联网MQTT么?

目录 你知道什么是物联网MQTT么?MQTT的基本概念MQTT的工作原理MQTT的应用场景MQTT的实例案例智能家居场景工业监控场景 你知道什么是物联网MQTT么? MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式…

深度学习:开启人工智能的未来探索之旅

科技的飞速发展使得人工智能(AI)成为当今科技领域的热点之一,其中,深度学习作为人工智能的关键技术,正逐渐成为推动AI发展的强大引擎。本文将深入探讨深度学习在人工智能未来发展中的关键作用,以及它如何推…

24 双非计算机秋招总结

引言 我整理了一份 10w 字数的前端技术文档(飞书),地址:https://qx8wba2yxsl.feishu.cn/docx/Vb5Zdq7CGoPAsZxMLztc53E1n0k?fromfrom_copylink,欢迎对前端感兴趣的同学查看、共建、分享。 PS:我是一名大四…

c++中浮点类型比较的理解

为什么浮点类型存在误差 带有小数的表示: 25.3 整数通过除2取余法表示: 25/2…1 12/2…0 6/2…0 3/2…1 1/2…1 倒过来:25(十进制) 11001(二进制) 小数部分通过乘2取整法: 0.3 * 2 …

【笔记】Android MTU 知识及常见问题

需求背景 运营商对MTU配置有需求。比如针对不同类型的APN或者是注册网络环境的不同存在需求差异。 模块功能知识 不配置时,默认MTU为1500(Default MTU size 1500 bytes)测试命令:ping -sframeworks/opt/telephony 客制化MTU,最终在packages/modules/Connectivity 模块会…

wps快速生成目录及页码设置(自备)

目录 第一步目录整理 标题格式设置 插入页码(罗马和数字) 目录生成(从罗马尾页开始) ​编辑目录格式修改 第一步目录整理 1罗马标题 2罗马标题1一级标题 1.1 二级标题 1.2二级标题2一级标题 2.1 二级标题 2.2二级标题3一级标…

VMWare ubuntu共享宿主机window11文件夹

宿主机window的设置 找到需要共享的文件夹,比如我需要share文件夹共享到虚拟机中 点击“共享”文件夹属性,如果找不到“共享”选项卡,需要在下面的“选项”中 注意勾选“使用共享向导(推荐)”,如果已经勾…

notepad++打开文本文件乱码的解决办法

目录 第一步 在编码菜单栏下选择GB2312中文。如果已经选了忽略这一步 第二步 点击编码,红框圈出来的一个个试。我切换到UTF-8编码就正常了。 乱码如图。下面分享我的解决办法 第一步 在编码菜单栏下选择GB2312中文。如果已经选了忽略这一步 第二步 点击编码&#…

生成式 AI - Diffusion 模型 (DDPM)原理解析(1)

来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM) 论文链接:https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、整体运作二、Denoise module三、Noise Predictor四、Text-to-Image 简单地介绍diffusion mode…

新的开始,新的征程

应无所住而生其心。 过去心不可得,现在心不可得,未来心不可得。 尽人事,听天命,事在人为。 2024,新的开始,加油!

安装部署k8s集群

系统: CentOS Linux release 7.9.2009 (Core) 准备3台主机 192.168.44.148k8s-master92.168.44.154k8s-worker01192.168.44.155k8s-worker02 3台主机准备工作 关闭防火墙和selinux systemctl disable firewalld --nowsetenforce 0sed -i s/SELINUXenforcing/SELI…

[嵌入式系统-20]:RT-Thread -6- 内核组件编程接口 - 线程编与线程间同步、互斥:信号量、互斥锁

目录 一、线程管理(Thread) 二、信号量(Semaphore) 2.1 概述 2.2 rt_sem_create 和 rt_sem_init的区别 三、互斥锁(Mutex) 一、线程管理(Thread) 线程(Thread&…