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

互联网三高架构设计

1 业务架构

        1.1 功能分离

                目标:确保核心功能的高可用和高并发

                ① 区别核心功能和非核心功能

                ② 流量突发性(秒杀)和流量平缓型

                ③ 功能隔离和功能降级

        1.2 业务分层

                (1)分层设计

 

              (2)分层过滤模型

                        ① 直筒型:用户请求1:1洞穿到DB层

                                传统的低并发、低性能、低可用的项目

                        ② 漏斗型

                        互联网应用

                        请求峰值和平均值相差巨大

                        请求峰值远远超过最后一层(数据层)处理能力

                (3)幂等性原则

                        一次请求和多次请求同一个资源产生相同的结果

                        需要幂等的场景

                                ① 网络波动

                                ② 消息队列消费

                                ③ 用户重复操作

                                ④ 未关闭的重试机制

                        幂等性解决方案

                                ① 全局唯一ID

                                ② 唯一索引

                                ③ 多版本控制

                                ④ 状态机控制

2 流量架构

        按照未来一段时间(2年)的用户规模,做系统流量的预估。再按照流量预估和系统各层组件的性能参考值,做各层组件的部署架构。

        2.1 二八定律

                核心原则:关注重要部分,忽略次要部分

                利用二八定律来计算预估值

                        ① 通过用户量来推算PV

                                公式:(总用户量 * 20%) * 每天大致点击次数(淘宝经验值30-50次) = PV值

                                比如:总用户量为100万

                                PV值 = 100w * 0.2 * 30 = 600w

                        ② 通过PV推算QPS

                                公式:(PV数 * 80%)/ (每天秒数 * 20%) = 峰值QPS

                                峰值QPS = (600w * 0.8)  / (24*60*60*0.2)= 277

                        ③ 加上冗余系数

                                行业经验一般是2-5之间

                                QPS = 峰值QPS * 冗余系数

                                QPS= 277 * 4 = 1108

                        所以100w用户,QPS大概为1000左右

                        二八定律算法:80%的请求 / 20%时间 * 冗余系数

        2.2 中间件规划(根据不同的用户、QPS)

3 数据存储架构

        3.1 数据库服务器参考能力

                内在因素

                        ① 确认数据库:MySQL

                        ② 机器性能:CPU核数、内存大小、磁盘IO能力、网络带宽等

                外在因素

                        ② 应用服务:是复杂查询还是简单查询

                        ② 单表容量:500w正常、800w警戒线、1000w必须分库分表

        3.2 分库分表架构

               (1) 为什么要分库分表

                        IO瓶颈:磁盘读写IO瓶颈

                        CPU瓶颈:SQL问题,单表数据量太大

                (2)库表数量规划

                        可以按照两年规划,一天100w数据量

                        100w * 365 * 2 = 7亿数据量

                        ① 表的数量规划(单表标准值:500w)

                                7亿 / 500w = 146 ==>换成2的次幂,128张表

                                7亿 / 128 = 546w ,没有超过警戒线800w 

                        ② 库的数量规划(根据QPS计算,1wQPS,MySQL QPS参考值为1500)

                                1w / 1500 = 7 ==>换成2的次幂,8个库

                        128 / 8 = 16,所以最终规划为 8 * 16(8个库,每个库16张表)

                (3)分库分表技术选型

                        推荐:ShardingJDBC,比较成熟的技术方案。基于JDBC协议的轻量级框架,支持分库分表、读写分离、分布式事务,适用于复杂业务场景(如电商订单系统)‌

        3.3 冗余双写架构

                根据不同的维度,聚合异构数据(用户维度,商家维度),比如电商系统,订单就应该做冗余双写方案,客户和商家不同维度。

                ① MQ + MySQL异构方案:我之前带着团队完整的短网址平台就是使用这种方式。消费端生成短网址根据不同的分库分表策略异冗余双写到不同的库表中。

                ② 直接RPC调用+Seata分布式事务框架

                ② ES + Hbase异构方案

相关文章:

  • JAVA对象创建过程和类加载过程
  • 整车CAN网络和CANoe
  • 如何使用Python自动化测试工具Selenium进行网页自动化?
  • Java类加载机制深度解析
  • 蓝桥杯基础算法-字符串与集合
  • 瑞萨RA4M2使用心得-KEIL5的第一次编译
  • pipwire cpu 100%使用率的问题
  • 大模型学习五:‌DeepSeek Janus-Pro-7B 多模态半精度本地部署指南:环境是腾讯cloudstudio高性能GPU 16G免费算力
  • 定制一款国密浏览器(3):修改浏览器应用程序安装路径
  • Java 基础-31-枚举-认识枚举
  • 每日一题(小白)回溯篇4
  • ngx_timezone_update
  • Python----计算机视觉处理(Opencv:道路检测之车道线拟合)
  • OpenSceneGraph 中的 osg::Transform详解
  • 图片尺寸修改软件下载
  • 车载ECU底软测试:方法与技术的深度解析
  • 利用NumPy核心知识点优化TensorFlow模型训练过程
  • 大厂机考——各算法与数据结构详解
  • ERP系统五大生产模式概述
  • Python如何将已经安装的包导出为 .whl 文件以便离线使用
  • 网站开发用软件/西安seo主管
  • 哪个网站买东西最便宜/怎么安装百度
  • 长宁哪里有做网站优化比较好/域名备案
  • wordpress 后台代码/宁波seo搜索优化费用
  • 建设一个微信小说网站/seo网站系统
  • 合肥商城网站建设多少钱/注册google账号