
Spring Cloud
文章平均质量分 56
ywb201314
兵法有言,知己知彼,百战不殆
展开
-
Spring Boot 2.x实战85 - Spring Security 9 - OAuth 2.0之Client
使用Chrome访问http://127.0.0.1:8083/forAdminCan1,这是一个受保护的资源,地址会自动打向Authorization Server的登陆页面:http://localhost:8080/login。我们点击Authorize,地址会自动打向刚开始访问的http://127.0.0.1:8083/forAdminCan1地址,当我们在Authorization Server上登陆授权后,我们就可以获得访问Resource Server的服务了。转载 2022-09-19 17:44:00 · 1761 阅读 · 0 评论 -
spring cloud gateway之服务注册与发现
在上面的配置中,配置了一个Path 的predict,将以/demo/**开头的请求都会转发到uri为lb://SERVICE-HI的地址上,lb://SERVICE-HI即service-hi服务的负载均衡地址,并用StripPrefix的filter 在转发之前将/demo去掉。在上面的例子中,向gateway-service发送的请求时,url必须带上服务名service-hi这个前缀,才能转发到service-hi上,转发之前会将service-hi去掉。返回的结果跟我们预想的一样。转载 2022-09-14 14:32:38 · 670 阅读 · 0 评论 -
Spring Cloud Sleuth服务调用链路追踪
目地址为: https://github.com/kevin-lihongmin/spring-cloud-project-kevin/tree/master/zipkin-demo,其中Zipkin服务不可用,所以可以使用单独的包进行部署。之前的Spring Cloud Robbin搭建中有说明,ribbon有在本地配置中添加服务端列表的方式和在注册中心或者服务者列表两种调用方式,现在把三个服务都注册到注册中心,动态进行调用,ribbon-demo详见Spring Cloud Ribbon负载均衡实现。.转载 2022-08-31 13:41:50 · 707 阅读 · 0 评论 -
SpringBoot使用prometheus监控
本文介绍SpringBoot如何使用Prometheus配合Grafana监控。转载 2022-08-30 14:39:26 · 615 阅读 · 0 评论 -
feign启用httpclient、okhttp
源码中,并没有设置 feign.okhttp.enabled 默认为 true,所以如果要启用okhttp的话,需要在配置文件中设置 feign.okhttp.enabled=true,同时需要引入okhttp的相关依赖。所以从 openfeign的 ribbon 下的 HttpClientFeignLoadBalancedConfiguration源码中可以看出。加了注解@ConditionalOnProperty,在没有配置 feign.httpclient.enabled 时,默认为true。...转载 2022-08-30 14:28:45 · 1704 阅读 · 0 评论 -
关于Ribbon重试机制的坑
通过上面的分析,我们可以知道并不是配置了ribbon.OkToRetryOnAllOperations=false就不会进行重试,对于GET请求Ribbon还是会进行重试的,而在我们的系统中并没有对Ribbon的重试机制做特殊的配置,也就是用的默认值。初步猜测可能是Feign或Ribbon的重试机制导致的。像在一般的系统中,建议关闭Ribbon的重试机制,如果非得开启重试,那么系统的各个接口一定要保证接口的幂等性,否则可能会导致接口逻辑被执行多次的情况,在一些重要数据的场景带来的影响将是灾难性的。...转载 2022-08-30 14:02:39 · 1383 阅读 · 0 评论 -
Ribbon的超时和重试机制
ribbon实现了负载均衡,如果访问某服务的A节点超时后,会触发ribbon的重试机制Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。...转载 2022-08-30 14:01:12 · 1468 阅读 · 0 评论 -
【你好Ribbon】十三:Ribbon负载均衡器接口ILoadBalancer-最基础的负载均衡器BaseLoadBalancer
这个负载均衡器在实际的开发过程中 使用的不是很多 但是作为理解ILoadBalancer 是必不可少的,它提供了最最基础的负载均衡能力,所以你直接使用是没有任何问题的,在有些时候其实直接使用它也是比较好的选择。前面我们对Ribbon负载均衡模块的五大组件进行了简单的概述,但大部分情况这五个组件相互配合工作才能实现负载均衡的能力,而今天我们说的ILoadBalancer说白了就是对这些组件组合的一个容器。小Tips: 注意默认的ping的策略是 线性的Ping这对于具有很多服务器的系统不是一个很好的选择。..转载 2022-08-30 13:51:16 · 624 阅读 · 0 评论 -
spring中 allowBeanDefinitionOverriding(spring.main.allow-bean-definition-overriding) 分析
设置为true时,后定义的bean会覆盖之前定义的相同名称的bean。原因就是上面贴出来的是spring的代码,而springboot对这个参数又进行了二次封装,springboot中的allowBeanDefinitionOverriding是没有初始化默认值的,我们知道,java中的boolean类型不初始化时是false。因为还是推荐一个系统中不要存在名称相同的bean,否则后者覆盖前者,多人分工合作的时候,难以避免某些bean被覆盖,会出现很多诡异的问题 ,甚至会带来线上真实的业务损失。...转载 2022-08-29 19:37:04 · 7659 阅读 · 0 评论 -
EUREKA 安全验证 CANNOT EXECUTE REQUEST ON ANY KNOWN SERVER 错误问题
言归正传,首先我们先准备两个服务,一个 eureka 服务端、一个eureka 客户端 方便验证。好久没写博客了,哈哈。搞了三台服务器慢慢玩。然后我们打开eureka 的效果如下。可以看到已经成功注册上去了。pom.xml 引用。pom.xml 引用。...转载 2022-08-29 14:40:49 · 358 阅读 · 0 评论 -
Spring Boot学习笔记(六):Spring Boot 应用监控
Spring Boot 2.0提供的常用端点如下所示。序号端点名描述默认开启(Web)默认开启(JMX)1actuator所有端点的列表,需加入spring HATEOAS支持是是2显示应用暴露的审计事件 (比如认证进入、订单失败)是否3info显示应用的基本信息是是4health显示应用的健康状态是是5metrics显示应用多样的度量信息否是6loggers显示和修改配置的loggers否是7logfile。...转载 2022-08-28 14:45:55 · 512 阅读 · 0 评论 -
springCloud Euraka知识讲解、问题解决方案、优化方案
定时清理任务每eviction-interval-timer-in-ms(默认60)执行一次清理任务,每次清理任务会把90秒(3个心跳周期,eureka.instance.lease-expiration-duration-in-seconds)没收到心跳的踢除,但是根据官方的说法 ,因为代码实现的bug,这个时间其实是两倍,即180秒,也就是说如果一个客户端因为网络问题或者主机问题异常下线,可能会在180秒后才剔除。原因,在默认设置下,eureka服务注册中心会将自己作为客户端来尝试注册自己。...转载 2022-08-26 15:45:09 · 926 阅读 · 0 评论 -
Spring Cloud :Eureka生产环境优化
由于服务数本来就只有10个,如果因为3个断了,如果开启了自我保护机制,大量请求可能就会访问坏的三个服务,这样肯定是不行的,所以要关闭,相当于断了,就要将其剔除;虽然关闭了自我保护机制,也会有剔除服务时间间隔,来保障服务重连的情况,可以将eviction-interval-timer-in-ms参数设置短一点,以免让客户端放问断开的服务,该参数默认是60s,相当于快速下线。服务数比较大,断了3个也问题不大,所以建议开启保护机制,如果3个失去心跳的服务是由于网络抖动导致的,开启之后还给了他们复活重连的机会。..转载 2022-08-26 15:33:21 · 542 阅读 · 0 评论 -
SpringCloud 配置${spring.cloud.client.ipAddress}
首先想到版本问题,一顿百度果然,springboot2.x后改为${spring.cloud.client.ip-address}源码中 ${spring.cloud.client.ip-address}这个类是在spring-cloud-commons项目中。配置${spring.cloud.client.ipAddress}配置注册到Eureka的相同服务的多个实例,使用ip注册。如果还不行则在pom中加入。转载 2022-08-24 10:18:46 · 1740 阅读 · 0 评论 -
Sentinel限流原理(基于Sentinel1.8.1),限流、熔断、热点参数限流、授权实现原理
如果当前断路器状态是State.OPEN打开,那么会判断当前断路器从打开时到目前为止是否超过了配置的熔断时间,如果超过了熔断时长,那么会通过CAS将断路器状态从State.OPEN打开变为State.HALF_OPEN半打开,让请求通过,即常说在断路器半打开的状态下通过部分请求,但是这里会判断如果这次请求最终还是抛出异常,那么还是会通过CAS将断路器状态State.HALF_OPEN变为State.OPEN,返回本次请求通过,其他情况下,返回本次请求不通过。而当我们使用热点限流的规则时,...转载 2022-07-20 15:22:00 · 922 阅读 · 0 评论 -
Sentinel(五)整合Nacos实现动态规则配置持久化、双向同步
对于上述修改的代码,源码下载地址https//download.youkuaiyun.com/download/zhuocailing3390/83337923,将下载的Controller和Nacos配置代码直接拷贝到源码中即可使用。默认情况下Sentinel配置的规则是储存的内存中,在重新Sentinel服务后,配置会显示,我们通过整合第三方中间件实现,配置的持久化,比如使用Nacos;"strategy"0,//流控模式,0表示直接,1表示关联,2表示链路;...转载 2022-07-20 15:18:55 · 2848 阅读 · 1 评论 -
Sentinel热点参数规则说明
当经常访问的数据过热时,可以对其访问进行限流。例如针对一段时间内的特定的用户、城市等进行限制。paramIdx必填项,热点参数索引位置对应SphU.entry(xxx,args)中的参数索引位置。注意exit的时候也一定要带上对应的参数(exit(count,args)),否则可能会有统计错误。热点参数限流由规则ParamFlowRule负责,下面看下各个属性的含义。paramFlowItemList额外选项,针对特定的参数单独限流。count必填项,限流阈值。...翻译 2022-07-20 13:45:29 · 1192 阅读 · 0 评论 -
Media Type 媒体类型(MIME Type、Content Type)
媒体类型用于声明随之而来的数据的格式。又称:MIME类型、MIME Type、Content Type。 是一种用于在异构系统、分布式网络之间声明并传递信息主体格式的方法。一般的,在文件系统中,我们会使用扩展名来表示文件类型,例如: 表示可执行文件、表示纯文本文件、表示png编码的图片、表示mp4视频。这种方法,在独立系统中运行的很好。但在网络传输中并不是一个好的方法。首先扩展名并不权威,不同系统之间是有歧义的。其次扩展名的惯例是采用缩写的方式,不能准确表意。为了便于在网络中准确传递内容类型,多方组织制定出转载 2022-07-08 16:26:15 · 4358 阅读 · 0 评论 -
Feign源码阅读(二)FeignClient动态代理
一、前言 通过@FeignClient修饰的接口要能够被使用,原因是注册到Spring容器中时是个动态代理。这一章主要学习Feign动态代理创建流程,并且自己实现一个类似的流程。二、注册FeignClientFactoryBean@EnableFeignClients @EnableFeignClients还是利用了Spring的Import注解+ImportBeanDefinitionRegistrar接口,注册Bean到Spring容器中。@Target(ElementType转载 2021-06-16 17:46:40 · 873 阅读 · 0 评论 -
Spring Cloud FeignClient 代理方式探究
背景每次跟人讲起 feignClient 的大致原理,我都是含糊其词:程序启动时,Spring 会为每个加了@FeignClient(name=”provider”)注解的接口生成一个代理 bean, 名称为注解的 name 属性(本例为provider),方法就为接口的方法列表。等你执行接口某个方法的时候,代理的方法就会帮你做请求和响应的参数拼接以及 HTTP 请求直到最近被一个同事打破砂锅问到底,我反倒一脸懵逼。虽然上面那套说辞大体上能自圆其说,但是真相还是需要亲身去探索。程...转载 2021-06-16 17:43:24 · 661 阅读 · 0 评论 -
关与 @EnableConfigurationProperties 注解
先说作用:@EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效。说明:如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是获取不到properties 配置文件转化的bean。说白了 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。测转载 2021-05-21 10:43:21 · 168 阅读 · 0 评论 -
spring webflux文件上传下载
序本文主要讲述一下spring webflux的文件上传和下载。maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>文件上传@Pos转载 2020-09-25 15:30:29 · 1294 阅读 · 0 评论 -
WebFlux切换Web容器Tomcat、undertow、jetty、netty
没有比较就没有伤害!Web 容器我们用的最多的还是 Tomcat,但是 Tomcat 的性能现在比起其他容器来说有点劣势!很多人可能更喜欢 Jetty 或者 netty,那么这么多 Web 容器,我们在使用 WebFlux 的时候该如何切换呢?一起来看本文的教程吧!Spring WebFlux支持Netty,Undertow,Tomcat,Jetty和Servlet 3.1+容器。他们都适用于一个通用的Reactive Streams API。Spring WebFlux编程模型基于该通用API。S转载 2020-09-25 14:48:38 · 3673 阅读 · 0 评论 -
Spring-Cloud-Gateway简介与配置(使用属性文件)
官方简介该项目提供了一个建立在Spring Ecosystem之上的API网关,包括:Spring 5,Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的方式来对API进行路由,并为他们提供切面,例如:安全性,监控/指标 和弹性等。官方工作原理介绍客户端向spring-cloud-gateway请求网关映射处理程序(gateway handler mapping),如果确认请求与路由匹配,则将请求发送到web处理程序(转载 2020-09-14 16:08:29 · 640 阅读 · 1 评论 -
Spring cloud gateway 详解和配置使用(文章较长)
Spring cloud gateway 处理跨域问题 Spring cloud gateway 拦截请求404 等HTTP 状态码 Spring cloud gateway 修改response 截断问题,乱码问题解决 Spring cloud gateway 设置https 和http同时支持 Spring cloud Gateway 指定执行过滤器 (在...转载 2020-09-14 14:36:17 · 1022 阅读 · 0 评论 -
Nacos CP/AP模式切换及微服务临时/永久实例配置
Nacos 集群默认支持的是CAP原则中的AP原则,但是也可切换为CP原则,切换命令如下:curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'同时微服务的bootstrap.properties 需配置如下选项指明注册为临时/永久实例AP模式不支持数据一致性,所以只支持服务注册的临时实例,CP模式支持服务注册的永久实例,满足配置文件的一致性#false为永久转载 2020-08-10 15:05:49 · 1833 阅读 · 0 评论 -
什么是Nacos?Nacos注册配置中心介绍
一、什么是Nacos英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民二、Nacos原理nacos简单介绍Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client.转载 2020-08-10 14:39:46 · 1257 阅读 · 0 评论 -
Nacos 集群部署
阅读目录准备数据库 准备nacos 观察集群 Nacos + Docker 集群 通过Nginx配置真正的集群 其他注意事项关于nacos 集群部署,网上的示例往往不全或不可用,而官方的教程太简单了。官方也提供了一个 docker + nacos 的伪集群的 部署示例。但毕竟是 伪, 不能实际生产使用。全网就几乎就没有一个 完整的教程???!!!怎么办呢? 自己动手吧。准备数据库数据库用了 mysql, 其实nacos 也是支持mysql 主从集群的,不过...转载 2020-08-06 10:28:14 · 528 阅读 · 0 评论 -
SpringCloud 2.x学习笔记:21、Nacos集群模式部署
1、Nacos集群模式部署官方参考文档https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html1.1 编辑集群配置文件分别在三个节点上编辑集群配置文件[root@elastic3 conf]# vi cluster.conf[root@elastic3 conf]# cat cluster.conf# ip:port10.xx.xx.xx1:884810.xx.xx.xx2:884810.xx.xx.xx3:8848转载 2020-08-05 20:33:02 · 468 阅读 · 0 评论 -
Nacos 系统参数介绍
Nacos Server对于Server端来说,一般是设置在{nacos.home}/conf/application.properties里,如果参数名后标注了(-D)的,则表示是 JVM 的参数,需要在{nacos.home}/bin/startup.sh里进行相应的设置。例如像设置 nacos.home 的值,可以在{nacos.home}/bin/startup.sh进行如下设置:JAVA_OPT="${JAVA_OPT} -Dnacos.home=${BASE_DIR}"全局参数转载 2020-08-05 17:46:02 · 1788 阅读 · 0 评论 -
Spring Cloud Alibaba | Nacos集群部署
[TOC]1. Nacos支持三种部署模式单机模式 - 用于测试和单机试用。 集群模式 - 用于生产环境,确保高可用。 多集群模式 - 用于多数据中心场景。以上是官方提供的三种部署方式:单机模式对于企业来讲,仅可用于测试环境或者开发环境,不可用于生产环境;对于中小型企业来讲,生产环境选择集群模式已经足够,无需选择多集群模式,除非是做机房灾备,可以在两个机房部署两个集群。单机模式的部署方式在前面的文章中已经介绍过,在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不..转载 2020-08-05 16:50:43 · 251 阅读 · 0 评论 -
Windows服务器环境下搭建Nacos集群
一、搭建环境如下:JDK1.8+MySQL8.0+Nacos二、资料下载JDK1.8下载及安装教程NacosMySQL8下载及安装教程三、搭建Nacos集群(Windows服务器环境)1、解压下载的Nacos,进入nacos下的conf目录下将cluster.conf.example重命名为cluster.conf,然后打开该文件添加以下内容。#2020-07-24T08:59:44.06910.177.*.*:884810.177.*.*:884910.177.*.*:88转载 2020-08-05 15:14:23 · 667 阅读 · 1 评论 -
Nacos Discovery Example
项目说明本项目演示如何使用 Nacos Discovery Starter 完成 Spring Cloud 应用的服务注册与发现。Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。示例如何接入在启动示例进行演示之前,我们先了解一下 Spring Cloud 应用如何接入 Nacos Discovery。注意 本章节只是为了便于您理解接入方式,本示例代码中已经完成接入工作,您无需再进行修改。 首先,修改 pom.xml 文件,引入 Naco..转载 2020-08-05 15:11:51 · 252 阅读 · 0 评论 -
Nacos Discovery教程
Spring Cloud Alibaba Nacos Discovery该项目通过自动配置以及其他 Spring 编程模型的习惯用法为 Spring Boot 应用程序在服务注册与发现方面提供和 Nacos 的无缝集成。 通过一些简单的注解,您可以快速来注册一个服务,并使用经过双十一考验的 Nacos 组件来作为大规模分布式系统的服务注册中心。服务注册发现: Nacos Discovery Starter服务发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有转载 2020-08-05 15:09:15 · 6758 阅读 · 1 评论 -
Nacos篇五 - Nacos集群(Linux下standalone模式和cluster模式)
Nacos支持三种部署模式单机模式 - 用于测试和单机试用。 集群模式 - 用于生产环境,确保高可用。 多集群模式 - 用于多数据中心场景。注:本文已Linux CentOS7系统为讲述如何部署单机模式(standalone)和集群模式(cluster);(虚拟机使用VMware)老规矩环境准备请确保是在环境中安装使用:64 bit OS Linux/Unix/Mac,推荐使用Linux系统。 64 bit JDK 1.8+;下载.配置。 Maven 3.2.x+;下载.配置。转载 2020-08-05 14:59:59 · 1646 阅读 · 0 评论 -
Nacos参数配置详解
Nacos客户端版本 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.0.RELEASE</version> </dependency> .转载 2020-08-05 14:22:42 · 3071 阅读 · 0 评论 -
Nacos 权限控制介绍及实战
方案背景Nacos自开源依赖,权限控制一直需求比较强烈,这也反应了用户需求将Nacos部署到生产环境的需求。最新发布的Nacos 1.2.0版本已经支持了服务发现和配置管理的权限控制,保障用户安全上生产。本文主要介绍Nacos权限控制的设计方案和使用指南。什么是权限控制?在分布式服务调用时,需要对未知的或者不受信任的请求来源的请求进行识别和拒绝。权限控制一般分为两个阶段:身份识别(Authentication)和权限识别(Authorization)。身份认证主要确定访问者的身份,权限识别则判断转载 2020-08-05 13:56:36 · 679 阅读 · 0 评论 -
Nacos Config教程(二)
Spring Cloud Alibaba Nacos ConfigNacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的转载 2020-08-04 14:38:18 · 830 阅读 · 0 评论 -
Nacos Config教程
项目说明本项目演示如何使用 Nacos Config Starter 完成 Spring Cloud 应用的配置管理。Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。示例如何接入在启动示例进行演示之前,我们先了解一下 Spring Cloud 应用如何接入 Nacos Config。注意 本章节只是为了便于您理解接入方式,本示例代码中已经完成接入工作,您无需再进行修改。 首先,修改 pom.xml 文件,引入 Nacos Config ..转载 2020-08-04 14:36:36 · 938 阅读 · 0 评论 -
Nacos配置中心
本文介绍spring cloud 集成 nacos案例官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html](https://nacos.io/zh-cn/docs/what-is-nacos.html单机部署:1.git克隆项目git clone https://github.com/alibaba/nacos.git2.进入根目录cd nacos/3.maven编译mvn -Prelease-nacos clean install -U转载 2020-08-04 13:59:11 · 174 阅读 · 0 评论