《Spring Cloud - 实战》
文章平均质量分 79
Spring Cloud
lakernote
不停的复盘自己,砥砺前行,不忘初衷
展开
-
微服务Spring Cloud相关系列文章【目录】总览,该目录会实时更新
Spring Cloud 相关系列文章目录网关服务Spring Cloud Gateway网关 Spring Cloud Gateway 简介 入门网关 Spring Cloud Gateway 内置的路由谓词工厂详解(最全的路由策略11种)网关 Spring Cloud Gateway 内置过滤器工厂(超级全30种)网关 Spring Cloud Gateway 内置全局过滤器网关 Spring Cloud Gateway 内置网关过滤器工厂总结网关 Spring Cloud G原创 2021-01-06 13:30:17 · 1127 阅读 · 3 评论 -
Graylog 中文手册 常用功能和问题整理
文章目录设置日志保留时间不同用户分配权限设置日志保留时间选择编辑,策略如下图三种策略消息记录数消息大小消息时间不同用户分配权限1.添加用户2.分配角色一般分配Reader角色即可3.用admin账户创建流和大屏面板添加Manage Alerts,例如app_name = roadnet分享–》选择用户或者团队–》选择权限–》点击Add Collborator–》点击Save同理构建大屏分享给指定用户...原创 2021-07-23 14:08:26 · 9853 阅读 · 0 评论 -
Spring Boot集成Graylog实现微服务日志聚合、分析
文章目录1.在Graylog中录入输入源2.Spring Boot集成其他常用搜索语法logback.xml多环境切换1.在Graylog中录入输入源选择System按钮中的input,录入一个输入源,如图以GELF UDP为例,在图中位置选择GELF UDP,选择完成后点击Launch new input,如图2.Spring Boot集成可在组件市场搜索logback、log4j、log4j2logback:https://github.com/osiegmar/logback-gelf原创 2021-07-23 11:21:37 · 1111 阅读 · 0 评论 -
网关 Spring Cloud Zuul 动态 Groovy Filter
一、首先在pom.xml中引入groovy所需的jar<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>最新</version></dependency>二、在Application.java 启动主类中添加Groovy加载器 @Comp原创 2021-06-18 14:47:41 · 418 阅读 · 0 评论 -
链路监控 skywalking初体验
文章目录简介安装启动服务界面Java项目接入简介SkyWalking是一个开源的 APM 系统,包括对 Cloud Native 架构中分布式系统的监控、跟踪、诊断能力。核心功能如下。服务、服务实例、端点指标分析根本原因分析。在运行时分析代码服务拓扑图分析服务、服务实例和端点依赖分析检测到缓慢的服务和端点性能优化分布式跟踪和上下文传播数据库访问指标。检测慢速数据库访问语句(包括SQL语句)警报浏览器性能监控基础设施(VM、网络、磁盘等)监控跨指标、跟踪和日志的协作相关地址:原创 2021-06-10 16:05:32 · 348 阅读 · 0 评论 -
Spring Cloud Feign ErrorDecoder-错误解码器的自定义
ErrorDecoder-错误解码器的自定义Feign 的默认错误处理程序ErrorDecoder.default总是抛出FeignException。现在,这种行为并不总是最有用的。因此,要自定义抛出的异常,我们可以使用*CustomErrorDecoder*:public class CustomErrorDecoder implements ErrorDecoder { @Override public Exception decode(String methodKey, Res原创 2021-06-07 15:54:24 · 5938 阅读 · 0 评论 -
Spring Cloud Feign Hystrix 断路器 支持
执行流程:请求失败,先执行多次重试,重试还不行就进入断路器熔断使用回退模式,当远程服务调用失败时,服务消费者将执行替代代码路径,以尝试通过另一种方式执行操作,而不是生成异常。步骤一 配置开启feign: client: config: default: connectTimeout: 3000 readTimeout: 3000 loggerLevel: BASIC hystrix: enabled: true # 开原创 2021-06-07 15:50:00 · 179 阅读 · 0 评论 -
Spring Cloud Feign 拦截器
拦截器可以为每个 HTTP 请求/响应执行各种隐式任务,从身份验证到日志记录。常用于服务端接口需要验证签名,所以我方在发起请求时要生成签名然后传过去。如果我们同时拥有*@Configuration* bean 和配置属性,配置属性将覆盖@Configuration*值*。请求拦截器自定义请求拦截器:@Beanpublic RequestInterceptor requestInterceptor() { return requestTemplate -> { reque原创 2021-06-07 15:35:54 · 1245 阅读 · 0 评论 -
Spring Cloud Feign 重试配置
配置默认是重试策略为Retryer.NEVER_RETRY方式一@Configuration@EnableFeignClients("com.laker.zuul.feign")public class FeignConfig { @Configuration public class FooConfiguration { @Bean Logger.Level feignLoggerLevel() { return Logge原创 2021-06-04 16:51:02 · 7306 阅读 · 1 评论 -
Spring Cloud Feign Feign连接读取超时配置
文章目录全局配置单个客户端feign相关配置类代码org.springframework.cloud.openfeign.FeignClientProperties看下如何配置feign连接和读取的超时时间在超时方面,它允许我们配置读取和连接超时。连接超时是 TCP 握手所需的时间,而读取超时则是从套接字读取数据所需的时间。默认情况下,连接和读取超时分别为 10 和 60 秒。全局配置feign: client: config: default: conn原创 2021-06-04 15:09:13 · 1243 阅读 · 0 评论 -
Spring Cloud Feign Feign客户端组件配置OkHttp
Feign 中默认使用 JDK 原生的 URLConnection 发送 HTTP 请求,我们可以集成别的组件来替换掉 URLConnection,比如 Apache HttpClient,OkHttp。配置 OkHttp 只需要加入 OkHttp 的依赖,代码如下所示。<dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactI原创 2021-06-04 14:49:04 · 1418 阅读 · 0 评论 -
Spring Cloud Feign Feign日志配置
文章目录步骤一 配置Logger.Level步骤二 配置logging level用于debug跟踪一些调用的详细信息排查bug的一把好手步骤一 配置Logger.LevelLogger.Level可以为每个客户端配置的对象告诉Feign要记录什么。NONE,不记录(DEFAULT)。BASIC,仅记录请求方法和URL以及响应状态代码和执行时间。HEADERS,记录基本信息以及请求和响应标头。FULL,记录请求和响应的标题,正文和元数据。例如,以下将将设置Logger.Level为F原创 2021-06-04 14:42:40 · 368 阅读 · 0 评论 -
Spring Cloud Feign 简介及入门示例
文章目录简介集成pom启用调用示例简介OpenFeign一个用于 Spring Boot 应用程序的声明式 REST 客户端。Feign通过可插入的注解支持(包括Feign注解和 JAX-RS 注解)使编写 Web 服务客户端变得更容易。使用 Feign 的一个好处是我们只需编写接口定义而不需要编写任何代码来调用服务。Netflix Feign 和 OpenFeign 之间的差异从根本上说,Feign 的这两种实现是相同的。我们可以将此归因于 Netflix Feign 是 OpenFeign原创 2021-06-04 13:41:15 · 365 阅读 · 0 评论 -
网关 Spring Cloud Zuul actuator监控路由、过滤器
第一步,配置监控端点放开:#actuator 启用所有的监控端点 “*”号代表启用所有的监控端点,可以单独启用,例如,health,info,metrics# spring boot 升为 2.0 后,为了安全,默认 Actuator 只暴露2个端点,heath 和 infomanagement: endpoints: web: exposure: include: "*" endpoint: health: show-de原创 2021-05-19 16:02:10 · 933 阅读 · 0 评论 -
网关 Spring Cloud Zuul 跨域问题
文章目录corsFilter方式自定义跨域ZuulFiltercorsFilter方式在zuul服务下添加一个corsFilter实现跨域,实现起来方便。代码如下@Configurationpublic class GateWayCorsConfig { @Bean public FilterRegistrationBean corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBase原创 2021-05-17 17:03:44 · 507 阅读 · 0 评论 -
网关 Spring Cloud Zuul 自定义过滤器认证转换 Token
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;过滤器类型 : FilterConstants.PRE_TYPE过滤器优先级:跟debug 一样 FilterConstants.DEBUG_FILTER_ORDER是否开启:可以获取path判断某些不过滤可以自定义增加请求参数或者请求头可以自定义不传递,直接返回的响应码和响应体@Componentpublic class PreT.原创 2021-05-11 13:33:28 · 445 阅读 · 0 评论 -
网关 Spring Cloud Zuul 内置过滤器详解以及常见扩展思路
文章目录概述过滤器类型和生命周期Spring Cloud Zuul 的内置过滤器Pre filtersRoute filtersPost filtersError filters禁用过滤器应用场景前置过滤器后置过滤器错误过滤器配置管理概述在 Zuul 中自定义过滤器需要继承抽象类 ZuulFilter,需要实现以下4个方法:String filterType(); // 过滤器类型 PRE、ROURING、POST、ERRORint filterOrder(); // 执行顺序,数值越小优先原创 2021-05-11 11:21:29 · 592 阅读 · 3 评论 -
网关 Spring Cloud Zuul 健康检查以及自动剔除失效实例上线自动恢复
文章目录前言正常监控检查原理Ribbon原理自定义监控检查自定义配置自定义HealthCheck配置文件前言假设负载后台2个实例192.1.1.101:80192.1.1.102:80【失败】如果没有监控检查,则会192.1.1.101:80成功,192.1.1.102:80失败【等到超时才能感知】,192.1.1.101:80成功,192.1.1.102:80失败【等到超时才能感知】。。。。这样很浪费资源,我们想达到能动态感知后台失效的实例,并剔除掉无效实例,达到一直请求192.1.1.1原创 2021-04-26 15:59:10 · 1187 阅读 · 0 评论 -
网关 Spring Cloud Zuul 给Zuul路由加上自动重试
文章目录概要依赖导入配置文件概要当Netflix Zuul用作将传入请求转发到后端服务的网关时,总是有一个请求可能无法后端服务的机会。当请求失败时,您可能希望自动重试该请求。为此,在使用Sping Cloud Netflix时,您需要在应用程序的类路径中包括Spring Retry。当出现Spring Retry时,负载平衡的Zuul会自动重试任何失败的请求(如下示例配置,如果后端服务关闭,Zuul将重试2次)。Zuul使用的默认HTTP客户端现在由Apache HTTP客户端而不是已弃用的Ri原创 2021-04-21 13:08:38 · 534 阅读 · 0 评论 -
网关 Spring Cloud Zuul 静态、动态路由配置的几种形式
文章目录静态Url路由静态服务器列表路由动态路由静态Url路由path+urlzuul: routes: laker: path: /laker/** url: http://localhost:8080其中path是一个ant风格的表达式,所以/laker/*仅仅匹配一层目录,而/laker/**可以匹配任意多层级目录。简单的url路由不会作为HystrixCommand执行,也不会使用Ribbon负载均衡,即无负载均衡,故障切换,重试,断路器功能。静态服原创 2021-04-21 10:47:27 · 577 阅读 · 0 评论 -
网关 Spring Cloud Zuul 抓取404异常
问题描述:网关zuul配置如下zuul: routes: laker: path: /laker/** url: http://httpbin.org正常访问:http://localhost:8080/laker/get 路由到 http://httpbin.org/get异常访问:http://localhost:8080/lake123 返回错误页面如下:想要达到自定义返回json格式的效果。直接上解决代码@RestController@Slf原创 2021-04-20 17:04:14 · 676 阅读 · 0 评论 -
网关 Spring Cloud Zuul 常见功能介绍(翻译)
文章目录服务配置Http 客户端选择Cookies and Sensitive Headers(cookies和敏感头部)忽略头部管理端点Routes Endpoint(路由端点)Filters Endpoint(过滤器端点)压缩模式和本地转发通过Zuul上传文件查询字段编码请求URI编码禁用Zuul过滤器为路由提供Hystrix降级服务Zuul的超时时间重写头部Location字段跨域请求度量指标限流在ZuulFilter中修改请求和相应在ZuulFilter中修改请求Resquest在ZuulFilte原创 2021-04-20 14:57:11 · 1333 阅读 · 0 评论 -
网关 Spring Cloud Zuul 简介 入门
文章目录简介快速开始依赖导入代码示例配置文件简介路由是微服务架构不可或缺的一部分。例如,/可能被映射到您的Web应用程序,/api/users被映射到用户服务以及/api/shop被映射到商店服务。 Zuul是Netflix基于JVM的路由器和服务器端负载均衡器。Zuul功能如下:Authentication - 认证Insights - 过滤Stress Testing - 压力测试Canary Testing - 金丝雀测试Dynamic Routing - 动态路由Servi原创 2021-04-20 14:00:17 · 205 阅读 · 0 评论 -
Spring Cloud OpenFeign 中文手册 菜鸡翻译
文章目录1.声明式REST客户端:Feign1.1 如何引入Feign1.2 覆盖默认配置1.3 手动创建Feign1.4 Feign Hystrix支持1.5 Feign Hystrix Fallbacks1.6 Feign @PrimaryFeign支持集成1.8 Feign请求/响应压缩Feign日志1.8 @QueryMap支持1.11 HATEOAS支持1.12 Spring @MatrixVariable支持1.13 CollectionFormat支持1.14 反应性支持1.14.1 早期初原创 2021-02-03 15:51:16 · 1051 阅读 · 0 评论 -
Nacos 高可用实现机制剖析
文章目录前言高可用介绍客户端重试一致性协议 distro本地缓存文件 Failover 机制心跳同步服务集群部署模式高可用节点数量多可用区部署部署模式MSE Nacos 的高可用最佳实践总结简介: 我今天介绍的 Nacos 高可用,是 Nacos 为了提升系统稳定性而采取的一系列手段。Nacos 的高可用不仅仅存在于服务端,同时也存在于客户端,以及一些与可用性相关的功能特性中,这些点组装起来,共同构成了 Nacos 的高可用。前言服务注册发现是一个经久不衰的话题,Dubbo 早期开源时默认的注册中心转载 2021-01-21 20:05:45 · 1341 阅读 · 1 评论 -
注册中心 Nacos 异常实例需要30s才能剔除 Nacos心跳时间设置(踩坑)
nacos心跳检测 间隔设置nacos心跳时间acos控制台观察一个监控的实例把他强杀掉(kill -9)模拟异常崩溃要等到30s才会把实例剔除(15s设置不健康)排查其实很容易想到,这是默认心跳超时配置以及剔除策略配置导致的,然后各种debug源码以及官网issue搜索原创 2021-01-20 20:41:25 · 14119 阅读 · 19 评论 -
注册中心 Nacos 入门、服务注册和服务发现功能介绍
文章目录前言服务注册发现: Nacos Discovery Starter如何引入 Nacos Discovery StarterAliyun Java Initializr 创建工程并引入 Nacos Discovery(推荐)Maven pom.xml 依赖 Nacos Discovery启动Nacos Server启动一个 Provider 应用服务的 EndPoint启动一个 Consumer 应用关于 Nacos Starter 更多的配置项信息前言Spring Boot 应用程序在服务注册原创 2021-01-20 14:47:23 · 995 阅读 · 1 评论 -
Spring Boot 实现在线WebLog、动态设置日志级别(可配合Nacos实现动态刷新)
文章目录前言实战1. 实现服务器端日志浏览2. 实现日志级别查询3. 实现日志的级别动态设置前言通过前2篇原理剖析我们已经可以模拟造轮子了,本篇内容来实战一波。Nacos或者Config是如何加载远程配置的?然后再模拟它造个轮子?Nacos或者Config是怎么实现配置热刷新的?然后再模拟它造个轮子?在实际项目开发中,一般的业务配置刷新,直接用@RefreshScope+@Value即可,但是我们项目上经常会遇到这样的场景,无法简单的用@RefreshScope+@Value实现,例如:线原创 2021-01-19 19:55:01 · 3066 阅读 · 1 评论 -
配置中心 Nacos 原理 Nacos或者Config是怎么实现配置热刷新的?然后再模拟它造个轮子?
文章目录前言问题1. 如何实现配置热刷新1. @RefreshScope原理2. ContextRefresher.refresh()3. RefreshScope.refreshAll()4. 模拟造轮子问题2. Nacos客户端如何实时监听到Nacos服务端配置更新了1. Apollo 实现方式2. 什么是DeferredResult3. 模拟造轮子总结前言上一篇 Nacos或者Config是如何加载远程配置的?然后再模拟它造个轮子?,我们已经搞清楚了Nacos是如何加载远程配置的。这篇我们来看下N原创 2021-01-19 11:24:27 · 5514 阅读 · 1 评论 -
配置中心 Nacos 原理 Nacos如何加载远程配置?
文章目录前言Nacos如何加载远程配置?wireshark抓包分析原理分析1. 当spring程序启动时会调用locate方法。2. debug跟踪,真正获取远程配置的是 NacosConfigService调用getConfigInner()。3. 解析远端拿回的内容,NacosDataParserHandler. parseNacosData重复造轮子准备实现自定义PropertySourceLocator启用自定义PropertySourceLocator**BootstrapConfiguratio原创 2021-01-15 18:21:12 · 5222 阅读 · 8 评论 -
配置中心 Nacos 简介、入门 拉取远程配置和动态刷新配置功能介绍
文章目录简介项目集成Pom.xml 示例启动Nacos ServerNacos Server添加配置常用功能介绍使用 Nacos Config 作为 Spring Cloud 分布式配置使用 Nacos Config 实现 Bean 动态刷新Bean @Value 属性动态刷新@ConfigurationProperties Bean属性动态刷新使用 Nacos g Config 监听实现 Bean 属性动态刷新简介Nacos有注册中心和配置中心的功能,先单独介绍配置中心。 Nacos 提原创 2021-01-15 14:48:08 · 4683 阅读 · 0 评论 -
解决Nacos国内下载速度缓慢的问题
nacos-server-1.4.0.zip百度网盘下载 nacos的GitHub地址:传送门,由于各种已知的原因(不可抗力),在国内下载的速度太慢了,记录分享下解决方案。整体思路: 使用国内的Gitee上的镜像传送门下载源码进行编译1.选择相应的版本源码下载当前稳定版本为1.4.0,Gitee上nacos地址如下:ht原创 2021-01-15 10:07:42 · 18885 阅读 · 19 评论 -
网关 Spring Cloud Gateway 实战负载均衡(Spring Cloud Loadbalancer)
本文Spring Cloud Gateway 版本:2020.0.0Spring Boot版本:2.4.1前言拿着最新版本来实战一波负载均衡,毕竟之前都是demo级别的玩具车,但是遇到坑了,官网说用lb://lakerservice形式即可,但是配置完成后,并未生效。Spring Cloud 高版本移除了 Ribbon 用Spring Cloud Loadbalancer 替代原创 2021-01-07 09:05:40 · 11404 阅读 · 3 评论 -
网关 Spring Cloud Gateway 故障排查日志技巧
日志Wiretap本文Spring Cloud Gateway 版本:2020.0.0本节介绍了使用Spring Cloud Gateway时可能出现的常见问题。日志按需将如下包的日志级别设置成 debug 或 trace,其包含有价值的故障排除信息:org.springframework.cloud.gatewayorg.springframework.http.server.reactiveorg.springframework.web.reactiveorg.springfra原创 2021-01-07 09:02:53 · 4270 阅读 · 0 评论 -
用“十幅图“来深刻理解 网关服务 Spring Cloud Gateway
以下是在Spring Cloud Gateway中请求路由如何工作的高层流程:端到端无阻塞的-它公开了一个基于Netty的服务器,使用基于Netty的客户端进行下游微服务调用,并在其余流程中使用了反应堆核心。一旦请求到达网关,网关要做的第一件事就是根据定义的谓词将请求与每个可用路由进行匹配。路由匹配后,请求将移至Web处理程序,过滤器将应用于该请求。网关本身提供了许多开箱即用的过滤器,用于修改请求标头和主体。预过滤器专门应用于路由,而全局过滤器可以应用于所有路由请求。全局过滤器可以应用于在一个位置执原创 2021-01-06 14:29:38 · 3312 阅读 · 19 评论 -
网关 Spring Cloud Gateway 统一全局异常处理
前言自定义异常处理逻辑覆盖默认的配置1. 异常时如何返回 JSON 而不是 HTML?2. getHttpStatus 需要重写验证本文Spring Cloud Gateway 版本:2020.0.0前言Spring Cloud Gateway异常默认返回如下:浏览器访问:原创 2021-01-06 13:18:51 · 10262 阅读 · 4 评论 -
网关 Spring Cloud Gateway HTTP超时配置
1. 全局超时2. 每个路由超时3. Fluent Java Routes API4. DiscoveryClient路由定义定位器4.1 DiscoveryClient路由配置谓词和过滤器本文Spring Cloud Gateway 版本:2020.0.0可以为所有路由配置Http超时(响应和连接),并为每个特定路由覆盖Http超时。1. 全局超时要配置全局http超时:connect-timeout必须以毫秒为单位指定。response-timeout必须指定为java.time原创 2021-01-06 12:50:41 · 20965 阅读 · 4 评论 -
网关 Spring Cloud Gateway 跨域配置
配置文件方式代码配置方式本文Spring Cloud Gateway 版本:2020.0.0在 Spring Cloud Gateway 中配置跨域有两种方式,分别是代码配置方式和配置文件方式。配置文件方式您可以配置网关以控制CORS行为。“全局” CORS配置是URL模式到Spring FrameworkCorsConfiguration的映射。以下示例配置了原创 2021-01-06 11:57:56 · 3719 阅读 · 1 评论 -
网关 Spring Cloud Gateway 自定义过滤器(全局过滤器以及网关过滤器)
1.简介2.项目设置2.1 API网关配置3.创建全局过滤器3.1 编写全局“前置”过滤器逻辑3.2 编写全局“后”过滤器逻辑4.创建网关GatewayFilter4.1 定义GatewayFilterFactory4.2 用配置注册GatewayFilter4.3 GatewayFilter顺序4.4 以编程方式注册GatewayFilter5.高级方案5.1 检查和修改请求5.2 修改响应5.3 将请求链接到其他服务本文Spring Cloud Gateway 版本:202原创 2021-01-06 11:41:26 · 2826 阅读 · 0 评论 -
网关 Spring Cloud Gateway 内置网关过滤器工厂总结
1.简介2. WebFilter工厂3.实施WebFilter工厂3.1 HTTP请求3.2 HTTP响应3.3 路径3.4 与HTTP状态有关3.5 请求大小限制4.高级用例4.1 断路器4.2 重试4.3 保存会话并保护标题4.4 请求速率限制器本文Spring Cloud Gateway 版本:2020.0.01.简介Spring Cloud Gateway是微服务中经常使用的智能代理服务。它透明地将请求集中在单个入口点中,并将其路由到适当的服务。它的一个最有趣的特点是原创 2021-01-06 11:24:42 · 638 阅读 · 0 评论