一、全部基于服务
View → 统一数据接口 → 缓存模块 → 数据库
二、统一数据接口 考虑用WebServices
1、 多种客户端调用统一数据接口读取数据
2、 通过统一数据接口管理缓存
3、 主要业务逻辑
三、中间层----缓存模块
1、 分布式缓存memcached
四、数据库读写分离
1、 两个主数据库(Write) → 多个从数据库(Read)
2、 通过事务发布订阅机制同步主从数据库
3、 主数据库垂直拆分(网友添加、邮件订阅、VIP,企业展示)VIP管理有问题,主要是主从数据同步延迟的问题。如果VIP数据单独维护,拆分出主库,大的数据列表又有问题。VIP管理时,更新主DB,同时更新所有相关缓存数据,倒是可以解决这一问题
4、从数据库拆分 水平拆分(条件:两年前) VIP管理后台要做调整,区分两年前后,搜索模块得调整,这样拆分按照网站的结构性能能提升,但两年前数据库不断增大,迟 早也会出现瓶颈;垂直拆分(按红黑中类别拆分),关联查询的比较多,似乎不适合;垂直拆分(按企业类别拆分),似乎可行
五、多服务器部署
1、主数据库、编辑后台 → 服务器A(性能最优)、从数据库、前台 → 服务器B
六、优点
1、 多种平台调用统一接口,提高了代码复用性
2、 数据库读写分离
3、减少现有这种架构的数据冗余度
4、SOA架构
5、可以通过扩展从数据库提升性能
七、缺点
1、 主从数据同步有延迟
八、扩展
1、 当Write操作达到瓶颈时,主库可以按照从库的结构垂直拆分,改动不大,主要是数据库连接字符串的变动。
2、 当Read操作达到瓶颈时,从库继续垂直拆分,统一数据接口也可以按照从库的结构拆分,缓存模块按照统一数据接口的结构拆分