SpringCloud基础配置与一些注意事项(九)所有的配置

user-service的bootstrap.yml

spring:
  cloud:
    config:
      # git仓库中,存放的配置文件 比如 user-service.yml,name = user  ,profile = service
      name: user
      profile: service
      # 配置文件在git仓库的分支 ,这里使用的是master主分支,如果自建分支 如dev1 ,需要修改此处 master为dev1
      label: master
      discovery:
        enabled: true
        # 指定spring cloud config server端的application name
        service-id: config-server
  # 监听rabbitMQ ,实现动态从gitee或者github仓库获取配置文件(远程仓库中修改配置文件之后,需要手动访问 http://localhost:12000/bus-refresh)
  # localhost和12000是根据环境改变,bus-refresh不可改变,即使在config-server的配置中配置的bus-refresh也是不可变的
  rabbitmq:
    host: localhost
    username: guest
    password: guest
    port: 5672
eureka:
  client:
    service-url:
      # 注册到注册中心,指定eureka注册中心地址
      defaultZone: http://127.0.0.1:10001/eureka

user-service的application.yml

spring:
  application:
    name: user-service
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring_boot
    username: root
    password: root
server:
  port: ${port:8081}
mybatis:
  type-aliases-package: com.itheima.pojo
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10001/eureka
  instance:
    ip-address: 127.0.0.1
    prefer-ip-address: true
    # 服务断线  90秒 不发送心跳 视为服务断线 ,如果springcloud的自我保护机制没有关闭,则会根据自我保护机制条件 决定是否进入自我保护状态
    lease-expiration-duration-in-seconds: 90
    # 30秒发送心跳 renew 状态刷新  自我保护机制(过去15分钟的连接到该服务的连接成功比高于85%就进入自我保护,如果没有 就会被剔除,大概是的)
    lease-renewal-interval-in-seconds: 30
logging:
  level:
    com.itheima: debug

consumer-service的application.yml

spring:
  application:
    name: consumer-service
server:
    port: ${port:8091}



# 设置eureka中ribbon的模式 默认为轮询,此时设置成随机; eureka中继承的ribbon
# 如果使用了feign组件集成的ribbon负载均衡组件,此处的配置仍然会作用到ribbon配置中.
user-service:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
# 配置熔断策略: 事实上这些数值 最大就是设置为2000,设置再大,从浏览器反馈的时间来看也是2秒,半秒也是可以的
hystrix:
  command:
    default:
      circuitBreaker:
        errorThresholdPercentage: 50 # 触发熔断错误比例阈值,默认值50%
        sleepWindowInMilliseconds: 10000 # 熔断后休眠时长,默认值5秒
        requestVolumeThreshold: 10 # 熔断触发最小请求次数,默认值是20
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 2000 # 熔断超时设置,默认为1秒
eureka:
  client:
    # 默认30秒 到eureka服务端拉取一次 服务注册列表 缓存本地
    registry-fetch-interval-seconds: 30
    service-url:
      defaultZone: http://127.0.0.1:10001/eureka
# feign 内置的ribbon
ribbon:
  ReadTimeout: 2000 # 读取超时时长 作用在服务提供端的,如果提供端2秒内未给出响应,视为超时
  ConnectTimeout: 1000 # 建立链接的超时时长
  MaxAutoRetries: 0 # 当前服务器的重试次数
  MaxAutoRetriesNextServer: 0 # 重试多少次服务
  OkToRetryOnAllOperations: false # 是否对所有的请求方式都重试
feign:
  hystrix:
    enabled: true # 开启hystrix的熔断功能 默认关闭
  # 开启请求和响应的GZIP数据压缩 默认关闭  以下压缩的参数均为默认值
  compression:
    request:
      enabled: true # 请求压缩
      mime-types: text/html,application/xml,application/json  #请求压缩类型 默认值
      min-request-size: 2048   #触发压缩的大小 下限,当达到该压缩大小时,开始压缩  默认值
    response:
      enabled: true # 响应压缩
logging:
  level:
    com.itheima: debug

gateway-server的application.yml

server:
  port: 8100
