Spring Cloud

Spring Cloud: JWT加密 keytool生成jks文件

北慕城南 提交于 2020-08-05 16:12:04
通过keytool生成jks文件: 运行下面的命令生成私钥,姓名国家啥的可以不填 keytool -genkey -alias ffzs-jwt -keyalg RSA -keysize 1024 -keystore ffzs-jwt.jks -validity 365 -keypass ffzs00 -storepass ffzs00 在上面的命令中,-alias选项为别名,-keypass和-storepass为密码选项,-validity为配置jks文件的过期时间(单位:天)。 获取的jks文件作为私钥,是如何解密JWT的呢?这时就需要使用jks文件的公钥。获取jks文件的公钥命令如下: keytool -list -rfc --keystore ffzs-jwt.jks | openssl x509 -inform pem -pubkey 输入密码之后生成公钥可私钥 auth端修改: 这个不重要,我们将生成的ffzs-jwt.jks文件放到resources目录 修改jwtTokenEnhancer方法如下,通过jks文件获取公钥来生成token @Bean protected JwtAccessTokenConverter jwtTokenEnhancer ( ) { KeyStoreKeyFactory keyStoreKeyFactory = new

Spring Cloud认知学习(一):Spring Cloud介绍与Eureka使用

筅森魡賤 提交于 2020-08-05 13:41:31
目录 Spring Cloud的介绍 微服务的介绍 Spring Cloud出现的原因: 常见场景: 微服务的优劣势: Spring Cloud版本问题 版本介绍 与Spring Boot版本对应关系 ---分割线---学习的前提---分割线--- 基础项目搭建 1.创建一个Maven父工程: 2.创建一个共有依赖包: 3.创建一个服务提供者: 4.创建一个服务消费者 小节总结 Eureka服务注册与发现 介绍 简单使用步骤 1.父工程导入依赖: 2.新建spring-cloud-eureka-server-7001模块: 3.修改服务提供者 4.修改服务消费者 Eureka集群 搭建步骤 1.新建三个eureka-server模块, 2.都导入依赖包: 3.都对应修改主启动类: 4.修改host 5.修改application.yml: 6.启动三个server,查看效果: 7.对消费者和生产者的处理 知识补充: 补充: 这是一个Spring Cloud系列文章,它并不会讲解所有的知识点,它只是基于微服务的场景来 逐步介绍 常见组件的作用和意义,以及场景组件的整合。对于每个组件的知识并不会讲解太多,只讲常见的,目的是尽可能快速的对Spring Cloud的常用组件有一个基础的认知,有了认知之后,你就可以基于你面对的场景来单独学习某个组件,逐步丰满自己Spring Cloud的知识

开发SpringCloud微服务三年,我才知道@EnableEurekaServer注解到底做了什么

北城余情 提交于 2020-08-05 13:39:14
全是干货的 Java 技术仓库: https://github.com/Wasabi1234/Java-Interview-Tutorial 当你在启动类上添加了启动 Eureka 服务注册中心注解时,到底发生了什么呢? 激活eureka服务器相关配置EurekaServerAutoConfiguration的注解 EurekaServerMarkerConfiguration 点击到这里,我们发现 spring.factories文件 注意到如下注解 @ConditionalOnBean - 条件注入 也就是当有EurekaServerMarkerConfiguration.Marker.class时,才会注入 所以@EnableEurekaServer就是个开关,只要写了该注解,spring 就会帮你把EurekaServerAutoConfiguration类注入进来。 那么为什么注入他就行了? EurekaServerAutoConfiguration#jerseyFilterRegistration 注意如下类: ApplicationResource#addInstance 相当于 MVC 中的 controller /** * Registers information about a particular instance for an * {@link com

spring cloud 微服务之:Feign

前提是你 提交于 2020-08-05 12:21:33
提供接口的服务为被调用方,发起Feign 请求的服务为调用方,Feign 配置在调用方,也成为 Feign client 客户端 1. 在调用方配置pom,引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> 2. 写一个 interface //www.1b23.com @FeignClient( "xing-user" )//服务名 public interface UserInterface { @RequestMapping(value ="/user/findByNameEn/{nameEn}" ,method = RequestMethod.GET )//必须使用RequestMapper,使用GetMapping启动报错 public User findByNameEn(@PathVariable("nameEn" ) String nameEn);//@PathVariable后面需要指定nameEn,不然可能报错 } 3. 启动类上加上注解 @EnableFeignClients(basePackages = {"org.fh.movie"})指定上面接口所在的类

Spring Cloud之Eureka服务注册客户端eureka-client无法向服务端eureka-server注册问题解决

偶尔善良 提交于 2020-08-05 12:05:34
服务注册中心eureka-server实现: 在EurekaServerApplication添加@EnableEurekaServer表示为注册中心,添加配置文件: server: port: 8761 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ register-with-eureka: false spring: application: name: eureka 服务注册客户端eureka-client实现: 在EurekaServerApplication添加@EnableDesicoveryClient表示为客户端,添加配置文件: server: port: 8762 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ spring: application: name: eureka-client 启动项目之后,访问localhost:8761,发现eureka-client并没有注册成功! 解决方法 目前的版本情况是: Spring Boot 2.3.1.RELEASE Spring Cloud Hoxton.SR5 只需要在eureka-client添加一下依赖即可解决:

spring cloud openfeign 的原理

二次信任 提交于 2020-08-05 09:19:30
文章将会围绕以下几个问题展开讨论 1. 什么时候为@FeignClient注解的接口生成代理? 2. Contract 、Encoder、Expander、AnnotatedParameterProcessor之间的关系? 3. 怎么变成具体的请求参数? 3. Feign的请求发送流程 feign 初始化 ========== EnableFeignClients注解引入 FeignClientsRegistrar.class FeignClientsRegistrar 实现 ImportBeanDefinitionRegistrar接口,是在容器中动态添加spring bean的类。FeignClientsRegistrar 通过 registerBeanDefinitions 方法的 registerFeignClients(),扫描所有通过@FeignClient注解的接口,并为每个接口 创建一个FeignClientFactoryBean类,注册在spring的 BeanDefinitionRegistry。spring 容器初始化时,FeignClientFactoryBean#getObject 为每个feignClient接口生成代理。 生成代理的时候对契约进行校验。 SpringMvcContract 初始化时

nacos+ribbon自定义ab测试路由策略

喜你入骨 提交于 2020-08-05 09:19:13
原理:通过请求头埋入指定服务的metadata标识,扩展ribbon的choose策略。 一定要注意hystrix的隔离策略 !!强烈推荐使用信号量隔离。 因为一旦使用线程隔离(线程池存在复用),会导致InheritThreadLocal(只会在线程init时拷贝父线程的ThreadLocal值)失效。 传送门 下载源码编译 应用集成 maven依赖 <dependency> <groupId>io.jmnarloch</groupId> <artifactId>ribbon-discovery-filter-spring-cloud-starter</artifactId> <version>2.1.0</version> </dependency> 应用配置 #AB测试用,网关会根据该参数路由 spring.cloud.nacos.discovery.metadata.launcher=A 拦截器 public class AbTestingFilter extends OncePerRequestFilter { private final static String SWITCH_KEY = "launcher", SWITCH_HEAD_KEY = "switchTag", DEFAULT_ENV = "B";//默认B为线上测试环境 @Value("${spring

Java开发5年遭遇职业瓶颈,你该如何继续提升技术实力?

蹲街弑〆低调 提交于 2020-08-05 08:15:29
首先技术实力可以分为两层 : 对技术知识和框架本身的掌握程度,比如你熟悉redis、memcached等的用法。 运用技术知识和框架解决实际问题的能力。 很多人觉得,我熟悉这种技术,了解API,会做一些小例子,就有技术实力了。但实际上,一个人的技术实力,练不到第二层,都是瞎扯淡。 所以我们接下来要讨论的是运用技术知识和框架解决实际问题的能力 。 提升技术实力,关键的是实践、实践、实践 。 通常有两种靠谱的方法 : 找一个能够频繁给你高强度刺激的工作环境,你可以不断去实践,想停下来都不行 主动的、有意识的去做专项练习和综合练习 先说第一个,比如你在一个朝九晚五相对悠闲的公司,节奏缓慢,半年出一个版本,那就换到 996 的公司、一周一个版本的那种,Ok,自然你的技术实力就提高得快,HIGH得你不要不要的。 不过很多人是叶公好龙,不会为了提升技术实力而这么残害自己的。然而说实话,这几乎是唯一靠谱的方法。 再说第二种方法,有意练习。这是对一种方法的补充哦。注意,是补充。 因为 大部分的人,没有主动、有意的练习的能力 。 简单讲,就是不愿意为了获得某种实力而积极主动给自己加压,总想着哎呀是不是有什么方法、捷径,我照着一学,技术实力就上去了。 我可以坦白讲,没有的事!别做梦了。 所以,这第二种方法,只适用于那些愿意给自己压力、愿意逼迫自己前进的人。而且,它的目的,也是给自己创造实践的机会。

Spring Cloud Ribbon 客户端负载均衡

僤鯓⒐⒋嵵緔 提交于 2020-08-05 05:21:12
Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等,内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略: 简单轮询负载均衡 加权轮询负载均衡 区域感知轮询负载均衡 随机负载均衡 先写一个类模拟一个IP列表: public class IpMap { // 待路由的Ip列表,Key代表Ip,Value代表该Ip的权重 public static HashMap<String, Integer> serverWeightMap = new HashMap<String, Integer>(); static { serverWeightMap.put("192.168.1.100", 1); serverWeightMap.put("192.168.1.101", 1); // 权重为4 serverWeightMap.put("192.168.1.102", 4); serverWeightMap.put("192.168.1.103", 1); serverWeightMap.put("192.168.1.104", 1); // 权重为3 serverWeightMap.put("192.168.1.105", 3); serverWeightMap.put("192.168.1.106", 1); // 权重为2

阿里云EDAS 3.0重磅发布,无侵入构建云原生应用

寵の児 提交于 2020-08-05 05:16:52
据介绍,EDAS3.0 围绕微服务治理、K8s 集群纳管、监管控一体化、阿里云其他基础产品集成体验进行了全面升级,包括无侵入(无需修改一行代码)即可兼容Spring Cloud/Dubbo近5年发布的所有版本,使用全套微服务治理能力,例如金丝雀发布、离群实例摘除、服务鉴权、无损下线、限流降级和全链路流控等。此外,EDAS3.0 在提供 K8s 集群托管的基础山,提供了应用实例打散一键多 AZ 高可用部署、应用发布版本管理、发布变更跟踪、应用层机制弹性等全流程的管控能力,帮助用户更高效的管理阿里云上的容器集群。 EDAS产品经理先河在发布会上表示,EDAS3.0 除了在微服务治理和容器纳管上提供了差异化的产品竞争力外,还将阿里巴巴应用应用安全三板斧,即可观测、可灰度、可回滚融合其中,并实现了 K8s 集群的监管控一体化,提供了更多维度的自动监控、智能诊断和报告输出等功能。据悉,包括中国邮政、安利、福特汽车、红岭创投等来自政企、新零售、制造、新金融等行业的客户正通过 EDAS 来构建云上的容器应用。 云原生时代,K8s 集群的运维管理,和在容器上高效、安全的管理微服务应用都面临了新的挑战,而EDAS 3.0提供了切实可行的应对方案。 来源: oschina 链接: https://my.oschina.net/u/4497880/blog/4292539