架构演变与分布式架构
-
架构演变
-
分布式架构的成本
- 分布式事务:几个操作在多台服务器上执行如何保证要么成功要么不成功
- 不允许服务有状态:处理一次请求的数据要么从数据库取要么从请求中拿,不允许服务器本身存储任何信息
- 服务依赖关系复杂
- 部署运维成本
- 分布式会话,如何保证session一致性
- 分布式job,定时任务在哪一台机器上执行
-
远程调用技术
- RMI java远程方法调用 简单容易使用 不支持跨语言
- webService 跨语言sdk支持 实现较重 发布繁琐
- http 简单轻量跨语言 不支持sdk
- hession 简单轻量sdk支持 不支持跨语言
- 问题
- 负载均衡 多台机器应该调用哪一个
- 服务发现 发现新的服务地址
- 健康检测 服务宕机或恢复后怎么办
- 容错 调用其中一台出错怎么办
-
分布式架构的三种解决方案
- 基于反向代理的集中式分布式架构
- 在server1与baseServer1中通过nginx做负载均衡
- 优点 简单快速
- 问题 Nginx中心负载 http传输 json序列化 开发效率 运维效率
- 嵌入应用内部的去中心化架构
- 独立的注册中心 服务启动自动注册到注册中心并定期报心跳 客户端代理发现服务并负载均衡
- 优点 去中心化,客户直连服务端 动态注册并发现服务 高效稳定网络传输,可容错
- 独立代理进程架构
- 独立的注册中心 代理作为独立的进程部署在一个主机上 实现负载均衡和服务发现
- 基于反向代理的集中式分布式架构
作者: JaminYe
版权声明:本文原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。