爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      分布式Session

      首页 知识中心 云计算 文章详情页

      分布式Session

      2023-07-19 07:21:18 阅读次数:426

      redis,session,服务器

      什么是 Session

      session 是一种服务端的会话机制。(被称为域对象),作为范围是一次会话的范围。服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

      Session 一致性问题

      当第一次请求来时,服务器端会接受到客户端请求,会创建一个 session,使用响应头返回 sessionid 给客户端。浏览器获取到 sessionid 后会保存到本地 cookie 中,当第二次请求来时,客户端会读取本地的 sessionid,存放在请求头中,服务端在请求头中获取对象的 sessionid 在本地 session 内存中查询,session 属于会话机制,当当先会话结束时,session 就会被销毁,并且 web 程序会为每一次不同的会话创建不同的 session,所以在分布式场景下,即使是调用同一个方法执行同样的代码,但是他们的服务器不同,自然 web 程序不同,整个上下文对象也不同,理所当然 session 也是不同的。

      Cookie 跨域

      Cookie 保存在浏览器端,并不是用浏览器打开网页都可以读取到 cookie,一定要是同一个域名下。

      代码演示分布式 Session 存在的问题

      首先利用 SpringBoot 初始化器创建一个 SpringBoot 项目如下图:

      分布式Session

      分布式Session

      然后紧接着创建一个控制器 ​​MyController.java​​:

      /**
      * @author BNTang
      * @version 1.0
      * @project distributed-session-project
      * @description
      * @since Created in 2021/10/4 004 10:24
      **/
      @RestController
      public class MyController {

      /**
      * 登录
      *
      * @param username 用户名
      * @param httpSession http会话
      * @return {@link String}
      */
      @GetMapping("/login")
      public String login(String username, HttpSession httpSession) {
      httpSession.setAttribute("user", username);
      return "登录成功:" + username;
      }

      /**
      * 用户信息
      *
      * @param httpSession http会话
      * @return {@link String}
      */
      @GetMapping("/userInfo")
      public String userInfo(HttpSession httpSession) {
      return "当前用户为:" + httpSession.getAttribute("user");
      }
      }

      启动两个不同端口但是代码一样的服务出来,首先需要开启允许多启动项目的选项如下图:

      分布式Session

      分布式Session

      首先启动第一个,修改 application.yml 端口号为 8080,然后点击 run 按钮:

      分布式Session

      第一个服务启动完毕:

      分布式Session

      紧接着还是和上面一样的步骤,修改 application.yml 修改端口号为 8081,然后点击 run 按钮启动:

      分布式Session

      启动浏览器访问:​​http://localhost:8080/login?username=jonathanLee​​ 效果如下:

      分布式Session

      然后在访问:​​http://localhost:8081/userInfo​​ 效果如下:

      分布式Session

      从如上图的请求过程发现,JSESSIONID 是不同的,那么就说明一个问题,我们访问第一台服务器 8080 端口的 login 接口时服务端帮我们创建了一个 session 会话,然后给客户端浏览器返回了一个 JSESSIONID,当我们访问第二台服务器 8081 的时候浏览器会带着 JSESSIONID 去服务端找有没有对应的 sessionId 会话,那么这个时候第二个服务端里面肯定是没有的,所以会重新创建一个返回给客户端浏览器,所以获取的就是为 null 了这一点就是如上所说 session 一致性的问题,那么如何解决该问题呢,解决方案有几种分别如下。

      Spring Session

      实现原理

      当 Web 服务器接收到 http 请求后,当请求进入对应的 Filter 进行过滤,将原本需要由 web 服务器创建会话的过程转交给 Spring-Session 进行创建,本来创建的会话保存在 Web 服务器内存中,通过 Spring-Session 创建的会话信息可以保存第三方的服务中,如:Redis,MySQL 等。Web 服务器之间通过连接第三方服务来共享数据,实现 Session 共享!

      实现过程

      添加依赖:

      分布式Session

      <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
      </dependency>

      <dependency>
      <groupId>org.springframework.session</groupId>
      <artifactId>spring-session-data-redis</artifactId>
      </dependency>

      然后在修改 application.yml 添加配置即可:

      分布式Session

      spring:
      redis:
      host: 127.0.0.1
      port: 6379
      session:
      store-type: redis
      timeout: 3600
      redis:
      namespace: login_user

      然后在像如上的方式那样进行测试,我这里就直接上解决的效果图了如下:

      分布式Session

      分布式Session

      Token + Redis

      注入 ​​redisTemplate​​,修改 MyController.java:

      分布式Session

      /**
      * @author BNTang
      * @version 1.0
      * @project distributed-session-project
      * @description
      * @since Created in 2021/10/4 004 10:24
      **/
      @RestController
      public class MyController {

      @Resource
      private StringRedisTemplate stringRedisTemplate;

      /**
      * 登录
      *
      * @param username 用户名
      * @return {@link String}
      */
      @GetMapping("/login")
      public String login(String username) {
      String key = "token_" + UUID.randomUUID();
      this.stringRedisTemplate.opsForValue().set(key, username, 3600L, TimeUnit.SECONDS);
      return "登录成功:" + key;
      }

      /**
      * 用户信息
      *
      * @param token 令牌
      * @return {@link String}
      */
      @GetMapping("/userInfo")
      public String userInfo(String token) {
      return "当前用户为:" + this.stringRedisTemplate.opsForValue().get(token);
      }
      }

      删除之前添加的 SpringSession 依赖,就留下 spring-boot-starter-data-redis,如下图:

      分布式Session

      测试方式还是和之前的差不多,只不过就是获取用户信息的时候需要带着服务端返回的 token 进行获取即可效果如下:

      分布式Session

      分布式Session

      Token 与 JWT

      登录模式

      单一服务器模式

      单一服务器,用户认证,用户信息存储到 session 当中。

      SSO(single sign on)模式

      单点登录(Single Sign On,SSO),就是通过用户的一次性鉴别登录,当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。

      分布式Session

      优点,用户身份信息独立管理,更好的分布式管理。可以自己扩展安全策略,缺点,认证服务器访问压力较大。

      Token 模式

      Token 是一种无状态、跨服务器、高性能的验证模式,特点,无状态、可扩展,支持移动设备,跨程序调用,安全,原理,基于 Token 的身份验证是无状态的,我们不用将用户信息存在服务器或 Session 中,用户通过用户名和密码发送请求。程序验证。程序返回一个签名的 token 给客户端。客户端储存 token,并且每次请求都会附带它。服务端验证 token 并返回数据。

      原理图

      分布式Session

      优点,无状态:token 无状态,session 有状态的,基于标准化:你的 API 可以采用标准化的 JSON Web Token(JWT),缺点,占用带宽,无法在服务器端销毁。

      验证方式

       

      传统用户身份验证,特点,用户向服务器发送用户名和密码。验证服务器后,相关数据(如用户角色,登录时间等)将保存在当前会话中。用户的每个后续请求都将通过在 Cookie 中取出 session_id 传给服务器。服务器收到 session_id 并对比之前保存的数据,确认用户的身份。服务器向用户返回 session_id,session 信息都会写入到用户的 Cookie。缺点,没有分布式架构,无法支持横向扩展

       

       

      共享 Session

       

       

      将透明令牌存入 cookie,将用户身份信息存入 Redis

       

       

      JWT 令牌,在微服务之间使用 JWT 共享信息

       

      JWT 令牌

      JSON Web Token(JWT)是一个开放的行业标准(RFC 7519)它定义了一种简介的、自包含的协议格式,用于在通信双方传递 json 对象,传递的信息经过数字签名可以被验证和信任,JWT 可以使用 HMAC 算法或使用 RSA 的公钥/私钥对来签名,防止被篡改,对普通的信息进行加密处理后,转成 json,转过之后的数据 称它是 token。

      JWT 能做什么

      授权,这是使用 JWT 的最常见方案。一旦用户登录,每个后续请求将包括 JWT,从而允许用户访问该令牌允许的路由,服务和资源,登录成功之后,生成一个 JWT,当中包含用户的信息,信息交换,JSON Web Token 是在各方之间安全地传输信息的好方法。

      Session 认证与 JWT 认证的区别

      session:基于 session 和基于 jwt 的方式的主要区别就是用户的状态保存的位置,session 是保存在服务端的,下一次再取从 session 当中取数据。jwt 认证,用户输入用户名与密码,校验(从数据库当中查看有没有对应的数据),如果有对应的数据,会把用户取出来,把取出的用户数据,转成 JWT,以 token 令牌的形式传给前端,前端拿到数据之后,会给存储到 cookie,以后每一次请求都要携带 token,服务器就会获取 token 之后,再进行 jwt 解析,读取用户数据,如果没有数据, 就代表没有登录,而 jwt 是保存在客户端的。

      JWT 令牌的优缺点

      JWT 令牌的优点,jwt 基于 json,非常方便解析。可以在令牌中自定义丰富的内容,易扩展。通过非对称加密算法及数字签名技术,JWT 防止篡改,安全性高。资源服务使用JWT可不依赖认证服务即可完成授权。JWT 令牌的缺点,JWT 令牌较长,占存储空间比较大。

      令牌结构

      JWT 令牌由三部分组成,每部分中间使用点(.)分隔,比如:​​xxxxx.yyyyy.zzzzz​​。

      三部分

      Header

      JWT 头部分是一个描述 JWT 元数据的 JSON 对象,头部包括令牌的类型(即 JWT)及使用的哈希算法(如 HMAC SHA256 或 RSA)。

      {
      "alg": "HS256",
      "typ": "JWT"
      }

      Payload

      第二部分是负载,内容也是一个 json 对象。

      JWT 指定七个默认字段供选择:

      • iss:发行人
      • exp:到期时间
      • sub:主题
      • aud:用户
      • nbf:在此之前不可用
      • iat:发布时间
      • jti:JWT ID 用于标识该 JWT

      除以上默认字段外,我们还可以自定义私有字段:

      {
      "sub": "1234567890",
      "name": "456",
      "admin": true
      }

      此部分不建议存放敏感信息,因为此部分可以解码还原原始内容。最后将第二部分负载使用 Base64Url 编码,得到一个字符串就是 JWT 令牌的第二部分。

      Signature

      第三部分签名哈希部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。首先,需要指定一个密码(secret)。该密码仅仅为保存在服务器中,并且不能向用户公开。然后,使用标头中指定的签名算法(默认情况下为 HMAC SHA256)根据以下公式生成签名:

      HMACSHA256(
      base64UrlEncode(header) + "." +base64UrlEncode(payload),secret
      )

      分布式Session

      Java 中使用方法

      添加依赖:

      分布式Session

      <!-- JWT-->
      <dependency>
      <groupId>com.auth0</groupId>
      <artifactId>java-jwt</artifactId>
      <version>3.4.1</version>
      </dependency>

      使用 jwt,修改 MyController.java:

      /**
      * @author BNTang
      * @version 1.0
      * @project distributed-session-project
      * @description
      * @since Created in 2021/10/4 004 10:24
      **/
      @RestController
      public class MyController {

      private static final String JWT_KEY = "BNTang";
      private static final String USERNAME = "username";
      private static final String UID = "uid";

      /**
      * 登录
      *
      * @param username 用户名
      * @return {@link String}
      */
      @GetMapping("/login")
      public String login(String username) {
      Algorithm algorithm = Algorithm.HMAC256(JWT_KEY);
      return JWT.create()
      .withClaim(USERNAME, username)
      .withClaim(UID, "1001")
      .withExpiresAt(new Date(System.currentTimeMillis() + 10000))
      .sign(algorithm);
      }

      /**
      * 用户信息
      *
      * @param token 令牌
      * @return {@link String}
      */
      @GetMapping("/userInfo")
      public String userInfo(String token) {
      Algorithm algorithm = Algorithm.HMAC256(JWT_KEY);
      JWTVerifier verifier = JWT.require(algorithm).build();
      try {
      DecodedJWT jwt = verifier.verify(token);
      System.out.println(jwt);
      return jwt.getClaim(USERNAME).asString();
      } catch (TokenExpiredException e) {
      System.out.println("token过期");
      } catch (JWTDecodeException e) {
      System.out.println("token错误");
      }
      return null;
      }
      }

      测试方式还是和之前的差不多,如下:

      分布式Session

      token 其实是可以放在请求头当中的,我这里方便测试就没有放在请求头当中了:

      分布式Session

      分布式Session

      拦截 Token

      创建拦截器

      LoginInterceptor.java

      /**
      * @author BNTang
      * @version 1.0
      * @project distributed-session-project
      * @description
      * @since Created in 2021/10/4 004 23:46
      **/
      @Component
      public class LoginInterceptor implements HandlerInterceptor {
      private static final String JWT_KEY = "BNTang";
      private static final String JWT_TOKEN = "header_token";
      private static final String UID = "uid";
      private static final String LOGIN_USER = "username";

      /**
      * 前处理
      * 返回true, 表示不拦截,继续往下执行
      * 返回false/抛出异常,不再往下执行
      *
      * @param request 请求
      * @param response 响应
      * @param handler 处理程序
      * @return boolean
      */
      @Override
      public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
      String token = request.getHeader(JWT_TOKEN);
      if (StringUtil.isNullOrEmpty(token)) {
      throw new RuntimeException("token为空!");
      }
      Algorithm algorithm = Algorithm.HMAC256(JWT_KEY);
      JWTVerifier verifier = JWT.require(algorithm).build();
      try {
      DecodedJWT jwt = verifier.verify(token);
      request.setAttribute(UID, jwt.getClaim(UID).asInt());
      request.setAttribute(LOGIN_USER, jwt.getClaim(LOGIN_USER).asString());
      } catch (TokenExpiredException e) {
      // token过期
      throw new RuntimeException("token 过期!");
      } catch (JWTDecodeException e) {
      // token错误
      throw new RuntimeException("解码失败,token 错误!");
      }
      return true;
      }
      }

      配置拦截器

      WebMvcConfig.java

      /**
      * web mvc配置
      *
      * @author BNTang
      * @date 2021/10/05
      */
      @Configuration
      public class WebMvcConfig implements WebMvcConfigurer {

      @Resource
      private LoginInterceptor loginInterceptor;

      @Override
      public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(loginInterceptor)
      .addPathPatterns("/userInfo");
      }
      }

      使用一下配置好的拦截器存放在 request 域当中的用户数据,修改 MyController.java:

      分布式Session

      /**
      * @author BNTang
      * @version 1.0
      * @project distributed-session-project
      * @description
      * @since Created in 2021/10/4 004 10:24
      **/
      @RestController
      public class MyController {

      private static final String JWT_KEY = "BNTang";
      private static final String USERNAME = "username";
      private static final String UID = "uid";

      /**
      * 登录
      *
      * @param username 用户名
      * @return {@link String}
      */
      @GetMapping("/login")
      public String login(String username) {
      Algorithm algorithm = Algorithm.HMAC256(JWT_KEY);
      return JWT.create()
      .withClaim(USERNAME, username)
      .withClaim(UID, "1001")
      .withExpiresAt(new Date(System.currentTimeMillis() + 10000))
      .sign(algorithm);
      }

      /**
      * 用户信息
      *
      * @param username 用户名
      * @return {@link String}
      */
      @GetMapping("/userInfo")
      public String userInfo(@RequestAttribute String username) {
      return username;
      }
      }

      测试方式同上,我测试的结果如下图所示:

      分布式Session

      分布式Session

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_15652665/5330551,作者:qq628b229e2808e,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:分布式Session共享解决方案

      下一篇:在普通计算机上安装VMware ESX 3.5 Update2注意事项

      相关文章

      2025-05-19 09:05:01

      项目更新到公网服务器的操作步骤

      项目更新到公网服务器的操作步骤

      2025-05-19 09:05:01
      公网 , 数据库 , 文件 , 更新 , 服务器
      2025-05-19 09:04:44

      FinalShell 配置SSH密钥登陆

      FinalShell 配置SSH密钥登陆

      2025-05-19 09:04:44
      密钥 , 服务器 , 配置
      2025-05-14 10:33:16

      30天拿下Python之使用网络

      Python网络编程覆盖的范围非常广,包括:套接字编程、socketserver、HTTP和Web开发、异步编程和asyncio等。

      2025-05-14 10:33:16
      Json , TCP , 客户端 , 接字 , 服务器 , 示例 , 连接
      2025-05-14 09:51:21

      python 在创建socket之后建立心跳机制

      在Python中,建立心跳机制通常用于维持客户端和服务器之间的长连接,确保连接活跃性。心跳机制通常是通过定时发送心跳包(一种小型的、特定格式的数据包)来实现的,如果在预定时间内没有收到对方的心跳响应,则认为连接可能已经中断。

      2025-05-14 09:51:21
      发送 , 客户端 , 服务器 , 服务器端 , 示例
      2025-05-13 09:53:23

      在Java、Java Web中放置图片、视频、音频、图像文件的方法

      在Java软件中放置图片,通常涉及将图片文件(如JPEG、PNG等)作为资源包含在我们的项目中,并在代码中通过适当的方式引用这些资源。这可以通过多种方式实现,但最常见的是在Java桌面应用(如Swing或JavaFX)或Web应用(如Servlet/JSP)中。

      2025-05-13 09:53:23
      JSP , URL , Web , 图片 , 服务器
      2025-05-13 09:50:48

      查找正在执行的select以及dml语句的相关信息

      查找正在执行的select以及dml语句的相关信息

      2025-05-13 09:50:48
      select , session , sql , SQL , 语句
      2025-05-09 09:21:53

      WebAPI 和 webservice的区别

      WebAPI 和 webservice的区别

      2025-05-09 09:21:53
      HTTP , 协议 , 客户端 , 服务器 , 请求
      2025-05-09 08:51:21

      laravel 源码分析之表单常用函数old

      laravel 源码分析之表单常用函数old

      2025-05-09 08:51:21
      input , session , 场景 , 源码 , 输入
      2025-05-09 08:51:09

      git学习(1)(简单概述、代码版本控制方式(集中/分布))

      git学习(1)(简单概述、代码版本控制方式(集中/分布))

      2025-05-09 08:51:09
      git , 一个 , 代码 , 共享 , 开发人员 , 服务器 , 版本
      2025-05-06 09:19:12

      redis高可用集群搭建

      redis高可用集群搭建

      2025-05-06 09:19:12
      master , redis , 服务器 , 节点 , 集群
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5237917

      查看更多

      最新文章

      LDAP基础理论

      2025-04-18 07:10:53

      解决tomcat部署项目中碰到的几个问题

      2025-04-09 09:13:17

      redis-cluster分布式集群安装部署

      2025-03-17 07:49:59

      Spring Boot + Shiro 实现 Session 持久化实现思路及遗留问题

      2025-03-06 09:15:52

      Linux-CentOS7部署Docker容器微服务相关总结记录

      2025-03-04 09:13:56

      一篇文章教你弄懂redis多模式部署

      2024-12-13 06:53:39

      查看更多

      热门文章

      ansible实现 AMP服务器的部署

      2023-04-21 02:57:32

      VUE 项目本地没有问题,部署到服务器上提示错误

      2023-05-05 10:13:38

      redis cluster k8s部署

      2023-03-02 09:38:54

      Samba服务器的部署配置

      2023-03-31 07:58:08

      部署DNS服务相关理论

      2023-05-23 08:27:27

      windows server 2016部署路由与远程访问服务(VPN)

      2023-06-28 09:03:45

      查看更多

      热门标签

      系统 测试 用户 分布式 Java java 计算机 docker 代码 数据 服务器 数据库 源码 管理 python
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Spring Boot + Shiro 实现 Session 持久化实现思路及遗留问题

      部署和配置DHCP服务器实验:自动分配IP地址和网络配置

      Linux脚本练习之script050-计算 `1+2+3+……+100` 的多个算法。

      linux服务器部署(以django项目为例)(三)

      KICKSTART自动部署centos7系统

      无法访问云服务器上部署的Docker容器(一)

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号