关键词:分布式系统架构、消息中间件
分布式系统,主要是在支撑高并发访问量和海量数据的大型网站中设计,核心是存储(数据库)和计算(应用服务器处理业务和逻辑)
** 一、分布式系统架构的演进过程:**
- 单机系统:应用&数据库 在单个同一台机器上,应用内部各模块通过 JVM 内部方法调用进行交互,应用和数据库之间通过如 JDBC 访问
- 数据库与应用分离:在单机负载告警情况下,将数据库与应用分开在两台机器上,开发部署上仅是数据库地址改为非本机地址
- 应用服务器集群:在应用服务器负载告警情况下,考虑将应用服务器优化为集群方式(两个问题:一是客户端对多个应用服务器的选择问题【DNS 或者负责均衡 以解决该问题】;Session 问题【Session Sticky 或者 Session Replication 或者 Session 数据集中存储或者 Cookie Based 一般采用集中存储或 Sticky 以解决该问题,二者各有优劣】)
- 数据库读写分离:在数据库读压力大情况下,或者用数据库作为读库(数据同步问题、应用数据源选择问题),或者用搜索引擎作为读库(搜索集群),或者使用缓存以加速数据读取速度(数据缓存-KV、页面缓存-ESI 标签 => 缓存命中率问题、数据变更时失效和更新问题、缓存服务器扩容或缩容平滑操作问题),或者引用分布式存储系统(分布式文件系统、分布式 Key-Value 系统和分布式数据库)
- 数据库性能或容量瓶颈:当读写分离之后数据库仍然无法承受更高的性能要求或存储容量,或者根据业务垂直拆分(事务问题:或者使用分布式事务但性能不如单机,或者去掉事务或者不追求强事务),或者根据数据量水平拆分(SQL 路由问题,主键问题)
- 应用发展问题:应用功能越来越多导致臃肿,或者根据业务拆分应用(应用间没有调用,会有一些重复或相似的代码),或者服务化改造(业务功能间相互调用、共享代码封装在各个服务中心、数据库的交互由服务中心负责,一些支撑的组件问题)
** 二、消息中间件:**
MOM(Message-oriented middleware),即面向消息的系统(消息中间件)是分布式系统中完成消息的发送和接收的基础软件
消息中间件的主要作用,就是异步和解耦
【读书系列】
《大型网站系统与 Java 中间件实践》,曾宪杰,电子工业出版社
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于