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

高并发场景系统设计的时候应该怎么考虑?

主要考虑三个方面,一个是架构,一个是容量,还有一个是调优。

架构方面要考虑的主要是架构拆分、加速和增加吞吐量技术。

架构拆分的常用技术比如:DDD四层架构、六边形架构、微内核架构,还有像k8s架构那种基于角色的拆分;还有异步化,基于事件驱动来分阶段处理;查询分等级,实时走数据库,列表等大查询走ES等搜索引擎;读写分离。

267a8c10150ecc66de48d4cf827558af.png

加速和增加吞吐量技术常用的比如:CDN、缓存、负载均衡、合理进行业务编排并行执行,还可以考虑使用webflux等响应式编程框架。

3ff8c3157607c31890bf7d731feb54cc.png

业务容量需要做到可衡量、可观测、可应对。容量包含数据量和并发量两方面。数据量方面比如数据库容量,我之前的项目,数据库容量的对应措施是使用日表、月表这样方便定期删除归档的手段,让数据库表的容量在一定数量级范围内维持稳定的容量水位。这也是一种冷热分离的手段,减轻当前热数据的存储量,提高性能。

容量设计要考虑两方面:一方面是容量伸缩,另一方面是容量防御。

容量伸缩主要遵循AKF扩展立方。X轴水平扩容,Y轴垂直领域拆分扩容,Z轴按一定的算法规则扩容。

b22009c119c5dcd12d9fdeb3a3aefb1f.png

容量防御方面的手段比如:隔离、混部、流控、熔断和降级。一旦出现问题,先让系统柔性地提供服务,争取一个扩容的时间。

调优技术比如:JVM调优减少GC停顿,无垃圾化减少GC,梳理业务优化模型。

相关文章:

  • python入门,数据容器:set集合
  • mybatis核心配置文件介绍
  • 作业:通过两台linux主机配置ssh实现互相免密登陆
  • 大模型背景下计算机视觉年终思考小结(一)
  • 【计算机组成原理】高速缓冲存储器 Cache 的写策略(Writing Policy)
  • 【教学类-43-20】20240113 数独(二)4宫格、9宫格 无空行A4模板
  • 【REST2SQL】05 GO 操作 达梦 数据库
  • 代码随想录算法训练营第八天|344.反转字符串 ,541. 反转字符串II ,151.翻转字符串里的单词,55.右旋转字符串
  • Python中如何简化if...else...语句
  • SSH远程访问与控制
  • Python 密码设置输入掩码的方法
  • linux 网络设置
  • C#监听Dictionary、List的写入操作
  • windows下如何搭建Yapi环境
  • 深入 Move 生态,探秘铭文热潮背后的思考
  • 分享一款快速APP功能测试工具
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Django 博客开发教程 8 - 博客文章详情页
  • DOM的那些事
  • es6
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Javascript基础之Array数组API
  • js继承的实现方法
  • laravel5.5 视图共享数据
  • passportjs 源码分析
  • Python中eval与exec的使用及区别
  • Sass Day-01
  • uva 10370 Above Average
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 每天一个设计模式之命令模式
  • 区块链技术特点之去中心化特性
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 我的面试准备过程--容器(更新中)
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (分布式缓存)Redis哨兵
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot教学评价 毕业设计 641310
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转载)OpenStack Hacker养成指南
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .form文件_SSM框架文件上传篇
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net core使用ef 6
  • .net 反编译_.net反编译的相关问题
  • .NET 命令行参数包含应用程序路径吗?
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 依赖注入和配置系统