iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Cloud Foundry Session Affinity(Sticky Session)的实现
  • 936
分享到

Cloud Foundry Session Affinity(Sticky Session)的实现

2023-06-03 23:06:49 936人浏览 薄情痞子
摘要

会话保持(Session Affinity),有时又称粘滞会话(Sticky Sessions), 是负载均衡领域设计需要着力解决的重要问题之一,也是一个相对比较复杂的问题。会话保持是指在负载均衡器上的一种机制,在完成负载均衡任务的同时,还

会话保持(Session Affinity),有时又称粘滞会话(Sticky Sessions), 是负载均衡领域设计需要着力解决的重要问题之一,也是一个相对比较复杂的问题。

会话保持是指在负载均衡器上的一种机制,在完成负载均衡任务的同时,还负责一系列相关连的访问请求会分配到一台服务器上。

当用户向服务器发起请求,服务器创建一个session,并把session id以cookie的形式写回给客户。

看一个例子:当我访问SAP UI5应用时,

Cloud Foundry Session Affinity(Sticky Session)的实现

Http请求的头部观察到客户端要求服务器返回以cookie的形式返回session id的请求字段:

Cloud Foundry Session Affinity(Sticky Session)的实现

在服务器响应的头部字段果然返回了session id:

Cloud Foundry Session Affinity(Sticky Session)的实现

这些cookie信息能够在Chrome开发工具的Application标签页里的Cookies区域查看:

Cloud Foundry Session Affinity(Sticky Session)的实现

如此一来,只要客户的浏览器不关,再去访问服务器时,访问请求会自动附上session id去,服务器端检测到这个session id后,就会使用内存中维持的与这个id对应的session为客户端服务。

再回到我们讨论的会话保持这个话题。什么时候需要会话保持?举个大家每天都会遇到的例子,大家在淘宝或者京东上购物时,从完成用户身份认证到浏览店铺,选择心仪商品加入购物车,一直到最后下单完成支付,需要经过很多次和服务器的交互过程才能完成整个交易。由于这几次交互过程从顺序上和逻辑上是密切相关的,服务器在进行这些交互过程的某一个交互步骤时需要一个上下文(Context),即上一次交互过程的输出,因此要求这些相关的交互过程都由一台服务器完成。

在这种情况下,假设负载均衡器仍然把这些相关交互session分散到不同的服务器实例上,就会带来很糟糕的用户体验,比如客户在浏览器上每点击一次,都会弹出登录页面。或者即使用户输入了正确的验证码,却仍然提示验证码错误。由于服务器处理实例不一样,也有可能造成客户放入购物车的物品丢失。

这就是会话保持机制引入的原因:确保把来自同一客户的一个完整会话的请求转发至后台同一台服务器进行处理。

那么Cloud Foundry的Session Affinity是怎么实现的呢?

官方文档有介绍:

https://docs.cloudfoundry.org/concepts/http-routing.html#sessions

(1) To support sticky sessions, configure your app to return a jsESSIONID cookie in responses. The app generates a JSESSIONID as a long hash in the following fORMat:

您的应用在响应结果里需要加上一个JSESSIONID字段,长度如下:

1A530637289A03B07199A44E8D531427

(2) If an app returns a JSESSIONID cookie to a client request, the CF routing tier generates a unique VCAP_ID for the app instance based on its GUID in the following format:

CF routing tier基于app生成的JSESSIONID生成一个VCAP_ID: 323f211e-fea3-4161-9bd1-615392327913

(3) 接下来客户每次发起请求,必须同时提供JSESSIONID和VCAP_ID。JSESSION_ID交给应用,用于实现session粘连。而VCAP_ID用于标识服务的应用实例,如果应用挂了,Gorouter会把请求路由到另一个应用实例上。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Cloud Foundry Session Affinity(Sticky Session)的实现

--结束END--

本文标题: Cloud Foundry Session Affinity(Sticky Session)的实现

