发表于 2021-12-08 11:52:26 by 月小升
- 小的时候,只有一台服务器,把程序,文件,数据库丢在一起
2. 流量变大了,买了三台服务器,把程序,文件,数据库分开
3. 为了加速,开始加入缓存服务器组,redis,memcached 等
4. 流量进一步增加,开始用负载均衡,把应用服务器,改为一组,使用LVS,NGINX减少单机应用压力
5. 数据库进行读写分离,主库负责写,多台从库负责
6. 当流量更大的时候,负载均衡也扛不住了,CDN分发。让DNS根据客户IP的不同,在全国各地不同的地方访问不同的服务器组
7. 网站越来越大,文件也越来越多,上大型文件系统,HDFS为代表
8. 数据库用NOSQL,搜索为了进一步加速,采用搜索引擎
9. 将不同的项目拆分为不同的服务,比如百度的图片和百度知道,项目之间用消息队列服务
10. 加入分布式调度服务器,将系统的功能,进行拆分。比如商品服务,支付服务
学习资料 https://www.cnblogs.com/huxuanjing/p/12585109.html
https://mp.weixin.qq.com/s?__biz=MzkwOTIxNDQ3OA==&mid=2247533559&idx=1&sn=06ad183cfd7c413dc1d0b2a43a18fc16&source=41#wechat_redirect
1.大型网站分为三类
- 大型门户- 以静态页面为主,大量采用CDN,静态化进行优化
- SNS - 动态为主 大量采用NOSQL,分布式缓存,高性能通信框架优化
- 电商 兼备以上两种
2.需求特点
- 内容多,商品多,用户多,要求海量存储,能抗并发
- 系统规模大,关系商品管理,购物管理,支付管理,评论管理,客服管理,广告管理等
- 有很多突发流量情况发生,比如秒杀
3.流量测算
1000万用户,UV大约200万,20%原则
每天30次
PV一天6000万
20%的时间,有80%的访问量 4.8小时访问了4800万
一分钟并发4.8*60=288分钟,每分钟为16.7万,、
每秒为2780次
假设高峰为平时3倍大约每秒9000次。
按一台tomcat 每秒300次,那么要10台,高峰期需要30台
4.预估的浪费问题
30台机器,只有高峰采用,所以有很大的浪费,要合理部署,对应用进行切分。
应用切分
- 核心-产品系统
- 核心-购物系统
- 核心-支付系统
- 评论系统
- 广告系统
- 客服系统
- 基础-会员系统
部署模式
数据库和缓存
- 数据读写分离
- 使用redis
- 使用MQ
- 使用本地缓存
其他技术
- 单点登录
- 反向代理
- CDN
- 分布式文件存储系统
- 检索系统
https://xie.infoq.cn/article/597c7d0ff10d35c81314f0c9b 分五层比较详细
1. 网页缓存层 CDN
2. 负载均衡层
- 第一层:LVS 或者HAproxy 实现流量分组(内网和外网隔离、爬虫和非爬虫流量隔离)、内容缓存、请求头过滤、故障切换(机房故障切换到其他机房)、限流、防火墙等一些通用型功能,无状态设计,可以水平扩容
- 第二层:Nginx 可以实现业务逻辑,或者反向代理到如 Tomcat,这一层的 Nginx 与业务相关联,可以实现业务的一些通用逻辑。
3.Web服务器层
优先选用nginx,Java采用SpringBoot
4.文件服务器层
图形文件要做独立的服务器部署,JS等文件利用CDN缓存
5.数据库层
底层是MYSQL,NOSQL,上层加缓存Redis, 消息队列
This entry was posted in
JAVA and tagged
架构. Bookmark the
permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:
月小升博客 –
https://java-er.com/blog/big-e-buy-website/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.