Reborn's Blog

《大型网站系统与Java中间件实践》--读书记录

2018-10-31·Java, Architecture, Middleware, Session, Database

集群 Session 解决方案

| 方案 | 原理 | 缺点 | | --- | --- | --- | | Session Sticky | 负载均衡器按会话标识选择服务器 | 负载均衡器变有状态节点 | | Session Replication | 服务器间同步 Session | 网络带宽开销,数据急剧增多 | | Session 集中存储 | 所有 Session 存同一地方 | 单点故障,网络时延 | | Cookie Based | Session 存 Cookie 中 | Cookie 长度限制、安全、带宽消耗 |

读写分离

大型应用通常读多写少,增加读"源"。搜索引擎类似读库,但搜索引擎是构建索引而不仅是数据复制。

数据库拆分

垂直拆分

把不同业务数据拆分到不同数据库,可根据业务特点优化。问题:多数据源配置、分布式事务性能低。

水平拆分

同一表数据拆分到两个数据库,解决单库瓶颈。问题:SQL 需判断查哪个库,分页查询困难,自增字段不可用。

应用拆分

  • 根据业务特性拆分(交易、商品、用户)
  • 根据功能继续拆分(注册、登录、信息维护)

服务化

各功能由服务中心提供服务,支持远程调用。数据库交互放在服务中心,Web 系统不需关心业务逻辑实现。

中间件分类

  • 远程过程调用中间件:解决分布式环境互相访问问题
  • 消息中间件:解决应用间消息传递、解耦和异步问题
  • 数据访问中间件:解决应用访问数据库共性问题
#Java#Architecture#Middleware#Session#Database