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>