高并发高可用架构设计之简介
设计一个好的架构需要满足:高并发、高性能、高可用 三个条件。
举一个实际的例子,如高并发方面要求QPS 大于 10万;高性能方面要求请求延迟小于 100 ms;高可用方面要高于 99.99%。
注:QPS(Query Per Second):每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。
高并发
高并发指的是系统能够同时处理大量请求。
解决高并发的首选方案当然是集群化部署啦,一台服务器的QPS是有极限的,那就多加几台服务器来分担了。
用了集群化部署,就要考虑如何将流量分发到集群,这就用到了负载均衡技术,目前流行的是 LVS 和 Nginx。
常用的负载算法有轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接数法等。
注:LVS 负责网络四层协议转发,无法按 HTTP 协议中的请求路径做负载均衡,所以还需要 Nginx。
业务实战:对于千万级流量的秒杀业务,一台LVS扛不住流量洪峰,通常需要 10 台左右,其上面用DDNS(Dynamic DNS)做域名解析负载均衡。搭配高性能网卡,单台LVS能够提供百万以上并发能力。
高性能
高性能是指系统处理单个请求的响应时间,这个指标对用户来说是最直观的,也是最能提现代码编写的好坏的能力的。
影响系统性能有如下几个方面
- 用户网络环境
- 请求/响应的数据包大小
- 业务系统 CPU、内存、磁盘等性能
- 业务链路的长度
- 下游系统的性能
- 算法实现是否高效
高可用
高可用是指服务可用时长,以及故障恢复等。
解决方案有主备切换,减少故障时间;熔断,提供过载保护;限流,提供过载保护;降级等。