集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:400-111-8989  |   联系客服   |
当前位置:主页 > 培训课程 > Java >

成都Java开发工程师_Session共享

发布者: 成都达内     浏览次数:     发布时间:2020-02-24 12:09:00

正常情况下,HttpSession是通过Servlet 容器创建并进行管理的,创建成功之后都是保存在内存中。如果开发者需要对项目进行横向扩展搭建集群...

  简介:

  正常情况下,HttpSession是通过Servlet 容器创建并进行管理的,创建成功之后都是保存在内存中。如果开发者需要对项目进行横向扩展搭建集群,那么可以利用一些硬件或者软件工具来做负载均衡,此时,来自同一用户的HTTP请求就有可能被分发到不同的实例上去,如何保证各个实例之间Session的同步就成为一个必 须解决的问题。

  Spring Boot 提供了自动化的 Session共享配置,它结合Redis可以非常方便地解决这个问题。成都Java开发工程师使用Redis 解决Session共享问题的原理非常简单,就是把原本存储在不同服务器上的Session拿出来放在一个独立的服务器上。

  成都Java开发工程师_Session共享

  当一个请求到达Nginx服务器后,首先进行请求分发,假设请求被real server 1处理了,real server 1在处理请求时,无论是存储Session还是读取Session,都去操作Session服务器而不是操作自身内存中的Session,其他real server在处理请求时也是如此,这样就可以实现Session共享了。

  Demo:

  首先添加Redis和Session依赖,

  org.springframework.boot

  spring-boot-starter-data-redis

  org.springframework.boot

  spring-boot-starter-web

  org.springframework.session

  spring-session-data-redis

  org.springframework.boot

  spring-boot-starter-test

  test

  application.properties

  #使用0号库,redis默认0-15,16个库

  spring.redis.database=0

  spring.redis.host=192.168.205.100

  spring.redis.port=6379

  spring.redis.password=123456

  spring.redis.jedis.pool.max-active=8

  spring.redis.jedis.pool.max-idle=8

  spring.redis.jedis.pool.max-wait=-1ms

  spring.redis.jedis.pool.min-idle=0

  Controller:

  这里提供了两个方法,一个save接口用来向Session中存储数据,还有一一个get 接口用来从Session中获取数据。

  这里注入了项目启动的端口号server.port, 主要是为了区分到底是哪个服务器提供的服务。另外,虽然还是操作的HttpSession,但是实际上HttpSession容器已经被透明替换,真正的Session此时存储在Redis服务器上。

  @RestController

  public class HelloController {

  @Value("${server.port}")

  String port;

  @PostMapping("/save")

  public String saveName(String name, HttpSession session) {

  session.setAttribute("name", name);

  return port;

  }

  @GetMapping("/get")

  public String getName(HttpSession session) {

  return port + ":"

  + session.getAttribute("name").toString();

  }

  }

  将项目打成jar上传到centos,

  成都Java开发工程师_Session共享

  2.Nginx

  下载--配置

  成都Java开发工程师_Session共享

  启动:nginx默认80端口

  [root@localhost sbin]# /usr/local/nginx/sbin/nginx

  成都Java开发工程师_Session共享

  配置:

  [root@localhost sbin]# vi /usr/local/nginx/conf/nginx.conf

  成都Java开发工程师_Session共享

  重启nginx

  [root@localhost sbin]# /usr/local/nginx/sbin/nginx -s reload

  输入:

  http://192.168.205.100:80/save?name=eeeee

  调用80端口,实际上使用8080

  成都Java开发工程师_Session共享

  http://192.168.205.100:80/get

  调用80实际上是8081

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:400-111-8989

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:400-111-8989

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:400-111-8989

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:400-111-8989

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:400-111-8989

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:400-111-8989

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:400-111-8989

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56 蜀ICP备18021046号-3