1.运维服务器方面:2台web机器,机器配置是4核,16G的配置,主从,3台mysql,主从加备份数据库,resdis一台机器
2.可以处理1秒钟1000次请求,如果预估是1秒钟4000次请求的话,则需要4台web机器,top命令查询load average如果cpu快达到4了就需要加机器了
3.前端使用cdn加速,JS、CSS打包压缩,使用分布式缓存,读取数据从缓存读取
4.并发量高的话使用队列异步处理
5.数据库做读写分离,百万级别看是读的多还是写的多,读的话做缓存服务器
6.用户登录做中央登录系统,实现单点登录,接口调用必须是100毫秒内返回,否则就抛异常
7.每个接口请求的数量和压力肯定是有的,如果高的话那就限流,到达峰值的话就抛异常
8.对接口限流某个接口的时间窗请求数,限流某个接口的总并发/请求数,我们要对每秒/每分钟的调用量进行限速
9.监控系统搭建
10.系统拆分成应用层、服务层、数据层, 应用层包含商品列表展示、加入购物车、下单、支付,服务层包含账户服务,登录服务
数据层包含数据库服务、缓存服务、文件图片服务、搜索服务
11.静态资源单独部署在一台机器上,主从
服务层:提供可复用的服务
应用层:处理具体的业务逻辑
数据层:数据的存储和访问
11.比如基础类库底层搭建,各业务通过rpc调用,根据业务进行拆分
前端架构
浏览器优化技术(缓存,压缩,合并减少请求)
CDN
静态资源独立部署
反向代理
DNS
应用层架构
并发结构
负载均衡
session管理
动态转静态(访问多,变化少)
业务拆分
服务层架构
分布式服务
分布式消息
分布式缓存
分布式配置
存储层架构
分布式文件系统
关系数据库分库
NOSQL
数据同步
后台架构
搜索引擎
数据仓库
推荐系统
数据采集与监控
浏览器数据采集
服务器(业务,性能)数据采集
系统监控
系统报警
安全架构
WEB攻击
数据保护
重要的高并发技术
1.负载均衡技术:为了解决服务器集群的高可用及负载,平均分配资源,以减少服务的延时。常用的硬件解决方案如F5;软件解决方案如LVS(工作在4层和7层),Haproxy,Nginx(工作在7层)以及zookeeper等。
2.CDN技术,这是为了解决静态页面及图片缓存的,提高访问效率
3.缓存技术
4.数据库级的高并发技术,如分库、分表,高可用集群等。
消息中间件,分布式缓存,分布式数据库,再加上负载均衡器(包括简单的HTTP/TCP的,也包括其它的像MyCAT这种数据库的)。这些都是实现高并发架构的重要组成部分。
高并发有三个瓶颈:
传输层,大量用户发出请求后,会对网络带宽和web服务器的I/O造成瓶颈;
计算层,将会造成业务服务器的瓶颈;
存储层,会导致数据库和存储的瓶颈。
大型并发架构就是利用负载均衡,缓存,分布式集群等技术,把访问量分散到不同的机器上处理
分层架构是逻辑上的,在物理部署上,三层架构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,使网站拥有更多的计算资源,以应对越来越多的用户访问
分层、分隔、异步、分布式、集群、缓存、安全、自动化
分隔:比如在应用层,将不同业务进行分隔,例如将购物、论坛、搜索、广告分隔成不同的应用,有对立的团队负责,部署在不同的服务器上
分布式:分布式应用和服务、分布式数据存储、分布式静态资源、分布式计算
集群:对用户访问集中的模块需要将独立部署的服务器集群化,即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务。
缓存:具体实现有CDN、反向代理、本地缓存、分布式缓存等。
使用缓存有两个条件:访问数据热点不均衡,即某些频繁访问的数据需要放在缓存中;数据在某个时间段内有效,不过很快过期,否在会因为数据过期而脏读,影响数据的正确性。
自动化:具体有自动化发布过程,自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复等
安全:登录、交易需要对网络通信进行加密;为了防止机器人程序滥用资源,需要使用验证码进行识别;对常见的XSS攻击、SQL注入需要编码转换;垃圾信息需要过滤等。