zoukankan      html  css  js  c++  java
  • 大规模网站sesson会话保持思路及实践配置

    1.需求:

    请教个问题:
    我用lvs的rr模式,(考虑过 ipvsadm -p,但是这样就失去了负载均衡的意义感觉),后端有10台web,用一台memcached专门用于存储session文件,但是现在问题是,客户端请求第一次被轮训到 web A服务器,A可以获取到本次回话的session ID,从而可以从memcached里通过sessionID获取到这次回话的session ID,而第二次请求轮训到B服务器,因为第一次请求没经过web B,他不知道session ID啊,所以他从memcached中获取不到session ID。这就是现在遇到的问题。做了基于cookie的sessionID,但是考虑到客户端会禁用cookie,所以又难办了。 有啥办法呢? 谁能帮忙解答下.

    2.解决方案:

      a.中小企业方案:

      把所有应用服务器sesson会话统一放到memcached里,web读取都读共享memcached,就保持一致了。php程序,php.ini里配,当然了,lvs -p,nginx ip_hash等等也是部分网友实现的思路。

      企业集群共享会话实现架构图如下:

      

      b.门户网站方案:

      基于client cookie的sessionID是门户网站经常采用的,效率高,安全性一般,另外cookie的数量很有限,如果不够,可以通过多值cookie解决,例如淘宝就是这么干的。
      企业集群clinet会话实现架构图如下:
      
    3.大规模网站sesson会话共享思路及实践配置
    可以直接用memcached来作PHP的session.save_handler解决sesson共享问题
    
    1. 安装memcached服务端软件
    略,见老男孩培训相关视频教程或谷歌搜下安装。
    注意:memcached用libevent来作事件驱动,所以要先安装libevent。
    
    2. 安装memcache客户端件
    略,见老男孩培训相关视频教程或谷歌搜下安装。
    
    3. 真正配置的开始
    修改配置文件,在php.ini中全局设置:
    
    web集群session共享存储设置:
    默认php.ini中session的类型和配置路径:
    #session.save_handler = files
    #session.save_path = "/tmp"
    修改成如下配置:
    session.save_handler = memcache
    session.save_path = "tcp://10.0.0.18:11211"
    提示:
    110.0.0.18:11211 为memcached数据库缓存的IP及端口。
    2)上述适合LNMP,LAMP环境。
    3)memcached服务器也可以是多台通过hash调度。
    
    4、用memcached来存储session特点:
    优点:
    1)读写速度上会比普通files时快很多。
    2)可以解决多个服务器共用session的难题。
    缺点:
    1)session数据都保存在memory中,持久化方面有所欠缺,但对session数据来说不是问题。
    2)单点,部署多台,也无法数据同步。通过hash算法分配依然有sesson丢失的问题。
    
    5、大规模企业解决思路:
    2)可以用其他的持久化系统存储sessons,例如:redis,ttserver,替代memcached。
    3)高性能高并发场景,cookies效率比session要好很多,因此,大网站都会用cookies解决会话共享问题。
    4)有初级运维网友通过牺牲LB的负载均衡的策略实现,例如:lvs -p,nginx ip_hash等,这些不是好的方法。
  • 相关阅读:
    取球游戏
    初来乍到
    大臣的旅费
    【转载】.NET Core微服务架构学习与实践系列文章索引目录
    【转载】直接拿来用,最火的.NET开源项目
    C# For Demo
    【转载】快速序列化组件MessagePack介绍
    【转载】C# 网上收集的一些所谓的开源项目
    【转载】为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
    【转载】Identity Server 4 从入门到落地(七)—— 控制台客户端
  • 原文地址:https://www.cnblogs.com/vijayfly/p/5355034.html
Copyright © 2011-2022 走看看