分布式架构的常见概念与演进简史

集群mysql

  • 小饭店原来只有一个厨师,切菜洗备料炒全干。
  • 两个厨师能炒同样的菜,这两个厨师关系是集群

分布式web

  • 请了一个配菜师,配菜师和厨师的关系是分布式
  • 俩配菜师的关系也是集群

节点sql

  • 指能够按照分布式协议完成一组逻辑的独立个体
    • 具体项目中,一个个体指操做系统中的一个进程

副本机制数据库

  • 副本指,在分布式系统中为数据或服务提供的冗余
    • 数据副本指在不一样节点上保存同一份数据
      • 数据副本是分布式系统中解决数据丢失的惟一手段
    • 服务副本
      • 多节点提供相同服务,经过主从关系实现高可用

中间件缓存

  • 位于操做系统提供的服务以外,也不属于应用
  • 位于两者之间为开发者处理通讯和输入输出的一类软件
  • 帮助用户聚焦关心本身应用的部分

发展历程:服务器

  • 阶段一:单应用阶段

  • 应用服务器和数据库服务器分离

  • 三阶段:应用服务器集群

  • 出现问题,负载均衡器加入
  • 服务之间如何保持session 一致

  • 阶段四:数据库压力大,读写分离
    • 主从数据库数据同步(mysql自带主从集群模式)
    • 数据源选择(采用第三方数据库中间件,好比:mycat)

  • 阶段五:使用搜索引擎缓解读库压力

  • 阶段六:引入缓存机制缓解数据库压力

  • 阶段七:数据库的水平/垂直拆分
    • 垂直拆分:把数据库不一样业务数据拆分到不一样数据库
      •     
    • 水平拆分:把同一张表中的数据拆分到两个甚至更多的库中
  • 阶段八:应用拆分
    • 按照领域模型将系统拆分红多个子系统

  • 这样拆分之后,每一个系统都会有用户查询访问等相关操做

  • 须要抽象出来,走服务化路线
  • 各个服务进程之间通讯,经过rpc技术:好比 webservice、hessian、http、RMI等

总结梳理session

分布式系统难点负载均衡

  • 三态:非分布式会出现调用成功和失败,分布式下还会出现超时状态
  • 分布式事务
    • 可采用分布式锁(增大系统复杂度和系统开销)
    • 事务跨越的服务越多,复杂度越大、开销越大,最好避免分布式事务
    • 重试机制也是解决方案
      • 可是如何避免重复调用(幂等设计,屡次调用和单次调用效果同样,好比设置惟一键等方法)
      • 也可能不管怎么重试,都不会返回一个明确的结果,作到最终一致就好
  • 负载均衡
    • 每一个服务单独部署,每一个服务至少两台机器(由于用的都是普通机、可靠性不高)
  • 一致性
    • 数据被复制到不一样的机器上,如何保证一致性成为难点
  • 故障的独立性
    • 单个节点出现问题的状况确定会出现,须要更加全面考虑
相关文章
相关标签/搜索