分布式系统问题及解决方案

1. 分布式系统简介

1.1 分布式系统背景

单一应用架构:当网站流量下的时候,所有功能都集成在一个应用,也只需要部署一个应用,这样可以减少部署节点和成本。
垂直应用架构:当网站流量较大的时候,靠新增机器数量提升效率达不到要求,便会将系统垂直拆分为几个不相干的应用。
分布式系统架构:当垂直应用越拆越多的时候,各应用之间无可避免的需要交互,这时候可以考虑拆分出一些核心业务作为单独服务部署,逐渐形成稳定的服务中心,以便更快的速度响应业务需要。

1.2 分布式系统简介

“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统”——《分布式系统原理和范型》。从进程角度看,两个程序分别运行在两台主机的进程上,他们互相协作最终完成同一个服务或者功能,那么理论上这两个程序所组成的系统,也可以称作是“分布式系统”。当然这两个程序可以是不同的程序,也可以是相同的程序。如果是相同的程序有另一个名称叫“集群”,即相同程序横向扩展提高服务能力的方式。
分布式听起来和微服务概念差不多,他们的区别是:微服务架构偏向于业务,比如可以将微服务按子业务、数据库、接口等维度拆分成不同的微服务;分布式架构偏向于机器,可以说微服务架构都是分布式架构,因为大部分微服务都是单独的部署。

1.3 分布式系统需要解决的问题

1.3.1 分布式Session
session粘滞

session粘滞即当用户访问集群中的某台机器后,将当前用户的后续请求都转发到这台机器上。
使用场景:服务器数量适中、对稳定性要求不是很苛刻
优点:实现简单、配置方便、没有额外网络开销
缺点:网络中有宕机时,用户session会丢失容易造成单点故障
方案:Nginx的ip_hash负载均衡算法

session复制

session复制即将一台服务器的session数据广播复制到集群中的其余集群上
使用场景:机器较少、网络流量较小
优点:实现简单、配置较少、宕机不影响用户访问
缺点:广播式复制session有延时,需要额外网络开销
方案:开源的Tomcat-redis-session-manager

缓存集中式管理

缓存集中式管理即将session写入分布式缓存集群中,当用户访问时优先从缓存中获取session信息
使用场景:服务器较多、网络环境复杂
优点:可靠性好
缺点:实现复杂,需要额外网络开销、稳定性依赖于缓存系统的稳定性
方案:开源的Spring Session,也可以自己实现,主要是重写HttpServletRequestWrapper中的getSession方法

1
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值