肤浅的内容,将要用 <分布式计算和data sharding> 替代。


最近觉得一个网站架构师,应该把高性能问题搞得很好。

本文的图形,没有上来。需要看完整的,请下载 :西津渡如何设计软件 



小网站 , 两台机器 :  Apache + Tomcat . 配置 load balancer ,session stick.

Apache +mod_cache 服务静态内容。

        Apache worker 250 ,重新编译一下就好了。

在适当的优化下,支持 2000 个并发应该没有问题。

 

一、             静态内容

1.2.1    同构系统

l         balancer 前端。  Haproxy  f5

 

 

l         cache balancer 最好带 cache

 

l         http server : Apache / lightHttpd .

 

 

l         cluster 内的http server 数量  : 1 –7

f5 可以带多些。

 

l         文件系统

n         硬盘就放在各个 http server

方案1:自己 写一个基于 hash 的虚拟文件系统

方案 2 找一个

 

l         综合性能估计

 

82 dual core cpu / 4G pc server .

作为图像服务器 ,image average size 100k.  http server response time 100ms. 足够的网络带宽。

 

支持的concurrent session = 20000 ?

              可以支持的小时峰值page view : 20000* 3600 =72000000. 7千万。

二、      动态内容

1.      同构系统

 

a)         Load balance

Haproxy (也可以贵的硬件 f5之类).

b)        Cluster web container 的数量

             

   方案一: session replication   Tomcat + terracotta , 6

   方案二: 不用 web container session , cache + db 方式实现。建一个 session , 自己管理状态。

 

c)         Tomcat 调优

Apr ,Jvm ,connector ,

d)        db balance mysql

方案1BalanceNg    http://www.inlab.de/balance.html

 方案2 根据业务自己写一个

 

e)         db connection pool tunning

在生产环境,用hibernate c3p0 好一点。

 

f)         Object cache 

Hibernate +Ehcache

               

g)          分布式cache

如果有办法,经过适当调适,应该不错。

 

h)        Last-modified and eTag 一定要设

 

i)          综合性能估计

Tomcat + terracotta , 13 台机器.

62 dual core cpu / 4G pc server .  6 2 dual core cpu / 4G pc server 作为db server

IM 历史消息查询,最大的表 message 100/, 保存12个月数据3.6亿, 足够的网络带宽。 查询的 response average time 3s.

 

支持的concurrent session = 6000

             

2.      硬件 failover

I don’t know.

3.      备份策略

l         文件系统

l         数据库

 

 

4.      讨论问题

n         区域镜像 cdn (据说实际效果不一定好。)

 

       镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNetEduNet之间的差异。http://www.toplee.com/blog/?p=71

 

 

n         静态化 或者页面cache

对于动态内容,除非内存特别少,否则没必要。用对象 cache 足够。

西津渡