spring:
  application:
    name: gateway-server
  cloud:
    gateway:
      globalcors:
        corsConfigurations:
          '[/**]':
            allowedOrigins:
            # 跨越规则,指定了下方可以跨域的浏览地址之后,该浏览地址通过ajax访问gateway,此处是8100,然后gateway在通过映射找到需要访问的服务
            - "*" # 不支持通配符方式,但是支持一个整的*号
            allowedMethods:
            - GET
      routes:
        # 路由id 可以随便写,但是需要见名知意
        - id: user-service
          # 映射的地址 此处是uri  不是url  请注意!!!
          # uri: http://127.0.0.1:8081
          uri: lb://user-service # 代理的服务地址,代表该uri将会由loadBalance负责负载均衡策略
          # 根据下面的断言  映射到上方的地址  如果匹配/user/**即可映射到http://127.0.0.1:8081/user/**
          predicates:
            # 匹配 /user/**
            # - Path=/user/**
            - Path=/user/**
          # 局部过滤器 ,配置在配置文件中,对访问地址端口后面的前缀做处理
          filters:
            # 添加请求路径的前缀 前缀路径 访问localhost:8100/8 --> localhost:8081/user/8
            - PrefixPath=/user
            # 去除前缀个数 1代表去除端口后一个前缀,2代表去除2个    访问localhost:8100/app/user/8 --> localhost:8081/user/8
            - StripPrefix=1 # 先添加/user 再删除/user 还是原来的,代表过滤器链可以成功执行
            - MyParam=name
      # 局部过滤器 配置在default-filters下,效果等同于 全局过滤器,但是真正意义上的全局过滤器不需要配置,并且实现的接口是 GlobalFilter
      # 而配置在spring.cloud.gateway.routes.- id.routes下和spring.cloud.gateway.default-filters下的过滤器都是实现GatewayFilterFactory接口,严格意义上都称为局部过滤器
        - id: consumer-service
          uri: lb://consumer-service
          predicates:
            - Path=/consumer/**
      default-filters:
        # springcloud内置的过滤器,还有一个AddRequestParameters 不知道怎么设置参数
        - AddRequestHeader=tokenReq,rinilaoniang # 在过滤器中往请求头中添加一个请求头 tokenReq
        - AddResponseHeader=token111,rinixianrenbanban # 在过滤器中往响应对象中添加一个响应头 token
        - AddRequestParameter=foo,bar #添加请求参数
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10001/eureka
  # 设置ip优先
  instance:
    prefer-ip-address: true
# gateway 内置的ribbon 和feign内置的ribbon一样的配置
#ribbon:
#  ReadTimeout: 2000 # 读取超时时长 作用在服务提供端的,如果提供端2秒内未给出响应,视为超时 ,也没有见到效果
#  ConnectTimeout: 1000 # 建立链接的超时时长
#  MaxAutoRetries: 0 # 当前服务器的重试次数
#  MaxAutoRetriesNextServer: 0 # 重试多少次服务
#  OkToRetryOnAllOperations: false # 是否对所有的请求方式都重试
#gateway内置的hystrix 默认熔断超时时长是1秒   不生效的 假的; 官网提供的也无效,应该需要实现Hystrix的接口
#hystrix:
#  command:
#    default:
#      excution:
#        isolation:
#          thread:
            # 没生效,即使线程睡5秒也没有见到效果
#            timeoutInMilliseconds: 1000

config-server的application.yml

server:
  port: 12000
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/gouyao/springcloud_study.git
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10001/eureka
management:
  endpoints:
    web:
      exposure:
        # 暴露触发消息总线的地址 此处不是随意设置的,必须是bus-refresh,另外还有bus-env service-registry 需要自行了解
        include: bus-refresh

eureka-server的application.yml

server:
  port: ${port:10001}
spring:
  application:
    name: eureka_server
eureka:
  client:
    service-url:
      defaultZone: ${defaultZone:http://127.0.0.1:10001/eureka} # 集群10001和10002 10001注册到10002 10002注册到10001
    # 仅有一个服务的时候需要设置 拉取(查询)注册信息 为false,
    fetch-registry: false
    # 注解到eureka服务上,设置为false 这样 在查询eureka服务的时候,就不会显示自身,设置为true的话即使只有一个eureka,也会显示自己,自己注册自己
    # 如果用于集群,上下两项参数需要设置为true,或者默认就是true,并且defaultZone 需要指向其余的所有的eureka服务
    register-with-eureka: false
  # 服务端检测到 服务注册列表中的服务心跳连接异常,默认60秒扫描一次,将超时未续约的注册列表清楚 (超时时间默认90s)
  server:
    eviction-interval-timer-in-ms: 3000
    # eureka服务端的自我保护功能,默认开启,能有效避免因为网络波动造成的服务未续约
    enable-self-preservation: true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值