绪论 前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一),今天我意外发现,注册中心可以无限的增加,并这种方法也比较简洁,这里分享给大家 spring cloud 高可用注册中心(Eureka)(三个注册中心)的实现 1.创建工程,这里只需要两个工程,一个注册中心一个测试客户端,不知道怎么创建的可以看spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一) 2.在工程…
目前业界流行的统一配置管理中心组件有Spring Cloud Config.Spring Cloud Alibaba的Nacos及携程开源的Apollo,本文将介绍Nacos作为统一配置管理中心的使用. 使用Nacos管理配置 比如我现在有这样一段代码: @Value("${your.configuration}") private String yourConfiguration; @GetMapping("/test_configuration") public…
Spring Cloud Alibaba从孵化器版本毕业:https://github.com/alibaba/spring-cloud-alibaba,记录一下自己学习Spring Cloud Alibaba的笔记. 1.在整合Spring Cloud Alibaba之前,首先需要整合Spring Cloud 在Spring Cloud的官网可以了解到目前最新的稳定版Spring Cloud版本,我所选择版本是Greenwich.SR3.在项目的pom.xml文件中加入以下代码段就可以整合Sp…
参考:https://cloud.spring.io/spring-cloud-static/Greenwich.SR2/single/spring-cloud.html#_global_filters 全局过滤器 作用 Combined Global Filter and GatewayFilter Ordering 对过滤器执行顺序进行排序 Forward Routing Filter 用于本地forward,也就是将请求在Gateway服务内进行转发,而不是转发到下游服务 LoadBala…
引自B站楠哥:https://space.bilibili.com/434617924 一.创建父工程 创建父工程hello-spring-cloud-alibaba Spring Cloud Alibaba 的环境在父工程中创建,微服务的各个组件作为子工程,继承父工程的环境. Spring Boot --->Spring Cloud --->Spring Cloud Alibaba 引入依赖时注意提前查询一下spring cloud的版本依赖关系. pom文件为,父工程打包时应打成pom,否…
最近在学习的时候,发现微服务架构中,假如只有一个注册中心,那这个注册中心挂了可怎么办,这样的系统,既不安全,稳定性也不好,网上和书上找了一会,发现这个spring cloud早就想到了,并帮我们解决了! 构建高可用的注册中心 1.创建spring boot项目 创建的网站http://start.spring.io/,界面如下,创建两个spring工程,一个作为注册中心,一个作为测试客户端,注意要导入(eureka-server),创建的界面如下 导入的依赖的配置如下 <?xml version…
1.手写一个客户端负载均衡器 在了解什么是Ribbon之前,首先通过代码的方式手写一个负载均衡器 RestTemplate restTemplate = new RestTemplate(); // 获取请求示例 List<ServiceInstance> instances = discoveryClient.getInstances("study02"); List<String> collect = instances.stream() .map(inst…
随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求陷入性能瓶颈或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位服务故障点,以对症下药.于是就有了分布式系统调用跟踪的诞生. Spring Cloud Sleuth 也为我们提供了一套完整的解决方案.在本文中,我们将详细介绍如何使用 Spring Cloud Sleuth + Zipkin 来为我们的微服务架构增加分布式服务跟踪的能力. Spring C…
在前文中,我们介绍了Spring Cloud Gateway内置了一系列的内置过滤器工厂,若Spring Cloud Gateway内置的过滤器工厂无法满足我们的业务需求,那么此时就需要自定义自己的过滤器工厂以实现特定功能.所谓过滤器工厂实际上就是用于创建过滤器实例的,而创建的过滤器实例都实现于GatewayFilter接口. 过滤器生命周期 Gateway以转发请求为边界,分为两个生命周期 pre:Gateway转发请求之前 post:Gateway转发请求之后 自定义过滤器工厂 继承Abst…
在前文中,我们介绍了Spring Cloud Gateway内置了一系列的路由谓词工厂,但是如果这些内置的路由谓词工厂不能满足业务需求的话,我们可以自定义路由谓词工厂来实现特定的需求. 例如有某个服务限制用户只允许在06:00 - 13:00这个时间段内才可以访问,内置的路由谓词工厂是无法满足这个需求的,所以此时我们就需要自定义能够实现该需求的路由谓词工厂. 首先定义一个配置类,用于承载时间段的配置参数: package com.example.gateway; import lombok.Da…