Java web 负载均衡 和 缓存

来源:互联网 发布:搬瓦工 centos 7 和 6 编辑:程序博客网 时间:2024/05/09 01:30
 
  1 apache + tomcat  - 最常见和常用的方式 


apache在前端,接受请求后,通过mod_jk中配置的不同worker分发请求到不同的tomcat进一步处理。


一般是1个apache + n个tomcat ,基于tomcat自身的集群功能和mod_jk。


2 nginx + tomcat - 主流方式之一 


nging在前端,加上后端的tomcat(数量一般小于5),构成负载均衡集群方案。


实例: http://hi.baidu.com/hxsnoopy/blog/item/9f0011ef9cfe15fece1b3e38.html 


3 第三方工具:  


- http://www.terracotta.org 商业方案 


Terracotta DSO, an advanced distributed-computing technology aimed at meeting special clustering requirements.


Terracotta Distributed Shared Objects (DSO) is at the core of operations in Terracotta clusters that require object identity, Terracotta object-graph roots, and other DSO technology. 


Terracotta DSO documentation describes the function, implementation, and usage of DSO in a Terracotta cluster.


4 服务器方案


- 单物理主机


- 一个apache + 多个tomcat ,使用ajp mod_jk  实例: http://hi.baidu.com/luodaijun/blog/item/5bbe4cfb5ffef864034f56a1.html 


- 虚拟化  :


- 多物理主机方案


- 非虚拟化:


- 虚拟化  : 每台物理主机虚拟化,获得多台逻辑主机 ;在逻辑主机上部署不同的服务器,构建cluster 。


5 负载均衡的策略


- 基于DNS - DNS轮询,成本低 


- 反向代理 - mod_jk2  


- 基于NAT(Network Address Translation) - 虚拟化技术 , LVS - Linux Virtual Server 


- 硬件负载均衡 - 已较少使用,被软件方案替代


PS: 缓存经常:与负载均衡等话题一起出现的话题之一 


- 缓存的层次:


数据库层:空间换时间 ; 方式:普通表,内存表


应用层: 常见有 数据库查询结构缓存,磁盘文件数据缓存,耗时计算的数据缓存; 


按架构 分为 嵌入式 和 分布式 ;


分布式缓存 可分:


按应用切分数据到不同缓存服务器,


按规则(hash, route)把数据存储到不同的缓存服务器,


代理模式:应用在获取数据的时候都由代理透明的处理,缓存机制有代理服务器来处理


工具:Memcache、共享文件服务器、MemcacheDb、Tokyo Tyrant;以及语言相关的其他实现。


前端:主要对静态文件缓存,如CDN技术,squid等 ; 工具:squid,Varnish Cache,ncache


客户端:浏览器缓存 


- 缓存:更新 - 被动,主动,二者结合 ;过期 - 时间过期,基于规则的过期  


- 缓存评价:速度、及时性、命中率


- 缓存方案:Memcached, Tokyo Tyrant 


- 对于负载的分发有多种算法,下面是一些较为常用的算法:


round-robin轮循


random随机


weight-based权重


minimumload最小负载


lastaccesstime最后访问时间


programmaticparameter-based负载均衡器根据方法中的参数来选择服务器
 </body>
</html>
0 0