分布式下session共享,实战经历,架构演进中遇到的问题

在分布式下,考虑到session共享问题,第一想法,想到了缓存存储,使用redis缓存

所以,在这里,我就多想了一下。

缓存,到底什么样的数据可以缓存,或者什么样的数据需要缓存、

所以,做了一点简单的总结:

  • 不需要实时更新,但是却特别占用数据库资源的数据,比如商城网站上的商品信息,基本是不用一天一更的
  • 需要实时更新,但是更新频率不高的数据,最好的例子就是订单表
  • 在某个时刻访问量极大而且更新也很频繁的数据。很典型的例子就是秒杀,在秒杀那一刻,可能有N倍于平时的流量进来,系统压力会很大

ps:例如像敏感性的数据,安全性的数据就尽量不用缓存了,比如用户登录的那个数据,里面会涉及到密码和安全问题之类的

================================分割线==============================

上面是小菜,现在进入正题:

做分布式session共享的时候,我的第一个思路:

直接上图说话

browser1 到负载均衡服务器 转发到 第一个application

browser2 到负载均衡服务器 转发到 第二个application

举例例子就是,每次去网吧打游戏,都需要使用自己的设备才爽!!,那么,我就在固定的网吧专门放一套我的设备,这样的话,我就不用自己带了。这样保证了我每一次去网吧都有我的设备,就在第一个application上

然而,这个思路有个问题:

如果第一个application重启了的话,那么上面存储的session就消失了

所以,我又有了第二个思路:让两个application之间可以复制,即将第一个application上的session复制一份到第二个application上

但是,还有一个问题:

两个服务器(application)之间经常copy  session,容易影响带宽

而且,有大量数据的时候,占用资源太多了,不适合做大规模的集群

ps:其实,我经历的这个项目,这条思路已经可以满足我了,无非就是可能带宽不够,容易卡!!但是,人是贪婪的动物,我不断的浏览各个贴吧,请问大神,终于,让我又找到了解决的办法、

第三个思路:基于cookie,继续举例子,网吧打游戏,这回,我自己带设备,我也不去你们网吧存我的设备了,即让session携带上cookie,

但是还有问题:cookie长度限制,保存在浏览器,安全性不高

 第四个思路:

将session信息单独存在放一个服务器上(session server),这样,当每次获取的时候,之间从服务器上拿就ok了,

举个例子:还是去网吧,然后,每一个网吧都有一个仓库,我们去网吧仓库里拿自己需要的设备就ok了

问题:需要解决单点问题,所以需要制成集群!!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值