spring cloud
文章平均质量分 77
xiegwei
这个作者很懒,什么都没留下…
展开
-
SpringCloud 升级到2020记录
升级springbootspringboot升级到2.4.1以上<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.3</version> <type>pom</type>&原创 2021-03-02 11:06:10 · 2365 阅读 · 0 评论 -
SpringCloud Config(配置中心) 配置服务自动刷新
概述配置中心负责统一保存微服务的配置文件(yml或properties文件),配置文件一般是从git库(或其它后端)中拉取。微服务启动时,会从配置中心拉取配置文件。如果配置中心有对应的配置文件,则会覆盖服务本地的配置文件中对应的属性。当git库有新的提交时,通过webhook通知配置中心。webhook会带上修改的内容,配置中心找到此次修改的配置文件,通过Spring Cloud Bus通知对应的服务刷新配置。架构Config Server端配置依赖<!-- config-serve原创 2021-02-07 14:01:00 · 2671 阅读 · 0 评论 -
Spring Cloud Sleuth + zipkin + kafka
2.2.5.RELEASE1 说明Spring Cloud Sleuth 是Spring Cloud的分布式链路追踪实现。1.1 术语Spring Cloud Sleuth采用的是Google的开源项目Dapper的专业术语。Span:基本工作单元。比如发送一个远程调度任务 就会产生一个Span,Span是一个64位ID唯一标识的,是用另一个64位ID唯一标识的Trace的一部分。Span还有其他数据信息,比如摘要、时间戳事件、键值对注解、 Span的ID、以及进度ID(通常是ip)。当你开始一原创 2021-01-05 21:02:27 · 672 阅读 · 0 评论 -
spring cloud 集成 quartz (注解方式)
相比于scheduler,quartz支持分布式、持久化。当你部署多个实例时,定时任务会在多个实例上调度执行,提升了处理能力,同时多个实例也不会重复执行同一任务。而且也保证了服务的可靠性和高可用。依赖 implementation("org.springframework.boot:spring-boot-starter-quartz")现在我都用gradle进行依赖管理,比maven简洁和智能。gradle后台使用的也是maven源。配置application.ymlspring:原创 2020-12-29 11:42:19 · 1200 阅读 · 0 评论 -
spring cloud resilience4j - RateLimiter 流量控制
概述resilience4j-ratelimiter 可以用来控制指定时间内的请求数量,从而保证服务的可靠性。比如,我们调用的第三方接口(如百度api,face++)通常会有流量的限制,此时,我们可以通过resilience4j控制流量。当流量超过限制时,可以直接抛弃,也可以放入等待队列中。RateLimiter的默认实现是AtomicRateLimiter,通过AtomicReference来管理状态, AtomicRateLimiter.State是不可修改的,它有如下属性:activeCy原创 2020-12-23 16:46:54 · 2871 阅读 · 0 评论 -
spring cloud resilience4j-retry 重试
参数说明属性默认值说明maxAttempts3最大重试次数waitDuration500[ms]固定的重试间隔intervalFunctionnumOfAttempts -> waitDuration计算重试等待时间的函数,默认为固定值retryOnResultPredicateresult -> false配置某个结果是否要重试retryOnExceptionPredicatethrowable -> true配置某个异原创 2020-12-21 00:57:01 · 1094 阅读 · 0 评论 -
spring cloud resilience4j - Bulkhead 线程隔离 并发控制
https://resilience4j.readme.io/docs/bulkhead原创 2020-12-18 15:44:28 · 1882 阅读 · 0 评论 -
spring cloud Resilience4j - 熔断器 CircuitBreaker
https://blog.51cto.com/janephp/2446369https://resilience4j.readme.io/docs/feign原创 2020-12-16 18:43:16 · 1440 阅读 · 0 评论 -
使用kotlin编写spring cloud微服务
创建工程使用idea的spring initializr创建一个项目,语言选择kotlin, 类型为gradle。根据需要选择依赖配置文件yml或者properties文件和java是完全一样的,这里不详细说明修改build.gradle.kts中的参数:plugins { //spring boot版本 id("org.springframework.boot") version "2.3.3.RELEASE" //自动依赖包版本管理 id("io.spring.dependenc原创 2020-11-26 18:24:24 · 1556 阅读 · 0 评论 -
Spring Cloud Stream 3.0 单元测试
一般的大家可能认为mq不好做单元测试,但其实官方对此有很好的支持,写起来非常方便。添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream</artifactId> <version>${spring.cloud.stream.version}</version>原创 2020-11-11 11:00:50 · 623 阅读 · 0 评论 -
spring cloud stream 3.0 -- 生产者消费者例子
创建项目使用 Spring Initializr创建一个新project,并选择上依赖“Cloud Stream"。选择rabbitmq作为broker。编写代码@SpringBootApplicationpublic class LoggingConsumerApplication { public static void main(String[] args) { SpringApplication.run(LoggingConsumerApplication.class, args)原创 2020-11-09 17:10:43 · 4825 阅读 · 7 评论 -
spring cloud gateway 跨域配置
我们可以通过配置网关来控制CORS行为,全局CORS配置是 Spring Framework CorsConfiguration模式的URL MAP。spring: cloud: gateway: globalcors: cors-configurations: '[/**]': allowedOrigins: "https://docs.spring.io" allowedHeaders: "*"原创 2020-10-14 13:47:14 · 2586 阅读 · 0 评论 -
@RefreshScope与@ConfigurationProperties对比
RefreshScope@RefreshScope(org.springframework.cloud.context.scope.refresh)是spring cloud提供的一种特殊的scope实现,用来实现配置、实例热加载。@RefreshScope 实现流程需要动态刷新的类标注@RefreshScope 注解@RefreshScope 注解标注了@Scope 注解,并默认了ScopedProxyMode.TARGET_CLASS; 属性,此属性的功能就是在创建一个代理,在每次调用的时原创 2020-09-12 16:23:50 · 5277 阅读 · 0 评论 -
Spring Cloud Bus 使用说明
https://cloud.spring.io/spring-cloud-bus/2.2.x/reference/html/https://www.springcloud.cc/spring-cloud-bus.html原创 2020-09-09 17:03:04 · 1615 阅读 · 1 评论 -
Spring Cloud Config 配置中心使用说明(8) -- 客户端
一个Spring Boot应用程序可以立即使用Spring Config Server(或应用程序开发人员提供的其他外部属性源),并且还将获取与Environment更改事件相关的一些其他有用功能。1 配置固定服务器地址这是使用了Spring Cloud Config Client的任何应用程序的默认行为:当配置客户端启动时,它将通过配置服务器(通过引导配置属性spring.cloud.config.uri)绑定并使用远程属性源初始化Spring Environment。所有想要使用配置服务器的客户端原创 2020-09-06 12:19:16 · 1143 阅读 · 0 评论 -
Spring Cloud Config 配置中心使用说明(7) -- 服务器 配置变更通知
1 嵌入式配置服务器https://www.springcloud.cc/spring-cloud-config.html#_embedding_the_config_serverhttps://docs.spring.io/spring-cloud-config/docs/2.2.4.RELEASE/reference/html/原创 2020-09-06 10:08:30 · 621 阅读 · 0 评论 -
Spring Cloud Config 配置中心使用说明(6) -- 服务器 配置文件格式
1. 更多配置文件的格式原创 2020-09-06 00:34:50 · 448 阅读 · 0 评论 -
Spring Cloud Config 配置中心使用说明(5) -- 服务器健康与安全配置
1. 健康指示https://www.springcloud.cc/spring-cloud-config.html#_embedding_the_config_serverhttps://docs.spring.io/spring-cloud-config/docs/2.2.4.RELEASE/reference/html/原创 2020-09-05 16:48:18 · 572 阅读 · 0 评论 -
java异常处理类设计
定义时区分 unchecked / checked 异常,避免直接抛出 new RuntimeException(),更不允许抛出 Exception 或者 Throwable,应使用有业务含义的自定义异常。捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。下面是要返回给用户的uncheck异常类图:BusinessException用于4xx的业务异常, ThirdPartyServic原创 2020-09-01 18:12:08 · 517 阅读 · 0 评论 -
Spring Cloud Config 配置中心使用说明(4) -- 服务器+数据库存储
1. JDBC后端配置服务器支持使用JDBC(关系数据库)后端来存储属性配置。要启用这个特性,添加spring-jdbc依赖,然后使用jdbc profile或添加JdbcEnvironmentRepository实例bean。如果你添加了正确的依赖,Spring Boot会配置一个数据源。你可以通过设置pring.cloud.config.server.jdbc.enabled为false 来 禁止JdbcEnvironmentRepository的自动配置。数据数据库需要创建一个表PROPERTI原创 2020-09-01 00:24:49 · 523 阅读 · 0 评论 -
Spring Cloud Config 配置中心使用说明(3) -- 服务器+文件存储
1. 版本控制仓库使用的目录使用基于VCS的后端(git,svn),文件会被检出或克隆到本地文件系统。默认情况下,它们放在系统临时目录中,前缀为config-repo-。例如在linux上,是/tmp/config-repo-。一些操作系统会定期清除临时目录。这可能会导致意外的行为,例如缺少属性。为避免此问题,请通过spring.cloud.config.server.git.basedir或spring.cloud.config.server.svn.basedir来更改Config Server所使用原创 2020-08-30 21:48:33 · 689 阅读 · 0 评论 -
Spring Cloud Config 配置中心使用说明(2) -- 服务器+git库
spring cloud config 服务器提供了基于HTTP 的外部配置(名称值对或等效的YAML内容)资源API 。服务器可以使用@EnableConfigServer注释轻松嵌入到Spring Boot应用程序中。所以下面这个应用程序是一个配置服务器:ConfigServer.java@SpringBootApplication@EnableConfigServerpublic class ConfigServer { public static void main(String[] a原创 2020-08-30 16:26:31 · 1581 阅读 · 0 评论 -
Spring Cloud Config 使用说明(1) -- 快速开始
2.2.4.RELEASESpring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring 的Environment和PropertySource的抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时运行需要的一切。服务器存储原创 2020-08-19 22:12:33 · 263 阅读 · 0 评论 -
Spring Cloud Gateway使用说明(8)-- 开发指导
16. 问题定位本节覆盖Spring Cloud Gateway开发过程中可能会遇到的问题。16.1. 日志级别把下面的包日志级别设置为DEBUG或TARCE可能会看到更多的参数信息:org.springframework.cloud.gatewayorg.springframework.http.server.reactiveorg.springframework.web.reactiveorg.springframework.boot.autoconfigure.webreactor.原创 2020-08-16 23:09:30 · 1411 阅读 · 0 评论 -
Spring Cloud Gateway使用说明(7)-- actuator
15. Actuator API/gateway的actuator端点允许监视Spring Cloud Gateway应用程序并与之交互。要进行远程访问,必须在应用程序属性中暴露HTTP或JMX 端口。Example 72. application.propertiesmanagement.endpoint.gateway.enabled=true # default valuemanagement.endpoints.web.exposure.include=gateway15.1. 获取详细原创 2020-08-16 16:04:46 · 9071 阅读 · 0 评论 -
Spring Cloud Gateway使用说明(6)-- 其它配置
10 配置原创 2020-08-16 14:54:05 · 2847 阅读 · 0 评论 -
spring cloud + jenkins + jacoco代码覆盖率报告
1. 添加maven依赖 <!-- 单元测试覆盖率--> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.5</version> <executions>原创 2020-08-15 18:18:52 · 819 阅读 · 0 评论 -
spring cloud + jenkins 运行单元测试并生成报告
1. 添加maven插件<!-- 单元测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> </plugin>2. 在pom.xml中添加多环境配置我原创 2020-08-15 18:00:47 · 1027 阅读 · 0 评论 -
Spring Cloud Gateway 使用说明(5)-- TLS 和 SSL
9. TLS 和 SSL网关可以通过常规的 Spring server configuration 来侦听HTTPS上的请求。例子:Example 61. application.ymlserver: ssl: enabled: true key-alias: scg key-store-password: scg1234 key-store: classpath:scg-keystore.p12 key-store-type: PKCS12网关路由可以原创 2020-08-14 17:23:04 · 3008 阅读 · 0 评论 -
Spring Cloud Gateway 使用说明(4)-- HttpHeader Filters
8. HttpHeader Filters在请求分发到下游前,会经过HttpHeadersFilters 处理,比如NettyRoutingFilter。8.1 Forwarded Headers Filter先介绍一下Forwarded header:Forwarded 首部中包含了代理服务器的客户端的信息,即由于代理服务器在请求路径中的介入而被修改或丢失的信息。语法Forwarded: by=; for=; host=; proto=<http|https>< i原创 2020-08-03 18:35:01 · 2955 阅读 · 0 评论 -
k8s部署spring cloud eureka集群
1. 系统环境java JDK 11docker 19.03.9k8s 1.182. eureka架构图3. eureka配置application.ymleureka: instance: prefer-ip-address: false # 我们使用的是hostname注册,要设置为false,否则注册不成功 client: register-with-eureka: true #相互注册 fetch-registry: true service原创 2020-08-01 17:30:52 · 4417 阅读 · 11 评论 -
spring cloud + docker + k8s + k8s注册中心 部署微服务集群
1. 添加docker插件在pom.xml中添加如下配置: <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${dockerfile-maven-version}</version&原创 2020-07-30 15:23:38 · 1481 阅读 · 0 评论 -
Spring Cloud Gateway使用说明(3)-- Global filter
GlobalFilter接口与GatewayFilter具有相同的签名。是有条件地应用于所有路由的特殊过滤器。(此接口和用法可能在将来的里程碑版本中发生更改)。7.1 filter顺序当请求进入(并与路由匹配)时,筛选Web Handler 会将GlobalFilter的所有实例和所有的GatewayFilter路由特定实例添加到 filter chain。filter组合的排序由org.springframework.core.Ordered接口决定,可以通过实现getOrde()方法或使用@Orde翻译 2020-07-30 00:24:23 · 1423 阅读 · 0 评论 -
Spring Cloud Gateway 使用说明(2)-- 路由filter (下)
6.15 删除请求参数RemoveRequestParameter 可以删除指定名称的请求参数:Example 40. application.ymlspring: cloud: gateway: routes: - id: removerequestparameter_route uri: https://example.org filters: - RemoveRequestParameter=red.翻译 2020-07-29 17:20:49 · 1750 阅读 · 0 评论 -
spring cloud gateway 令牌桶算法(Token Bucket Algorithm)
spring cloud gateway 的 RequestRateLimiter 使用令牌桶算法来控制请求速率。令牌流与令牌桶系统会以一定的速度生成令牌,并将其放置到令牌桶中,可以将令牌桶想象成一个缓冲区(可以用队列这种数据结构来实现),当缓冲区填满的时候,新生成的令牌会被扔掉。 这里有两个变量很重要:第一个是生成令牌的速度,一般称为 rate 。比如,我们设定 rate = 2 ,即每秒钟生成 2 个令牌,也就是每 1/2 秒生成一个令牌; 第二个是令牌桶的大小,一般称为 burst 。.原创 2020-07-26 16:26:26 · 1288 阅读 · 0 评论 -
Spring Cloud Gateway使用说明(2)-- 路由filter(上)
6. 路由filter过滤器允许以某种方式修改传入的HTTP请求或返回的HTTP响应。过滤器的作用域是某些特定路由。Spring Cloud Gateway包括许多内置的 Filter工厂。 有关如何使用以下任何过滤器的更详细示例,请查看 unit tests. 6.1 AddRequestHeader GatewayFilter采用一对名称和值作为参数Example 13. application.ymlspring: cloud: gateway: ..翻译 2020-07-25 18:02:12 · 2763 阅读 · 0 评论 -
Spring 定时任务@Scheduled用法
基本用法@Scheduled 由Spring定义,用于将方法设置为调度任务。如:方法每隔十秒钟被执行、方法在固定时间点被执行等 1. @Scheduled(fixedDelay = 1000) 上一个任务结束到下一个任务开始的时间间隔为固定的1秒,任务的执行总是要先等到上一个任务的执行结束 2. @Scheduled(fixedRate = 1000) 每间隔1秒钟就会执行任务(如果任务执行的时间超过1秒,则下一个任务在上一个任务结束之后立即执行) 3...原创 2020-07-16 13:47:59 · 23770 阅读 · 0 评论 -
Spring Cloud Gateway使用说明(1)--路由
2.2.3.RELEASE本项目提供了一个建立在Spring Ecosystem之上的API网关,包括:Spring 5,Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的方式来对API进行路由,并提供 安全性、监控/指标 和弹性 相关的切面。1. 如何引用Spring Cloud Gateway要在项目中引入Spring Cloud Gateway,需要引用 group org.springframewor...翻译 2020-07-15 14:20:42 · 5224 阅读 · 1 评论 -
Spring Cloud Stream RabbitMQ 延迟消息实现
参考文档配置spring: cloud: stream: default: consumer: maxAttempts: 1 #默认为3次,禁用重试 bindings: delay-output: destination: delay.exchange #交换机 binder: windrabbit ..原创 2020-07-14 14:25:33 · 1663 阅读 · 0 评论