干货丨千万流量大型分布式系统架构设计实战
架构之美
共 9591字,需浏览 20分钟
· 2021-09-12
- 前言 -
- 大型分布式网站架构技术 -
用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验
高性能:提供快速的访问体验。 高可用:网站服务一直可以正常访问。 可伸缩:通过硬件增加/减少,提高/降低处理能力。 安全性:提供网站安全访问和数据加密、安全存储等策略。 扩展性:方便地通过新增/移除方式,增加/减少新的功能/模块。 敏捷性:随需应变,快速响应;
- 高性能架构 -
前端优化:网站业务逻辑之前的部分; 浏览器优化:减少HTTP请求数,使用浏览器缓存,启用压缩,CSS JS位置,JS异步,减少Cookie传输;CDN加速,反向代理; 应用层优化:处理网站业务的服务器。使用缓存,异步,集群 代码优化:合理的架构,多线程,资源复用(对象池,线程池等),良好的数据结构,JVM调优,单例,Cache等; 存储优化:缓存、固态硬盘、光纤传输、优化读写、磁盘冗余、分布式存储(HDFS)、NoSQL等。
- 高可用架构 -
应用层:一般设计为无状态的,对于每次请求,使用哪一台服务器处理是没有影响的。一般使用负载均衡技术(需要解决Session同步问题)实现高可用。 服务层:负载均衡,分级管理,快速失败(超时设置),异步调用,服务降级,幂等设计等。 数据层:冗余备份(冷,热备[同步,异步],温备),失效转移(确认,转移,恢复)。数据高可用方面著名的理论基础是CAP理论(持久性,可用性,数据一致性[强一致,用户一致,最终一致])
- 可伸缩架构 -
应用层:对应用进行垂直或水平切分。然后针对单一功能进行负载均衡(DNS、HTTP[反向代理]、IP、链路层)。 服务层:与应用层类似; 数据层:分库、分表、NoSQL等;常用算法Hash,一致性Hash。
- 可扩展架构 -
模块化,组件化:高内聚,低耦合,提高复用性,扩展性。 稳定接口:定义稳定的接口,在接口不变的情况下,内部结构可以“随意”变化。 设计模式:应用面向对象思想,原则,使用设计模式,进行代码层面的设计。 消息队列:模块化的系统,通过消息队列进行交互,使模块之间的依赖解耦。 分布式服务:公用模块服务化,提供其他系统使用,提高可重用性,扩展性。
- 安全架构 -
- 敏捷性 -
- 大型架构举例 -
- 大型电商系统的演进过程 -
- 一张图说明电商架构 -
- 大型电商网站架构案例 -
大型门户,比如网易,新浪等; SNS网站,比如校内,开心网等; 电商网站,比如阿里巴巴,京东商城,国美在线,汽车之家等。
建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款; 用户购买时可以在线与客服沟通; 用户收到商品后,可以给商品打分,评价; 目前有成熟的进销存系统;需要与网站对接; 希望能够支持3~5年,业务的发展; 预计3~5年用户数达到1000万; 定期举办双11、双12、三八男人节等活动; 其他的功能参考京东或国美在线等网站。
- 需求功能矩阵 -
- 网站初级架构 -
使用集群对应用服务器进行冗余,实现高可用;(负载均衡设备可与应用一块部署) 使用数据库主备模式,实现数据备份和高可用;
注册用户数-日均UV量-每日的PV量-每天的并发量; 峰值预估:平常量的2~3倍; 根据并发量(并发,事务数),存储容量计算系统容量。
每天的UV为200万(二八原则); 每日每天点击浏览30次; PV量:200*30=6000万; 集中访问量:24*0.2=4.8小时会有6000万*0.8=4800万(二八原则); 每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于); 每秒并发量:16.7万/60=2780(约等于); 假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。 1毫秒=1.3次访问;
需要部署大量的服务器,高峰期计算,可能要部署30台Web服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。 所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。 大量应用存在冗余代码 服务器Session同步耗费大量内存和网络带宽 数据需要频繁访问数据库,数据库访问压力巨大。
业务拆分 应用集群部署(分布式部署,集群部署和负载均衡) 多级缓存 单点登录(分布式Session) 数据库集群(读写分离,分库分表) 服务化 消息队列 其他技术
缓存自动过期; 缓存触发过期;
- 流程说明 -
- 架构汇总 -
作者:烂猪皮
来源:
https://my.oschina.net/editorial-story/blog/1808757
评论
Apache Paimon毕业,湖仓架构的未来发展趋势!
北京时间 2024 年 4 月 16日,开源软件基金会 Apache Software Foundation(以下简称 ASF)正式宣布 Apache Paimon 毕业成为 Apache 顶级项目(TLP, Top Level Project)。经过社区的共同努力和持续创新,Apache Paim
程序源代码
0
小目标检测实战
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达利用切片辅助的超级推断目标检测是计算机视觉中的基本任务之一。在高层次上,它涉及预测图像中物体的位置和类别。像You-Only-Look-Once(YOLO)系列中的最先进(SOTA)深度学习模型已经达到了令人瞩目的准确度。然而,目
小白学视觉
0
测试新人,如何快速上手一个陌生的系统!
大家好,我是狂师!作为刚入行不久的测试新人,面对一个陌生的系统时,可能会感到有些手足无措。面对一个全新的系统系统,如何快速上手并展开有效的测试工作是一个重要的挑战。本文将探讨测试新人如何通过一系列步骤和策略,快速熟悉并掌握新系统的测试要点,从而提高测试效率和质量。本文旨在为测试新手提供一份指导,帮助
测试开发技术
0
5000w+ 的大表如何拆?亿级别大表拆分实战复盘
前言笔者是在两年前接手公司的财务系统的开发和维护工作。在系统移交的初期,笔者和团队就发现,系统内有一张5000W+的大表。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。进一步的观察发现,这张表还在以每月600W+的数据持续增长,也就是说,不超
码农编程进阶笔记
0
教你基于 Jenkins 搭建一套 CI/CD 系统
原文链接:https://mp.weixin.qq.com/s/KVc4IFky1z7kZn-7bz79DQ一、CI/CD环境介绍本次要实现如下效果,开发人员完成功能开发并提交代码到gitlab仓库,jenkins自动完成拉取代码、编译构建、代码扫描(sonarqube)、打
码农编程进阶笔记
0
架构应该如何来理解?
来源:zhuanlan.zhihu.com/p/141027477👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:htt
小哈学Java
0
AI数据中心网络架构需求:400/800G光模块
随着AI技术和相关应用的不断发展,大模型、大数据和AI计算能力在AI发展中的重要性日益凸显。大模型和数据集构成AI研究的软件基础,而AI算力是关键的基础设施。在本文中,我们将探讨AI发展对数据中心网络架构的影响。下载链接:AI数据中心网络架构需求:400/800G光模块Fat-Tree数据中心网络架
架构师技术联盟
0
springboot第70集:字节跳动后端三面经,一文让你走出微服务迷雾架构周刊
创建一个使用Kubernetes (K8s) 和 Jenkins 来自动化 GitLab 前端项目打包的CI/CD流水线,需要配置多个组件。下面,我将概述一个基本的设置步骤和示例脚本,以帮助你理解如何使用这些工具整合一个自动化流程。前提条件确保你已经有:Kubernetes 集群:用于部署 Jenk
程序源代码
0