在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而打到另外一台服务器的时候,session丢失. 常规的解决方案都是使用:如apache使用mod_jk.conf. 在开发spring boot app的时候可以借助 spring session 和redis,用外置的redis来存储session的状态. 直接上代码,我这边直接默认你使用spring boot,如果你是普通的spring web项目,请参…
[本文章是否对你有用以及是否有好的建议,请留言] 在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而访问到另外一台服务器的时候,session丢失. 常规的解决方案都是使用:如apache使用mod_jk.conf,使用Memcached进行共享. 在开发spring boot app的时候可以借助 spring session 和redis或者ehcache,用外置的redis或者ehcache来存储se…
spring boot 分布式session实现 主要是通过包装HttpServletRequest将session相关的方法进行代理. 具体是的实现就是通过SessionRepositoryFilter过滤器将HttpServletRequest对象进行包装,当调用session相关的方法时,代理到SessionRepository的实现类. 我们先看看SessionRepository. public interface SessionRepository<S extends Session…
Redis 在 Spring Boot 2.x 中相比 1.5.x 版本,有一些改变.redis 默认链接池,1.5.x 使用了 jedis,而2.x 使用了 lettuce Redis 接入 Spring Boot 缓存,使用的注解跟 Ehcache 接入缓存的注解是一样的,Spring Boot 缓存应用 Ehcache 入门教程 安装 Redis 请参见 如何在 Mac 下安装 Redis 和 如何在 Window 下安装 Redis 本文仅仅适用 spring boot 2.x redi…
https://www.jdon.com/springcloud/eureka-health-monitoring.html 运行阶段执行健康检查的目的是为了从Eureka服务器注册表中识别并删除不可访问的微服务,Eureka 服务器并不是向客户端发送心跳请求,而是反过来,Eureka 客户端将心跳发送到Eureka服务器,让服务器了解其状态. 这些心跳机制就需要在微服务嵌入一个客户端,用来发送心跳,但是客户端本身必须确定其健康状态,而且Eureka服务器必须为客户端公开一些REST操作以让其发…
spring boot分布式的实现,使用spring cloud技术. 下边是我理解的spring cloud的核心技术: 1.配置服务器 2.注册发现服务器eureka(spring boot默认使用的服务器类别) 3.RestTemplate通过ribbon实现负载均衡技术 具体请看下列图:…
在Spring Boot应用程序中使用Redis缓存的步骤: 1.要获得Redis连接,我们可以使用Lettuce或Jedis客户端库,Spring Boot 2.0启动程序spring-boot-starter-data-redis默认使用了Lettuce.要获得Redis的池化连接工厂,我们需要在类路径上提供commons-pool2,下面展示使用Lettuce情况下的Maven依赖项配置: org.springframework.bootspring-boot-starter-data-r…
在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而打到另外一台服务器的时候,session丢失. 常规的解决方案都是使用:如apache使用mod_jk.conf. 在开发spring boot app的时候可以借助 spring session 和redis,用外置的redis来存储session的状态. 1.增加repository到pom.xml <repository> <id>spr…
先说 Redis 的配置,在一些网上资料中,Spring Boot 的 Redis 除了添加依赖外,还要使用 XML 或 Java 配置文件做些配置,不过经过实践并不需要. 先在 pom 文件中添加 redis 的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> &…
通常情况下,Tomcat.Jetty等Servlet容器,会默认将Session保存在内存中.如果是单个服务器实例的应用,将Session保存在服务器内存中是一个非常好的方案.但是这种方案有一个缺点,就是不利于扩展. 目前越来越多的应用采用分布式部署,用于实现高可用性和负载均衡等.那么问题来了,如果将同一个应用部署在多个服务器上通过负载均衡对外提供访问,如何实现Session共享? 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session…
这篇文章是松哥的原创,但是在第一次发布的时候,忘了标记原创,结果被好多号转发,导致我后来整理的时候自己没法标记原创了.写了几百篇原创技术干货了,有一两篇忘记标记原创进而造成的一点点小小损失也能接受,不过还是要和小伙伴们说明一下. 在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: 在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求,这个请求到达 Ng…
简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. demo地址在最下方给出. 本文主要实现shiro的以下几个功能: 1.当用户没有登陆时只能访问登录接口,访问其他接口会返回无效的授权码 2.当用户登陆成功后,只能访问该用户权限下的接口,其他接口会返回无权限访问 3.一个用户不能两个人同时在线,后登录的会自动踢出先登录的用户…
SpringBoot + Redis +SpringSession 缓存之实战 前言 前几天,从师兄那儿了解到EhCache是进程内的缓存框架,虽然它已经提供了集群环境下的缓存同步策略,这种同步仍然需要消耗一定时间的,就是从某种程度上讲短暂的缓存不一致依旧存在. 所以,我就选择了集中式缓存,在 SpringBoot 工程中使用 Redis 进行缓存. 个人参考案例 个人博客 : https://zggdczfr.cn/ 个人参考案例(如果认可的话,麻烦给颗star) : https://gith…
1. Redis 简介 Redis 是目前业界使用最广泛的内存数据存储.相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, lists, sets 等,同时支持数据持久化.除此之外,Redis 还提供一些类数据库的特性,比如事务,HA,主从库.可以说 Redis 兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景.本文介绍 Redis 在 Spring Boot 中两个典型的应用场景. 2. Lettuce 简介 如果在 Java 应用中使用过 Redis 缓…
基于redis的分布式锁spring-boot starter组件,使得项目拥有分布式锁能力变得异常简单,支持spring boot,和spirng mvc等spring相关项目 快速开始 spring boot项目接入 1.添加lock starter组件依赖,目前还没上传到公共仓库,需要自己下源码build ,已上传到maven中央仓库 <dependency> <groupId>org.springframework.boot</groupId> <arti…
前言 面试总是会被问到有没有用过分布式锁.redis 锁,大部分读者平时很少接触到,所以只能很无奈的回答 "没有".本文通过 Spring Boot 整合 redisson 来实现分布式锁,并结合 demo 测试结果. 首先看下大佬总结的图 正文 添加依赖 <!--redis--> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> s…
因为项目需求,需要在spring boot环境中使用redis作数据缓存.之前的解决方案是参考的http://wiselyman.iteye.com/blog/2184884,具体使用的是Jackson2JsonRedisSerializer.但是使用后发现性能并不理想,一个简单的json请求就需要几百毫秒. 后来项目的json统一换成了fastjson,使用了FastJsonRedisSerializer后,性能大幅提升,一个请求通常只要10几毫秒. 1.添加redis.fastjson的支持…
本文示例源码,请看这里: 如何安装与配置Redis,请看这里 首先添加起步依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 该依赖里默认包含了spring-data-redis和Jedis依赖,见这里 编辑applicatio…
项目中需要监控各个微服务节点的健康状态,找到了spring boot admin这个全家桶监控工具,它其实是Vue.js美化过的Spring Boot Actuator,官方的解释是: codecentric's Spring Boot Admin is a community project to manage and monitor your Spring Boot ® applications. The applications register with our Spring Boot…
前言 前面我们将 Redis 集成到工程中来了,现在需要用它来做点实事了.这次为了解决分布式系统中的 session 共享的问题,将 session 托管到 Redis. 正文 引入依赖 除了上篇文章中引入 spring-boot-starter-data-redis,还需要 spring-session 依赖: <dependency> <groupId>org.springframework.session</groupId> <artifactId>s…
关于spring boot 支持分布式事务,XA是常用的一种方式. 这里把相关的配置记下,方便以后使用. 首先配置两个不同的数据源 : 订单库.持仓库. /** * Created by zhangjunwei on 2017/8/2. */ @Configuration public class DataSourceConfig { /** * db1的 XA datasource * * @return */ @Bean(name = "symbolOrder") @Primary…
github地址:https://github.com/AndyFlower/Spring-Boot-Learn/tree/master/spring-boot-nosql-redis 一.加入依赖到pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <…
idea中新建spring boot项目,引入jedis依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </depen…
1. 前言 老板突然要上线一个需求,获取当前位置方圆一公里的业务代理点.明天上线!当接到这个需求的时候我差点吐血,这时间也太紧张了.赶紧去查相关的技术选型.经过一番折腾,终于在晚上十点完成了这个需求.现在把大致实现的思路总结一下. 2. MySQL 不合适 遇到需求,首先要想到现有的东西能不能满足,成本如何. MySQL是我首先能够想到的,毕竟大部分数据要持久化到MySQL.但是使用MySQL需要自行计算Geohash.需要使用大量数学几何计算,并且需要学习地理相关知识,门槛较高,短时间内不可能…
1.分布式简介  2.Zookeeper和Dubbo  3.zookeeper (1).zookeeper安装 官方文档:https://hub.docker.com/_/zookeeper?tab=description 在docker上安装zookeeper [root@hosystem ~]# docker search zookeeper NAME                               DESCRIPTION                             …
Spring boot 集成redis 为什么要用redis,它解决了什么问题? Redis 是一个高性能的key-value内存数据库.它支持常用的5种数据结构:String字符串.Hash哈希表.List列表.Set集合.Zset有序集合 等数据类型. Redis它解决了2个问题: 第一个是:性能 通常数据库的读操作,一般都要几十毫秒,而redisd的读操作一般仅需不到1毫秒.通常只要把数据库的数据缓存进redis,就能得到几十倍甚至上百倍的性能提升. 第二个是:并发 在大并发的情况下,所有…
一.添加Maven  依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.1.3.RELEASE</version> </dependency> 二.application.yml 中配置 redis 相关配置…
最近在使用springboot做项目,使用redis做缓存.在外网开发的时候redis服务器没有使用集群配置,所有就是用了RedisTemplate的方式进行连接redis服务器.但是项目代码挪到内网开发以后,内网redis服务器使用了集群的配置方式.所以原来的配置文件和帮助类 都完全不能使用了,所以最近对redis集群的配置进行了简单的研究. 1.首先是引入配置文件 gradle方式的配置文件 compile 'redis.clients:jedis:2.9.0' 2.application.…
一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency> 二.可以使用默认的配置,如有需要可以在application.properties中增加 三.新建操作redis的controller package net.Eleven…
1:使用idea创建一个maven工程 bos2 2:删除bos2的src 文件夹,向pom.xml文件 中添加版本号 <packaging>pom</packaging> <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.…