最近研究了几个关于阿里研究院对于高并发的解决方案,总结一下,涨涨姿势。
1、客户端通过企业防火墙发送请求
2、在App服务器如tomcat接收客户端请求前,面对高并发大数据量访问的企业架构,会通过加入负载均衡主备服务器将请求进行转发到不同web服务其中。
3、服务器通过访问数据库进行交互,同样高并发大数据会涉及到数据库处理高并发的方案
4、另外会添加多台服务器用作缓存、消息处理等
高并发一般会发生在1、负载均衡处 2、数据库高并发;阿里研究院也针对这两个并发情况提供了相应的解决方案。
应对高并发,解决方案大多从服务器级别和应用程序级别【硬件和软件】两个方向进行,如增大服务器的CPU,增加内存,或者直接购买高性能服务器。但随着业务的不断增加,服务器性能也达到瓶颈。第二个方向就是从应用程序级别也就是软件设计编码方向,如HTML静态化、图片服务器分离、分布式缓存,减少客户端访问时并发请求的数据。
什么是DNS?
简单理解:Domain Name System,域名系统是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网。例如我们将程序发布到192.168.55.145 和144两台服务器上,通过DNS可以设置一个统一的访问入口,如www.Max1209.com对这两台服务器上的服务进行访问。用户直接访问www.Max1209.com主机名而不需记住机器IP,通过主机名,最终得到该主机名进行域名解析得到对应的IP地址进行访问。
DNS如何实现负载均衡?
在DNS服务器中,可以为多个不同的IP配置同一个名字,这个数据被发送给其他名字服务器,而最终查询这个名字的客户机将在解析这个名字时随机使用其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,因此不同的客户访问的也就是不同地址的Web服务器。简单说,也就是一个外观,给部署了同一个网站的n多台服务器设置同一个名字,不同地区或者不同特点的用户访问同一个名字,实际接收客户请求的是外观里的不同ip的服务器,从而达到负载均衡的目的。
同时面对更高访问量需求,DNS可以以设置成树状,多个DNS服务器将请求分发给下一个DNS服务器,N层解析之后再访问到应用服务器,这样就可以增加应用服务器的个数,应对更大并发数据请求。
但使用DNS负载均衡的时候,如果服务器发生故障,DNS继续把请求发送给故障机器,一直到把故障服务器从DNS中移走为止,这样用户就只能等到DNS连接超时后才能访问到目标网站。
下面将介绍其他两种负载均衡的实现方案。