干货丨千万流量大型分布式系统架构设计实战
架构之美
设计满足业务的系统架构、大数据中台、算法平台,并非易事。在这里分享一线大厂线上真实案例的思考和实践,让我们在互联网架构设计、大数据研发、机器学习实践之路上共同成长!
Official Account
- 前言 -
- 大型分布式网站架构技术 -
-
用户多,分布广泛 -
大流量,高并发 -
海量数据,服务高可用 -
安全环境恶劣,易受网络攻击 -
功能多,变更快,频繁发布 -
从小到大,渐进发展 -
以用户为中心 -
免费服务,付费体验
-
高性能:提供快速的访问体验。 -
高可用:网站服务一直可以正常访问。 -
可伸缩:通过硬件增加/减少,提高/降低处理能力。 -
安全性:提供网站安全访问和数据加密、安全存储等策略。 -
扩展性:方便地通过新增/移除方式,增加/减少新的功能/模块。 -
敏捷性:随需应变,快速响应;
- 高性能架构 -
-
前端优化:网站业务逻辑之前的部分;
-
浏览器优化:减少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
架构之美
设计满足业务的系统架构、大数据中台、算法平台,并非易事。在这里分享一线大厂线上真实案例的思考和实践,让我们在互联网架构设计、大数据研发、机器学习实践之路上共同成长!
Official Account