一月 21st, 2010互联网站点服务加速的14条军规
我们都说互联网内容制胜,但如果网站的响应速度太慢,即使内容再好,也更会造成用户体验从“抓狂 – 愤怒 – 永远离开 – 坏口碑传播”这样的毁灭性路线。
一月 21st, 2010基于Java技术的大型网站架构方案
Web层
主体架构可以基于 Struts 1.X/2.X,当然有很多更好的控制层框架供选择,以快速敏捷为准则吧。
抽象出核心库封装 控制器和中间层 的操作。
在大规模集群环境下,session复制会引起严重的性能问题。考虑用 集群缓存 + cookie验证 代替session实现权限控制吧。
Cache层
配置 Memcache 组成集群缓存
对 Memcache 客户端进行封装
Memcached 节点组成池,调用示意:opList (BizName, 策略 …)
中间层
“中间层”可以理解为基于应用和数据之间的层次。它被设计用来为Web应用提供:数据缓存 和 对应用透明的数据访问——即应用不需要考虑数据表拆分的问题。以服务的方式提供对存储层的高性能调用以及分布式计算。可供选择的框架:
ICE
Hadoop
直接基于Memcache开发(减少复杂度,推荐)
存储
推荐MySQL,理由:免费,经过实践检验,有大量成熟的案例、解决方案、技术支持。
小规模:一个 data table 维护存储服务器阵列,内容 -> mount ……
大规模:Master-Slave模式+MySQL Proxy,实现数据库读写分离。在中间层的包装下,可做如下扩展,以支持更大规模的数据存取:
数据库/表水平拆分,例 User -> User33% + User33% + User34%
数据库/表垂直拆分,例 User -> UserBaseInfo + UserAddrInfo
也可考虑使用 LongStore (龙存) 解决方案,由龙存管理存储阵列……
部署
划分子域名,每个子域名一个Web应用包,互不干扰
静态资源(css, js, image …)使用专门的静态服务器
负载均衡
小规模:DNS轮询。
大规模:F5, 2*X 台F5服务器,F5是L4/L7层交换机,每台至少可处理200万连接(与服务器内存有关)。
Ngnix是L7层交换,LVS负载均衡也是一种方案
Web中间件选择
Tomcat – 最高400并发
Apache – 最高2000并发
Ngnix – 优于Apache
采用方案:Ngnix + Resin ,理由:
Resin提供更为快速的servlet引擎 [...]
五月 26th, 2009结合Maven2进行J2EE项目构建
Maven2 的基本原理很简单,采用远程仓库和本地仓库以及 pom(project object model).xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。如图 1 。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行 maven 任务时,才会自动下载需要的插件。这个特性也为客户系统的升级带来的很大的方便,客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件(jar),并重新打包部署,很大程度的减少的系统升级的工作量。
标签:j2ee, maven