Java web 负载均衡 和 缓存

1 apache + tomcat  - 最常见和常用的方式 

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

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

2 nginx + tomcat - 主流方式之一 

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

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负载均衡器根据方法中的参数来选择服务器

你可能感兴趣的:(J2EE)