高并发是由于应用系统(如:移动APP或网站等)即页面浏览量或点击量大,单台服务器无法承载大量访问所带来的压力,因此会采用服务器硬件集群技术,用N台服务器进行分流,对于每次访问采取负载均衡策略,被分配到不同的服务器来处理请求。
负载均衡种类
一种是通过硬件来实现,常见硬件有F5,A10,NetScaler、Radware和Array等商用的负载均衡器,但是它们是比较昂贵,成本比较高。
另一种是通过软件来实现,常见的软件有LVS、Nginx、Apache等,它们是基于Linux系统并且开源的负载均衡策略。
整体架构图:
架构说明:
Keepalived:是用来检测服务器的状态,如果有一台web服务器宕机,或工作出现故障时,Keepalived将会检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
Keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
LVS(Linux Virtual Server):即Linux虚拟服务器,有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),十种调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
Nginx:是一个很强大的高性能Web和反向代理服务器,通常作为负载均衡服务器。
负载均衡功能归纳:
转发请求
故障移除
恢复添加
Tomcat :是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。
Redis:是一个高性能的key-value数据库(Nosql),在高并时需配置主从同步。在Tomcat集群时可解决实现Session共享,在并发量大时可作为缓存数据库,避免Mysql数据库请求压力。如电商网站搞秒杀促销活动时,数据直接存储到Redis数据库,然后以一定时间规则同步到Mysql数据库中。
Mysql:作为目前世界上使用最广泛的免费数据库,在高并访问时通过主从复制(Master-Slave)的方式来同步数据实现高可用性,通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力,再通过路由 Hash算法实现水平拆分,库表散列的来提升查询速度能力。
注:除了服务器架构级别实现高并发外,应用程序级别设计也很重要。
本文分享自微信公众号 - 程序猿技术大咖(cxyjsdk)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/587487/blog/4572857