分类 标签 存档 社区 博客 友链 GitHub 订阅 搜索

分布式系统架构

348 浏览

关键词:分布式系统架构、消息中间件

ZERO

    持续更新 请关注:https://zorkelvll.cn/blogs/zorkelvll/articles/2018/11/18/1542543212604

背景

     分布式系统,主要是在支撑高并发访问量和海量数据的大型网站中设计,核心是存储(数据库)和计算(应用服务器处理业务和逻辑)

   一、分布式系统架构的演进过程:

  • 单机系统:应用 & 数据库 在单个同一台机器上,应用内部各模块通过 JVM 内部方法调用进行交互,应用和数据库之间通过如 JDBC 访问
  • 数据库与应用分离:在单机负载告警情况下,将数据库与应用分开在两台机器上,开发部署上仅是数据库地址改为非本机地址
  • 应用服务器集群:在应用服务器负载告警情况下,考虑将应用服务器优化为集群方式(两个问题:一是客户端对多个应用服务器的选择问题【DNS 或者负责均衡  以解决该问题】;Session 问题【Session Sticky 或者 Session Replication 或者 Session 数据集中存储或者 Cookie Based   一般采用集中存储或 Sticky 以解决该问题,二者各有优劣】)
  • 数据库读写分离:在数据库读压力大情况下,或者用数据库作为读库(数据同步问题、应用数据源选择问题),或者用搜索引擎作为读库(搜索集群),或者使用缓存以加速数据读取速度(数据缓存 - KV、页面缓存 - ESI 标签 => 缓存命中率问题、数据变更时失效和更新问题、缓存服务器扩容或缩容平滑操作问题),或者引用分布式存储系统(分布式文件系统、分布式 Key-Value 系统和分布式数据库)
  • 数据库性能或容量瓶颈:当读写分离之后数据库仍然无法承受更高的性能要求或存储容量,或者根据业务垂直拆分(事务问题:或者使用分布式事务但性能不如单机,或者去掉事务或者不追求强事务),或者根据数据量水平拆分(SQL 路由问题,主键问题)
  • 应用发展问题:应用功能越来越多导致臃肿,或者根据业务拆分应用(应用间没有调用,会有一些重复或相似的代码),或者服务化改造(业务功能间相互调用、共享代码封装在各个服务中心、数据库的交互由服务中心负责,一些支撑的组件问题)

   二、消息中间件:

    MOM(Message-oriented middleware),即面向消息的系统(消息中间件)是分布式系统中完成消息的发送和接收的基础软件

    消息中间件的主要作用,就是异步和解耦

【读书系列】

    《大型网站系统与 Java 中间件实践》,曾宪杰,电子工业出版社

评论  
留下你的脚步
推荐阅读