![](https://img-blog.csdnimg.cn/20201029174822846.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
微服务
文章平均质量分 64
SpringCloud技术栈
简单随风
这个作者很懒,什么都没留下…
展开
-
Gateway 断言功能详解(Predict)
上文我们了解了Route的功能,这一节我们来看一下Gateway最重要的一个核心功能-断言,这个功能决定了一个HTTP请求应该由哪个Route来做路由。Predicate机制Predicate是Java 8中引入的一个新功能,就和我们平时在项目中写单元测试时用到的Assertion差不多,Predicate接收一个判断条件,返回一个ture或false的布尔值结果,告知调用方判断结果。你也可以通过and(与),or(或)和negative(非)三个操作符将多个Predicate串联在一块共同判断。前面原创 2021-01-15 08:46:50 · 4493 阅读 · 0 评论 -
借助Gateway网关层对服务端各类异常做统一处理
异常的种类网关层的异常分为以下两种:调用请求异常 通常由调用请求直接抛出的异常,比如在订单服务中直接报错throw new RuntimeException("error")网关层异常 由网关层触发的异常,比如Gateway通过服务发现找不到可用节点,或者任何网关层内部的问题。这部分异常通常是在实际调用请求发起之前发生的。在以上两种问题中,我认为网关层只应该关注第二个点,也就是自身异常。在实际应用中我们应该尽量保持网关层的“纯洁性”并且做好职责划分,Gateway只要做好路由的事情,不要牵扯到具转载 2021-01-08 17:26:27 · 5245 阅读 · 4 评论 -
Gateway + JWT 实现微服务体系下的用户鉴权
这里我们一共要建三个包auth-service-api:用户登录、鉴权和刷新token的接口层auth-service:接口的实现,以及jwt的引用gateway:网关集成jwt鉴权auth-service-api项目结构如下:pom<artifactId>auth-service-api</artifactId><dependencies> <dependency> <groupId>org.sp原创 2021-01-08 17:13:13 · 1993 阅读 · 0 评论 -
Gateway 自定义过滤器的实现
这里我们实现一个自定义的定时过滤器,打印一下请求信息@Slf4j@Componentpublic class TimerFilter implements GatewayFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { StopWatch timer = new StopWatch();原创 2021-01-08 15:17:01 · 2715 阅读 · 0 评论 -
Gateway 利用path断言完成url映射
Gateway的基础配置可参考《SpringBoot:Gateway引入初体验》,本篇将会在该篇的代码中进行改造。方法1:yml文件修改,添加路由规则spring: application: name: gateway-service cloud: gateway: discovery: locator: enabled: true lower-case-service-id: true routes原创 2021-01-08 11:15:54 · 2114 阅读 · 0 评论 -
Gateway 路由功能详解
在上篇《SpringBoot:Gateway引入初体验》中我们落地了一个自动路由的网关服务,这一篇我们就去看一看Gateway中的路由是怎么工作的。Gateway网关的路由功能可不是简简单单的“转发”请求,在请求到达网关再流转到指定服务之间发生了很多事儿,它不光可以拒绝请求,甚至可以“篡改”请求的参数,我们接下来就去看看路由这里面的门道。路由三重门Gateway中可以定义很多个Route,一个Route就是一套包含完整转发规则的路由,主要由三部分组成:断言集合 断言是路由处理的第一个环节,它是转载 2021-01-08 10:28:14 · 4475 阅读 · 0 评论 -
SpringBoot:Gateway引入初体验
我们暂时只做一个初步的引入,路由和断言之类的规则配置,在后续文章中再做讲解。pom<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>原创 2021-01-08 10:21:40 · 1147 阅读 · 0 评论 -
Bus的接入 RabbitMQ & Kafka
Spring的组件一向是以一种插件式的方式提供功能,将组件自身和我们项目中的业务代码隔离,使得我们更换组件的成本可以降到最低。Spring Cloud Bus也不例外,它的底层消息组件非常容易替换,替换过程不需要对业务代码引入任何变更。Bus就像一道隔离了底层消息组件和业务应用的中间层,比如我们从RabbitMQ切换为Kafka的时候,只需要做两件事就好了:在项目pom中替换依赖组件更改配置文件里的连接信息接下来我们就看一下RabbitMQ和Kafka两种消息组件如何接入Bus接入RabbitM原创 2021-01-07 09:39:21 · 318 阅读 · 0 评论 -
Eureka + Config 实现配置中心的高可用
Eureka的搭建可参考《SpringBoot:Eureka搭建注册中心》,本篇不再做展开下面搭建应用config-server-eureka首先还是pom<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactI原创 2021-01-06 15:53:49 · 836 阅读 · 0 评论 -
Config配置中心动态修改配置
本篇接于《动态获取github中的配置文件》,将其作为配置server我们新建一个config-client项目首先还是引入依赖:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </de原创 2021-01-06 14:53:52 · 1255 阅读 · 0 评论 -
Config配置中心动态获取github中的配置文件
首先我们先在github上创建两个测试用的配置文件:config-consumer-dev.ymlinfo: profile: dev name: Saulwords: 'God bless me'config-consumer-prod.ymlinfo: profile: prod name: Paulwords: 'God bless you'然后修改项目代码pom<dependencies> <dependency&g原创 2021-01-06 14:00:23 · 593 阅读 · 1 评论 -
Zookeeper急速入门与集群环境搭建
Zookeeper基础知识、体系结构、数据模型Zookeeper是一个类似linux、hdfs的树形文件结构,zookeeper可以用来保证数据在(Zookeeper)集群之间的数据的事务性一致性,zookeeper也是我们常说的CAP理论中的CP(强一致性);Zookeeper有一个概念叫watch(也称之为事件),是一次性触发的,当watch监视的数据发生变化时,通知设置了该watch的client端,即watcher实例对象(用于改变节点的变化而做出相应的行为)关于Zookeeper其他相关内原创 2020-07-06 17:56:26 · 273 阅读 · 0 评论 -
Turbine聚合服务 + Hystrix-Dashboard集成大盘监控
Turbine聚合服务Turbine的聚合比较简单,只需要添加注解和填好配置文件即可pom文件<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <原创 2020-12-31 17:11:42 · 264 阅读 · 0 评论 -
Hystrix使用多级降级
本篇配置类及其他代码可参考《Hystrix使用fallback完成消费降级》我们对Fallback进行一些修改@Slf4j@Componentpublic class Fallback implements MyService { @Override @HystrixCommand(fallbackMethod = "fallback2") public String error() { log.info("Fallback: I'm not a black原创 2020-12-31 15:52:31 · 229 阅读 · 0 评论 -
Hystrix实现Request Cache减压
本篇配置类及其他代码可参考《Hystrix使用fallback完成消费降级》我们在Hystrix下新建一个CacheService@Slf4j@Servicepublic class RequestCacheService { @Autowired private MyService service; @CacheResult @HystrixCommand(commandKey = "cacheKey") public Friend requestCac原创 2020-12-31 15:25:31 · 192 阅读 · 0 评论 -
Hystrix实现Timeout降级
本篇配置类及其他代码可参考《Hystrix使用fallback完成消费降级》Feign中添加测试方法传入秒数,线程会等待传入秒数的时间,然后返回端口号@Overridepublic String retry(@RequestParam(name = "timeout") int timeout) { while (--timeout >= 0) { try { Thread.sleep(1000); } catch (Inte原创 2020-12-31 11:05:21 · 624 阅读 · 0 评论 -
Hystrix使用fallback完成消费降级
本篇调用接口基于《Feign的基础应用(替代Eureka消费者)》pom文件<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependen原创 2020-12-31 10:35:41 · 479 阅读 · 0 评论 -
Feign的基础应用(替代Eureka消费者)
本篇接于《SpringBoot:Eureka创建服务提供者》。Demo项目结构如下:pom文件<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> &l原创 2020-11-14 10:32:03 · 253 阅读 · 0 评论 -
Ribbon配置自定义负载均衡策略
本篇接于上篇《Ribbon配置负载均衡策略》。我们来自定义一个基于一致性哈希规则的负载均衡策略。Deme项目结构如下:MyRule@NoArgsConstructorpublic class MyRule extends AbstractLoadBalancerRule implements IRule { @Override public void initWithNiwsConfig(IClientConfig iClientConfig) { }原创 2020-11-14 09:50:49 · 945 阅读 · 0 评论 -
Ribbon配置负载均衡策略
本篇接于上篇《使用Ribbon实现Eureka的负载均衡》。全局负载均衡策略操作比较简单,直接在Ribbon的项目内声明一个配置类,这样就可以启动RandomRule,其他的负载均衡策略启动方式同理。@Configurationpublic class RibbonConfiguration { @Bean public IRule defaultLBStrategy() { return new RandomRule(); }}或者直接将以上@Bea原创 2020-11-13 17:04:32 · 888 阅读 · 0 评论 -
使用Ribbon实现Eureka的负载均衡
本篇接于《SpringBoot:Eureka搭建注册中心》和《SpringBoot:Eureka创建服务消费者》。pom文件<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifact原创 2020-11-13 16:38:30 · 269 阅读 · 0 评论 -
Eureka启动心跳和健康检查
本篇配置基于《SpringBoot:Eureka搭建注册中心》和《SpringBoot:Eureka创建服务提供者》。clinet配置新增eureka: instance: # 如果x秒内,依然没有收到续约请求,判定服务过期 lease-expiration-duration-in-seconds: 5 # 每隔x秒钟,向服务中心发送一条续约指令 lease-renewal-interval-in-seconds: 30注册中心配置eureka: se原创 2020-10-30 09:43:35 · 771 阅读 · 0 评论 -
SpringBoot:Eureka创建服务消费者
本篇接于上篇《SpringBoot:Eureka创建服务提供者》pom文件<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependenc原创 2020-10-29 17:33:48 · 339 阅读 · 0 评论 -
SpringBoot:Eureka创建服务提供者
本篇接于上篇《SpringBoot:Eureka搭建注册中心》pom文件<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency原创 2020-10-29 17:11:03 · 302 阅读 · 0 评论 -
SpringBoot:Eureka搭建注册中心
搭建很简单,就以下三个文件:pom<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId>原创 2020-10-29 16:47:12 · 380 阅读 · 0 评论