首页 > 其他分享 >Spring Cloud常用组件及其配置

Spring Cloud常用组件及其配置

时间:2024-12-18 15:31:40浏览次数:7  
标签:service 示例 Spring 配置 application spring 组件 yml Cloud

一、Eureka(服务注册与发现)

  1. Eureka Server配置

    • application.yml配置示例
      server:
        port: 8761
      eureka:
        instance:
          hostname: localhost
        client:
          register-with-eureka: false
          fetch-registry: false
      
    • 解释:
      • server.port:指定Eureka Server运行的端口,这里是8761。
      • eureka.instance.hostname:设置Eureka Server的主机名。
      • eureka.client.register-with-eureka:设置为false,表示Eureka Server自身不需要注册到Eureka服务中。
      • eureka.client.fetch-registry:设置为false,表示Eureka Server不需要从其他Eureka Server获取注册信息。
  2. Eureka Client配置(服务提供者)

    • application.yml配置示例
      spring:
        application:
          name: service-provider
      eureka:
        client:
          service-url:
            defaultZone: http://localhost:8761/eureka/
        instance:
          prefer-ip-address: true
      
    • 解释:
      • spring.application.name:定义服务名称,用于在Eureka中注册和识别。
      • eureka.client.service-url.defaultZone:指定Eureka Server的地址,服务提供者将自己的信息注册到这个地址对应的Eureka Server。
      • eureka.instance.prefer-ip-address:设置为true,使得服务实例在注册时优先使用IP地址而不是主机名。
  3. Eureka Client配置(服务消费者)

    • 配置和服务提供者类似,也是通过eureka.client.service-url.defaultZone指定Eureka Server地址来发现服务。例如:
    • application.yml配置示例
      spring:
        application:
          name: service-consumer
      eureka:
        client:
          service-url:
            defaultZone: http://localhost:8761/eureka/
      

二、Ribbon(客户端负载均衡)

  1. 基本配置(在服务消费者中)
    • application.yml配置示例
      ribbon:
        ReadTimeout: 5000
        ConnectTimeout: 3000
      
    • 解释:
      • ribbon.ReadTimeout:设置读取数据的超时时间,单位是毫秒,这里是5000毫秒。
      • ribbon.ConnectTimeout:设置连接服务的超时时间,单位是毫秒,这里是3000毫秒。
  2. 自定义负载均衡策略配置
    • application.yml配置示例
      service-provider:
        ribbon:
          NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
      
    • 解释:
      • service-provider:是要应用负载均衡策略的服务名称。
      • ribbon.NFLoadBalancerRuleClassName:指定负载均衡规则类,这里是RandomRule,表示使用随机负载均衡策略。

三、Feign(声明式REST客户端)

  1. 启用Feign和基本配置
    • application.yml配置示例
      feign:
        client:
          config:
            default:
              connectTimeout: 5000
              readTimeout: 5000
      
    • 解释:
      • feign.client.config.default.connectTimeout:设置Feign客户端连接超时时间,单位是毫秒。
      • feign.client.config.default.readTimeout:设置Feign客户端读取超时时间,单位是毫秒。
  2. 自定义Feign拦截器配置
    • 创建一个拦截器类实现RequestInterceptor接口。
    • application.yml配置示例(添加拦截器)
      feign:
        client:
          config:
            default:
              requestInterceptors:
                - com.example.MyFeignInterceptor
      
    • 解释:
      • feign.client.config.default.requestInterceptors:配置一个或多个Feign拦截器,这里添加了自定义的MyFeignInterceptor,可以用于在请求发送前添加请求头、修改请求参数等操作。

四、Hystrix(断路器)

  1. 启用Hystrix和基本配置(在服务消费者中)
    • application.yml配置示例
      hystrix:
        command:
          default:
            execution:
              isolation:
                thread:
                  timeoutInMilliseconds: 5000
      
    • 解释:
      • hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:设置Hystrix命令的超时时间,单位是毫秒。如果服务调用超过这个时间,Hystrix会触发熔断机制。
  2. Hystrix Dashboard配置(用于监控)
    • application.yml配置示例(Hystrix Dashboard服务)
      server:
        port: 9001
      spring:
        application:
          name: hystrix-dashboard
      hystrix:
        dashboard:
          proxy-stream-allow-list: "localhost"
      
    • 解释:
      • server.port:指定Hystrix Dashboard服务运行的端口。
      • hystrix.dashboard.proxy-stream-allow-list:设置允许访问Hystrix监控数据的主机列表,这里只允许本地访问。

