java web 开发 高并发处理 - - ITeye 技术网站
java 处理高并发高负载类网站中数据库的设计方法( java 教程 ,java 处理大量数据, java 高负载数
据)
一:高并发高负载类网站关注点之数据库
没错 ,首先是数据库 ,这是大多数应用所面临的首个 SPOF 。尤其是 Web2.0 的应用,数据库的响应
是首先要解决的。
一般来说 MySQL 是最常用的,可能最初是一个 mysql 主机,当数据增加到 100 万以上,那么,
MySQL 的效能急剧下降。常用的优化措施是 M-S (主 -从)方式进行同步复制,将查询和操作和分别在
不同的服务器上进行操作。我推荐的是 M-M-Slaves 方式, 2 个主 Mysql ,多个 Slaves ,需要注意的是,
虽然有 2 个 Master ,但是同时只有 1 个是 Active ,我们可以在一定时候切换。之所以用 2 个 M,是保
证 M 不会又成为系统的 SPOF 。
Slaves 可以进一步负载均衡,可以结合 LVS, 从而将 select 操作适当的平衡到不同的 slaves 上。
以上架构可以抗衡到一定量的负载,但是随着用户进一步增加,你的用户表数据超过 1 千万,这
时那个 M 变成了 SPOF 。你不能任意扩充 Slaves ,否则复制同步的开销将直线上升,怎么办?我的方
法是表分区,从业务层面上进行分区。最简单的,以用户数据为例。根据一定的切分方式,比如 id,切
分到不同的数据库集群去。
全局数据库用于 meta 数据的查询。缺点是每次查询,会增加一次,比如你要查一个用户
nightsailer, 你首先要到全局数据库群找到 nightsailer 对应的 cluster id ,然后再到指定的 cluster 找到
nightsailer 的实际数据。
每个 cluster 可以用 m-m 方式,或者 m-m-slaves 方式。这是一个可以扩展的结构,随着负载的增
加,你可以简单的增加新的 mysql cluster 进去。
需要注意的是:
1、禁用全部 auto_increment 的字段
2、 id 需要采用通用的算法集中分配
3、要具有比较好的方法来监控 mysql 主机的负载和服务的运行状态。如果你有 30 台以上的
mysql 数据库在跑就明白我的意思了。
4、不要使用持久性链接(不要用 pconnect ) ,相反,使用 sqlrelay 这种第三方的数据库链接池,
或者干脆自己做,因为 php4 中 mysql 的链接池经常出问题。
二:高并发高负载网站的系统架构之 HTML 静态化
其实大家都知道,效率最高、消耗最小的就是纯静态化
http://www.ablanxue.com/shtml/201207/776.shtml 的 html 页面,所以我们尽可能使我们的网站上的页
面采用静态页面来实现,这个最简单的方法其实也是 最有效的方法。但是对于大量内容并且频繁更新的
网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统 CMS ,像我们常访问的各
个门户站点 的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统
可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限 管理、自动抓取等功能,对于
一个大型网站来说,拥有一套高效、可管理的 CMS 是必不可少的。
评论0
最新资源