网站要处理超大规模的访问量,高并发请求,给用户良好的体验离不开web性能优化,web性能优化的基本解决方案为
HTML静态化、图片服务器分离、数据库集群、负载均衡,其中负载均衡是最有效的提升网站性能的方法之一
网站架构背景:
单机结构:所有代码部署在一个项目,这个项目部署在一台服务器上
特点:使用简单、配置成本低,数据共享程度高,集中输入速度低,不能允许并发操作,并且不能进行分布式处理
集群:同一个项目部署在多个服务器(节点)上,每个节点提供相同的服务,如果用户发出请求,由负载均衡服务器根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理
特点:系统利于扩展,层次功能分明,调度复杂
分布式结构:完整的系统分成若干个独立的子系统(服务),独立运行在web容器中,分布在不同的服务器中,通过RPC方式通信;利用大量计算机节点完成单个计算机无法完成的计算和存储服务
特点:降低了子系统耦合度,易于维护,易于开发,提高复用性
网站目前大部分采用分布式集群结构,这个结构能够支持高并发访问,快速响应用户请求,但是因为存在大量计算机节点,均衡的调度就非常重要
负载均衡
概念:如果一组计算机节点(或者一组进程)提供相同的(同质的)服务,那么对服务的请求就应该均匀的分摊到这些节点上
意义:让所有节点以最小的代价、最好的状态对外提供服务,提高系统吞吐量,缩短用户访问时间,它增强了系统的可靠性,最大化降低了单个节点过载、甚至宕机的概率
常见负载均衡技术
DNS:域名作为访问入口,通过配置多条DNS A记录使得请求可以分配到不同的服务器
CDN:通过发布机制将内容同步到大量的缓存节点,并在DNS服务器上进行扩展,找到里用户最近的缓存节点作为服务提供节点
IP负载均衡:分为软件(LVS、HAProxy、NginX)和硬件(F5-BIG-IP-GTM),从网络层分为四层(LVS)和七层(NginX,HAProxy, Apache)
硬件负载均衡--性能和稳定性更好,而且商用产品的可管理性、文档和服务比较好,价格贵
软件负载均衡--开源软件,自由度较高,但学习成本和管理成本会比较大
负载均衡算法
- 轮询算法(round-robin)
- 加权轮询算法(weight round-robin)
- 随机算法(random)
- 加权随机算法(random)
- 哈希法(hash)
- 一致性哈希
- 最少连接算法