- 1, LVS做前端四层软件均衡负载
LVS是基于IP虚拟分发的规则, 不同于apache,squid这些7层基于http协议的反向代理软件, 前者在性能上能得到更好的保证!
另外, 后者在处理http header信息时, 会显得很被动.
开源, 高性能, 这不就是我们所需要的吗?
另外, 针对大访问量, 还可以使用DNS轮询+LVS集群.
当然, 比起硬件均衡负载, 单点故障的风险会更大.
2,squid 做前端静态页面缓存, 包括 css, javascript
squid 是业内公认的优秀代理服务器,其缓存能力更让许多高负载网站青睐!(比如新浪,网易等)
使用他, 通过本机内存+ 磁盘的集群存储方案, 能够起到很好的加速作用!
使用squid, 也是大部分网站的节约成本之道.
3, lighttpd 提供图片, css, javascript 服务. 做到静态与动态分离.
采用lighttpd, 而不使用apache, 是因为它对静态内容的响应速度高于apache一到三倍.
这对于高负载网站是梦寐以求的.
加上, 在其前端部署了squid, 真正做到了, 超高命中率, 超快响应速度.
3,apache 用来处理php, url重定向, url过滤, 防洪水攻击等等.
apache是业内主流http服务器,比较看重它的稳定性, 扩展性.
使用它, 制作一些推广页面, 一些需要快速开发的页面, 最好不过了.
最重要的是, 它可以使用mod_jk或mod_proxy对复杂业务请求的进行代理.
比如, 将用户注册, 代理给jboss, 用java开发.
需要提一下的是, apache的module开发.
一句话 - 非常实用.
你可以只用apache提供的类库, 就能很方便的开发一个http的日志处理模块.
另外, 它也可以与squid 集成, 从而, 形成一条很完美的加速链.
4,JBOSS 用来处理含复杂的业务逻辑与充当JAVAEE容器的角色
JBOSS是red hat旗下的优秀中间件产品,在java开源领域小有名气,并且完全支持j2ee规范的,功能非常强大
使用他,既能保证业务流程的规范性,又可以节省开支(免费的)
java的优势, 就不多说了.
5,mysql数据库
使用mysql数据库,单机达到百万级别的数据存储,及快速响应,应该是没问题的.
如果网站本身访问增长很快, 可以考虑mysql 集群.
从而获得高伸缩性, 高访问性能.
不管是通过 master+slaver的主从结构.还是根据业务进行分表.
mysql的集群特性, 都是网站首选的.
6,memcache作为分布式缓存
基于中央存放的缓存载体, 一般都需要集群.
基于c写的memcache, 可以很自豪的顶起高性能缓存的帽子.
它几乎可以缓存任何数据. 包括 html, java对象, 文件等等.
重要的是, 它给jboss, apache等服务器实现高效的缓存方案, 提供了有力的保证.
LVS
======================================
.....
apache mod_jk / mod_proxy+ jboss
apache mod_jk / mod_proxy+ jboss
.....
squid + lighttpd
squid + lighttpd
....
=================================
....
mysql + memcache
mysql + memcache
......
================================
- 1,apache的静态负载能力似乎是靠吃内存换来的与其jboss,还不如perl来得方便
- 2,可以用 lighttpd 替换 apache如果只用 servlet 容器,可以用 resin 替换 jboss后端配 mysql 群集
- 3,为了系统能做到线性可扩展及业务需求的稳定性!
一般考虑用比较成熟的技术!
jboss本身支持异步消息,分布事务,AOP,最近5.0的POJOs可拔插组件模式比JMX更容易维护!放弃resin,用jboss也是有道理的!
而lighthttp处于起步阶段,处理HTTP静态请求或许是好一点,但是扩展性,功能都不是很理想,没有多年社区支持的apache那么强大,N多的module撑着,用前者太不划算了吧!
- 4,是的,业务接口,完全可以用spring来代替!
通信也可以抛弃RMI,用轻量级的hessian!特别是组播,JBOSS的JGroup是TCP群发软件中,比较优秀的
- 5,resin 的 servlet 性能比 jboss 的 tomcat 5 要好些。
lighttpd 比 apache 的性能好许多,现在的功能基本满足使用了。
没有特殊需要,可以不用 apache.