本文链接: https://www.lsjlt.com/news/235949.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Cloud Foundry Session Affinity(Sticky Session)的实现
    会话保持(Session Affinity),有时又称粘滞会话(Sticky Sessions), 是负载均衡领域设计需要着力解决的重要问题之一,也是一个相对比较复杂的问题。会话保持是指在负载均衡器上的一种机制,在完成负载均衡任务的同时,还...
    99+
    2023-06-03
  • Spring session如何实现Session共享
    这篇文章主要介绍“Spring session如何实现Session共享”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring session如何实现Session共享”文章...
    99+
    2023-07-06
  • Session实现原理
    HTTP协议 ( http://www.w3.org/Protocols/ )是“一次性单向”协议。 服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端处理请求,并且返回一个H...
    99+
    2023-06-03
  • spring-session如何实现
    小编给大家分享一下spring-session如何实现,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一:spring-session介绍1.简介session一直都是我们做集群时需要解决的一个难题,过去我们可以从serlv...
    99+
    2023-05-30
    spring session
  • Springsession实现Session共享
    目录Redis session为什么使用session共享:session 共享原理:Redis session 用户第一次访问应用,会创建一个新的Session,并且会将Sessi...
    99+
    2023-05-16
    Spring session 共享 Spring session
  • golang中的session怎么实现
    这篇文章主要介绍了golang中的session怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang中的session怎么实现文章都会有所收获,下面我们一起来看看吧。什么是 SessionSess...
    99+
    2023-07-06
  • 在Spring-Session使用Redis如何实现共享session
    这期内容当中小编将会给大家带来有关在Spring-Session使用Redis如何实现共享session,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、添加依赖<dependency> &l...
    99+
    2023-05-31
    spring session redis
  • SpringBoot下如何实现session
    这篇文章主要介绍了SpringBoot下如何实现session的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot下如何实现session文章都会有所收获,下面我们一起来看看吧。相关概念1.HTT...
    99+
    2023-06-29
  • redis实现session共享的方法
    目录引言案例介绍具体操作引言 大厂很多项目都是部署到多台服务器上,这些服务器在各个地区都存在,当我们访问服务时虽然执行的是同一个服务,但是可能是不同服务器运行的; 在我学习项目时遇到这样一个登录情景,假设有如下三台服务器...
    99+
    2023-04-14
    redis session共享 Redis共享 Session
  • tomcat的session共享怎么实现
    在Tomcat中,可以通过以下几种方式来实现Session共享:1. 使用Tomcat的集群功能:Tomcat提供了内置的集群功能,...
    99+
    2023-09-21
    tomcat
  • springcloud怎么实现Session共享
    本篇内容介绍了“springcloud怎么实现Session共享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通常情况下,Tomcat、Je...
    99+
    2023-06-05
  • PHP Session ID的实现原理与实例
    目录Session作用 session 的工作机制:PHPSESSIONID的生产算法原理:php.ini配置如下:PHP Session工作原理PHPcli模式通过session_...
    99+
    2024-04-02
  • redis如何实现session同步
    Redis可以通过以下几种方式实现session同步:1. 使用Redis Cluster:Redis Cluster是Redis自...
    99+
    2023-08-30
    redis session
  • 详解golang中session的实现方法
    在 Web 开发中,为实现不同的用户登录,我们需要使用 Session 进行用户的管理。在 Golang 程序中,如何使用 Session 呢?本文将介绍 Golang Session 的实现方法。什么是 Session?Session 是...
    99+
    2023-05-14
  • 轻松实现session的mysql处理 (转)
    轻松实现session的mysql处理 (转)[@more@]  通常,session都是保存在临时文件里的,但是,要是把它保存在数据库里,就会给我们带来很多好处,比如统计在线人数之类的。废话不说...
    99+
    2024-04-02
  • SpringBoot下实现session保持方式
    目录相关概念1.HTTP是无状态协议2.哪些方法可以实现有状态连接3.Session是由Web服务器端(Tomcat)维护的实现方法实现方法实现原理实现代码如何插入一段漂亮的代码片总...
    99+
    2024-04-02
  • ajax怎么实现session不过期
    这篇文章主要介绍“ajax怎么实现session不过期”,在日常操作中,相信很多人在ajax怎么实现session不过期问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ajax...
    99+
    2024-04-02
  • redis怎么实现分布式session
    Redis可以通过以下几步来实现分布式session:1. 创建一个Redis服务器集群:可以使用Redis Sentinel或Re...
    99+
    2023-09-20
    redis
  • 解析 PHP Session 跨域的实现原理
    引言:随着互联网的发展,越来越多的网站使用了跨域技术来实现不同域名之间的数据交互。跨域是指在一个域名下的网页获取其他域名下的资源,这样的请求是受浏览器的同源策略限制的。在PHP中,session是一种非常常用的机制,用于在服务器端存储用户的...
    99+
    2023-10-21
    session 实现原理 跨域 PHP Session 跨域的实现原理
  • php怎么用session实现购物车
    使用PHP的session可以很方便地实现购物车功能。下面是一个简单的示例:首先,创建一个用于存储购物车内容的数组。在每个页面的顶部...
    99+
    2023-10-12
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作