五、Zuul(API网关)

  1. 基本配置

    • application.yml配置示例
      server:
        port: 8080
      zuul:
        routes:
          service-provider:
            path: /provider/**
            service-id: service-provider
      
    • 解释:
      • server.port:指定Zuul网关服务运行的端口。
      • zuul.routes.service-provider.path:定义路由规则,所有以/provider/开头的请求都会被路由。
      • zuul.routes.service-provider.service-id:指定请求被路由到的服务名称,这里是service-provider
  2. Zuul过滤器配置(自定义过滤器)

    • 创建一个自定义过滤器类,继承自ZuulFilter
    • application.yml配置示例(添加过滤器)
      zuul:
        filters:
          my-custom-filter:
            pre:
              order: 1
              disable: false
      
    • 解释:
      • zuul.filters.my-custom-filter:定义一个自定义过滤器名称。
      • zuul.filters.my-custom-filter.pre.order:指定过滤器的执行顺序,数字越小越先执行。
      • zuul.filters.my-custom-filter.pre.disable:设置是否禁用该过滤器,false表示启用。
  3. Zuul的安全配置(例如添加认证)

    • 可以结合Spring Security等安全框架进行配置。假设使用JWT认证,在application.yml中配置:
    • application.yml配置示例
      zuul:
        sensitive-headers:
          - Cookie,Set-Cookie
      
    • 解释:
      • zuul.sensitive-headers:设置敏感头信息,这里过滤掉CookieSet-Cookie头,以增强安全性。可以在过滤器中添加JWT验证逻辑来确保请求的合法性。

六、Config(分布式配置中心)

  1. Config Server配置
    • application.yml配置示例
      server:
        port: 8888
      spring:
        cloud:
          config:
            server:
              git:
                uri: https://github.com/your-repo-name/your-config-repo.git
                search-paths: config-files-directory
      
    • 解释:
      • server.port:指定Config Server运行的端口。
      • spring.cloud.config.server.git.uri:配置配置文件所在的Git仓库地址。
      • spring.cloud.config.server.git.search-paths:在Git仓库中搜索配置文件的目录路径。
  2. Config Client配置(服务获取配置)
    • application.yml配置示例
      spring:
        cloud:
          config:
            uri: http://localhost:8888
            name: your-config-file-name
            profile: dev
      
    • 解释:
      • spring.cloud.config.uri:指定Config Server的地址,客户端从这里获取配置。
      • spring.cloud.config.name:配置文件名(不包括文件扩展名)。
      • spring.cloud.config.profile:配置文件的环境配置,如dev(开发环境)、prod(生产环境)等。

这只是Spring Cloud部分组件的一些典型配置,实际上还有很多其他可配置的选项和组件组合方式,并且配置会根据具体的业务场景和需求进行调整。以下是一些其他组件的简单提及:

七、Sleuth(分布式链路追踪)

  1. 基本配置
    • application.yml配置示例
      spring:
        sleuth:
          sampler:
            probability: 1.0
      
    • 解释:
      • spring.sleuth.sampler.probability:设置链路追踪的采样率,取值范围是0.0 - 1.0,这里设置为1.0表示对所有请求进行链路追踪。

八、Stream(消息驱动)

  1. 配置示例(以Kafka为例)
    • application.yml配置示例
      spring:
        cloud:
          stream:
            kafka:
              binder:
                brokers: localhost:9092
            bindings:
              my-input-channel:
                destination: my-kafka-topic
                content-type: application/json
      
    • 解释:
      • spring.cloud.stream.kafka.binder.brokers:指定Kafka服务器的地址。
      • spring.cloud.stream.bindings.my-input-channel.destination:定义消息通道对应的Kafka主题。
      • spring.cloud.stream.bindings.my-input-channel.content-type:设置消息的内容类型。

标签:service,示例,Spring,配置,application,spring,组件,yml,Cloud
From: https://www.cnblogs.com/java-note/p/18615063

相关文章

  • Spring Cloud 开发环境搭建
    一、环境准备Java环境SpringCloud是基于Java开发的框架,所以需要先安装Java开发工具包(JDK)。确保你的系统安装了JDK8或更高版本。你可以从Oracle官方网站(https://www.oracle.com/java/technologies/javase-downloads.html)或OpenJDK官方网站(https://openjdk.java.net/install......
  • springboot毕设商会会员管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着市场经济的不断发展,商会在商业领域的重要性日益凸显。商会会员数量逐渐增多,会员之间的交流、合作以及商会对会员的管理变得越发复杂。传统的......
  • springboot毕设收纳师管理系统论文+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在现代社会,随着人们生活节奏的加快和生活品质要求的提高,收纳需求日益增长。然而,忙碌的生活使得很多人无暇顾及个人和家庭的收纳事务,收纳师这一新......
  • springboot毕设图像数字知识产权保护系统论文+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化时代,图像作为一种重要的信息载体,其创作、传播和使用日益频繁。随着数字技术的飞速发展,图像的复制、篡改和盗用变得更加容易,这给图像......
  • Springboot家庭理财分析系统nxad6(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表家庭成员,支出信息,收入信息,股票信息,债权信息,资产信息,预警通知,公告信息,收入分类,支出分类,基金信息开题报告内容一、研究背景随着社会经济的发展和生活成......
  • Springboot家私导购系统5z229(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,家私类别,家私信息开题报告内容一、课题背景与意义随着互联网技术的飞速发展和电子商务的普及,消费者的购物习惯发生了显著变化。特别是在家居家具领域,消费......
  • Springboot家庭财务管理系统596n0(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表家庭成员,收入信息,支出信息,收入分类,支出分类,收入统计,支出统计,理财产品,产品购买,理财用户,家庭预算,财务健康开题报告内容一、研究背景与意义随着现代社......
  • 解决前端传给Spring Boot的中文数据乱码问题
    解决前端传给SpringBoot的中文数据乱码问题:1.前端设置编码:确保前端在发送请求时,请求头(RequestHeader)中的Content-Type指定正确的字符集,通常是application/json;charset=UTF-8或在表单提交时使用Accept-Charset:UTF-8。2.SpringBoot配置:或在XML配置中:<filter><......
  • 动画组件
    animation  ctrl+6打开动画面板 脚本控制 新版动画组件animator组件动画控制器   脚本控制 无退出时间可立刻执行动画切换 布尔切换后仍持续 脚本控制 过度会更自然  ......
  • 基于Springboot健身房管理系统【附源码+文档】
    ......