Table of Contents

上一个主题

Elasticsearch

下一个主题

共享存储服务

本页

Java 分布式 Session

如果你的应用启动了多个 JVM 实例(容器实例),并且使用了 HttpSession ,那么你就需要使用到分布式 Session。

目前在新浪云上,我们提供了两种方式来方便你管理 Java 的 Session。

  • 粘滞会话。
  • 基于 Redis 缓存的 Session 共享。

下面我们就来看看在这两个方式的优缺点以及其在新浪云上如何配置。

粘滞会话

开启粘滞会话后,前端的负载均衡会在转发请求时将同一个会话的请求转发到固定的一台后端。

优点:实现简单、配置方便、没有额外网络开销。
缺点:如果有 JVM 实例 Down 掉时、用户 Session 会丢失。

默认粘滞会话是关闭的,你可以进入『应用/应用设置』,选择开启粘滞会话即可。

../../_images/sticky-session.png

使用 Redis 来管理 Session

使用 Redis 作为 Session 管理的后端,更加稳定可靠,Session 数据可以通过 Redis 后端查询。我们推荐您使用这个方式来管理 Session。以下是配置方法:

  1. 创建一个 Redis 实例,详细见: Redis 文档
  2. 进入『应用/环境变量』面板,点击添加环境变量,添加以下两个环境变量。
  • REDIS_URL,变量值填写上面创建的 Redis 服务器的连接字符串,你可以在 Redis 实例的详情页面找到这个字符串。
  • SESSION_MANAGER,变量值填写 REDIS
  1. 还没有部署应用,直接部署应用即可,如果是已经部署过,进入『应用/容器管理』页面,点击 重启 即可。

注解

Redis 管理的方式只针对网页和插件部署的,使用 Git 自己构建环境的需要自己处理分布式 Session 。