强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan
【前言】
无数人撞的头破血流告诉我们的一个经验是一个网站如果不做负载后果是不堪设想;负载一是对请求进行分压不至于大流量过来把机器压垮,即使部分机器Down掉网站仍可用(高可用,防止单点故障)。
【负载中不得不知的一些秘密】
1.做负载的有很多选择,从大的方面分为两种:
(1)硬负载
F5:效率高,成本高
.......
(2)软负载
LVS
HAproxy
Nginx
.......
2.我们的选择:
对目前我们所遇到以及在未来的一段时间内Nginx足可以满足我们的需要
3.集群中一个绕不开的话题:session共享
(1)Session共享三种方式:
a.粘贴方式,通过负载均衡的策略(比如Nginx负载时的哈希轮询)
优点:简单
缺点:需要访问的客户的IP分散,一旦某台集群宕机正在访问该机器的客户会受到影响;
b.Tomcat之间进行复制
优点:当tomcat的数量在五台之内可以用这种方式,简单高效
缺点:当tomcat的数量多时session之间的共享也对性能有消耗,会有一定的延迟
c.通过redis来进行共享
优点:Session在一个地方有点面向对象的抽象的味道,且tomcat机器宕机后session不会丢失对客户影响较小
缺点:引入了redis多引入一个故障点
(2)实现方式:
通过负载均衡策略以轮询算法中的哈希为例
tomcat本身进行共享,参考博客 http://blog.csdn.net/wlwlwlwl015/article/details/48160433
通过redis进行共享,引入redis的包修改tomcat 的content的配置文件
(3)我们选择的方式:
考虑到我们上线应用的特点,目前用两台机器做负载足以,所以综合考虑后采用tomcat本身进行session共享这种方式。
【总结】
生活在互联网的今天,一个应用的不可用对一个公司很多情况下是不可容忍的轻则损失一些利润重则公司倒闭;所以高可用方面的知识需要我们每个IT技术人员去学习,改进从而为公司和人类创造更多的价值。