亿级流量网站架构技术笔记

一、常见的原则

1、高并发原则

无状态

如以前使用session机制,现在转变为使用jwt或者token机制

拆分

如应用服务的拆分

服务化

消息队列

数据异构

如:将数据同步到es,使用es提高模糊搜索的效率等

缓存银弹

如:将常用的数据进行缓存。

并发化

对一些可以并行处理的逻辑,进行并发化的处理。

2、高可用原则

降级、限流、切流量、可回滚

3、业务设计原则

防重设计

幂等设计

流程可定义

状态与状态机

后台系统操作可反馈

后台系统审批化

二、高可用工具

2.0、资源的可用性

一切皆资源。

当客户访问某个页面的时候,其从客户端的网络、网络带宽、CDN、服务器、应用、再到存储;整条链路上其实涉及到很多的服务,只有每个节点都能够正常的提供服务,才能保证客户使用到正常的业务,这条链路上的服务,我都统称为资源。

可见对于一个业务的高可用,其实涉及到很多层次的内容。怎么保障资源的高可用,一般来说的策略就是资源冗余(负载均衡)、资源隔离、资源监控(故障检测)、自我修复(弹性伸缩)、自我保护(限流熔断)。

资源的冗余,主要是涉及到资源的拆分(如服务拆分、数据库拆分)、资源的备份(如集群);资源冗余之后就需要有负载均衡去进行寻址和路由。

2.1、负载均衡

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,主要是涉及到网络通讯调用(也包含了微服务之间的调用)的时候。

根据网络层的定位:有4层负载如LVS/F5/NGINX,也有7层负载如NGINX。

根据负载的类型分:客户端负载均衡(如微服务的调用)与服务端负载均衡(如nginx)

负载均衡必须要考虑的问题:路由策略、超时处理、心跳检测、失败重试

线上有CDN对GET的超时处理会进行重发,如果重发的请求对服务器的消耗比较大,比如是报表查询;则可能因为重发而导致服务器的崩溃。

2.2、隔离术

隔离技术主要是对被访问的资源进行分类,同类的资源可以有类似的表现。避免资源间的互相影响,能有更稳定的表现。

线程隔离

在使用的时候会将请求分类,交给不同的线程池处理。避免故障扩散到其他线程池。(主要是对线程资源)

进程/集群/机房隔离

这些其实从服务拆分或者应用部署方面去看

动静隔离

主要是前后端分离,可以将静态资源放在CDN,加快访问速度,也避免占用后端资源的带宽

读写隔离

redis、mysql,mq等。对于存储来说,读操作和写操作的表现不一样,很多时候会将读写进行分离。大多数采用master-slave的架构。

热点隔离

比如抢购或者秒杀活动,这个时候会给系统带来压力。对于读热点,一般使用多级缓存进行处理。对于写热点,一般通过缓存+队列的方式削峰填谷。

资源隔离

主要指服务器资源的隔离,如果是容器一般使用cgroup可以做到cpu和内存的隔离;其他如果采用虚拟机的方式进行资源隔离(但相对比较重);

线上较多可能对不同的服务器进行分类,是磁盘io密集型的,还是网络io密集型的,还是cpu密集型的。尽量将容易产生资源竞争的应用分开部署。

不同的中间件对系统的重要性也不一样,比如日志服务(elk+kafka)和注册中心(zk);日志服务的重要性明显不比注册中心,当kafka的压力上来,可能会导致cpu飚高,引起zk的处理变慢,这个时候应该对这两种类型的服务分开部署。

2.3、限流

限流算法

- 令牌桶算法

- 漏桶算法

限流策略

总并发、总链接

单接口的请求数

2.4、降级

 降级预案    

三、高并发工具

3.1、缓存的设计

流程节点缓存技术
客户端使用浏览器缓存
客户端应用缓存
客户端网络代理服务器开启缓存(较少见)
广域网使用代理服务器(如CDN)
使用镜像服务器
使用P2P技术
源站及源站网络使用接入层提供的缓存机制(nginx)
使用应用层提供的缓存机制
使用分布式缓存(如redis)
静态化、伪静态化(预处理)
使用服务器操作系统提供的缓存机制

3.2、应用级缓存

3.3、HTTP缓存

3.4、多级缓存

3.5、异步并发

3.6、存储扩容

3.7、队列技术

缓冲队列

任务队列

消息队列

请求队列

四、案例分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值