分布式架构的常见概念与演进简史
集群mysql
- 小饭店原来只有一个厨师,切菜洗备料炒全干。
- 两个厨师能炒同样的菜,这两个厨师关系是集群

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

节点sql
副本机制数据库
中间件缓存
- 位于操做系统提供的服务以外,也不属于应用
- 位于两者之间为开发者处理通讯和输入输出的一类软件
- 帮助用户聚焦关心本身应用的部分
发展历程:服务器



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

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



- 阶段七:数据库的水平/垂直拆分
- 垂直拆分:把数据库不一样业务数据拆分到不一样数据库
- 水平拆分:把同一张表中的数据拆分到两个甚至更多的库中
- 阶段八:应用拆分

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

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

总结梳理session

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