浅谈springcloud常用依赖和配置

spring cloud常用依赖和配置整理

常用依赖

// pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.roit</groupId>
    <artifactId>config</artifactId>
    <version>1.0.0</version>

    <!-- 微服务的包   -->
    <packaging>pom</packaging>

    <!-- spring-boot 父工程   -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--    spring-cloud  依赖 https://spring.io/projects/spring-cloud     -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--     启动类长运行配置 @SpringBootApplication      -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>

            <!--    eureka 服务端  @EnableConfigServer  http://localhost:8761    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>

            <!--    eureka 客户端  @EnableEurekaClient      -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-netflix-eureka-client</artifactId>
            </dependency>

            <!--    consul 注册  http://localhost:8500/ui/dc1/services    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>

            <!--    nacos 注册    http://localhost:8848/nacos    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>nacos-client</artifactId>
            </dependency>

            <!--   feign  声明式服务调用 替代 RestTemplate @EnableFeignClients       -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>

            <!--   hystrix 熔断器,服务降级   @EnableCircuitBreaker      -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            </dependency>

            <!--   hystrix 图形化监控,只能监控一个服务  @EnableHystrixDashboard  http://localhost:8769/hystrix   -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
            </dependency>

            <!--  turbine 聚合监控   @EnableTurbine    http://localhost:8769/turbine.stream   -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
            </dependency>

            <!--   spring-boot 提供的监控         -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

            <!--    网关  -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>

            <!--    git 配置类服务端   @EnableConfigServer  http://localhost/8888/master/config-dev.yml    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
            </dependency>

            <!--    git 配置类客户端          -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>

            <!--    bus-rabbitmq 消息总线,做 config 自动刷新          -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>

            <!--    stream-rabbitmq 发送消息          -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
            </dependency>

            <!--    sleuth + zipkin 服务链路追踪。需要 zipkin 的 jar包,图形化查看地址 http://localhost:9411        -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-zipkin</artifactId>
            </dependency>

        </dependencies>
    </dependencyManagement>

</project>

配置

// application.yml

# 设置端口
server:
  port: 8000

# 服务名
spring:
  application:
    name: eureka

# eureka 配置
eureka:
  instance:
    hostname: localhost
  client:
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
    # 是否需要将自己的路径注册到 eureka 服务端
    register-with-eureka: true
    # 是否需要从 eureka 服务端抓取路径
    fetch-registry: true

# consul
spring:
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        # 注册到 consul 的服务名
        service-name: ${spring.application.name}
        # 监控界面显示 ip
        prefer-ip-address: true

# nacos
spring:
  cloud:
    nacos:
      discovery:
        # 服务端地址
        server-addr: 127.0.0.1:8848

# ribben 负载均衡策略
provider:
  ribbon:
    NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

# feign 超时配置, 集成了 ribbon
ribbon:
  # 连接超时时间  默认 1000ms
  ConnectTimeout: 1000
  # 逻辑处理超时时间 默认 1000ms
  ReadTimeout: 3000

#feign 集成了 hystrix,开启 hystrix
feign:
  hystrix:
    enabled: true

# feign 设置日志级别,只支持 debug, 请求响应的相关数据
logging:
  level:
    com.roit.controller: debug

# turbine 聚合监控
turbine:
  combine-host-port: true
  # 配置监控的服务名
  app-config: provider,consumer
  cluster-name-expression: "'default'"
  aggregator:
    cluster-config: default
  #instanceUrlSuffix: /actuator/hystrix.stream

# gateway 网关
spring:
  cloud:
    gateway:
      routes:
      - id: provider
        # provider 的静态访问路径
        # uri: http://localhost:8001/
        # 动态
        uri: lb://provider
        # 匹配规则
        predicates:
        - Path=/goods/**
        # 局部过滤器
        filters:
          - AddRequestParameter=username,zs
      discovery:
        locator:
          # 请求路径加上微服务名称,http://localhost/provider/goods/ 或 http://localhost/goods/ 都行
          enabled: true
          # 默认名称大写,改为允许小写
          lower-case-service-id: true

# config 服务端
spring:
  cloud:
    config:
      server:
        # 文件的仓库地址
        git:
          uri: https://gitee.com/config.git
          # username: zs
          # password: 123
      # 文件所在分支
      label: master

# config 客户端,bootstrap.yml
spring:
  cloud:
    config:
      # http://localhost:8888/master/config-dev.yml
      # config 服务端地址
      # uri: http://localhost:8888
      name: config
      profile: dev,redis
      label: master
      # 动态配置 config 服务端地址,先将config 服务端注册到 eureka
      discovery:
        enabled: true
        # config 服务端的名字,大写
        service-id: config-server

# config 客户端 单服务自动刷新
# 1. 加依赖 actuator
# 2. 获取数据的 controller 上加@RefreshScope
# 3. curl -X POST http://localhost:8001/actuator/refresh
management:
  endpoints:
    web:
      exposure:
        # * 暴露所有;refresh 暴露自动刷新,/actuator/refresh。
        include: '*'

# bus 自动刷新,先给 config-server 发消息,再由 server 去通知所有的 config-client
# bus-amqp 内部使用 rabbitmq 发消息
# config-server 需暴露 bus-refresh 和 配置 rabbitmq
# curl -X POST http://localhost:8888/actuator/bus-refresh
        include: 'bus-refresh'

# config-client 需配置 rabbitmq 和 在获取数据的 controller 上加 @RefreshScope
spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: /

# stream-rabbit
spring:
  cloud:
    stream:
      binders:
        # 定义绑定器名称
        mybinder:
          type: rabbit
          # 指定 mq 的环境
          environment:
            spring:
              rabbitmq:
                host: localhost
                port: 5672
                username: guest
                password: guest
                virtual-host: /
      bindings:
        # 生产者 @EnableBinding(Source.class)
        output:
        # 消费者 @EnableBinding(Sink.class), @StreamListener(Sink.INPUT)
        # input:
          binder: mybinder
          # 绑定的交换机名称
          destination: myexchange

# sleuth + zipkin
spring:
  zipkin:
    # zipkin 服务端路径
    base-url: http://lacalhost:9411/
  sleuth:
    sampler:
      # 数据采集率 默认0.1
      probability: 0.1

到此这篇关于浅谈spring cloud常用依赖和配置的文章就介绍到这了,更多相关spring cloud依赖和配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud Gateway 路由配置定位原理分析

    环境:springcloud Hoxton.SR11 本节主要了解系统中的谓词与配置的路由信息是如何进行初始化关联生成路由对象的.每个谓词工厂中的Config对象又是如何被解析配置的. 所有的谓词工厂中的Config中属性值是如何被配置的. 在SpringCloud Gateway中的所有谓词工厂如下: 命名规则:XxxRoutePredicateFactory.所有的这些谓词工厂都是如下的继承关系 public class MethodRoutePredicateFactory extends

  • SpringCloud使用Zookeeper作为配置中心的示例

    在上一篇文章中介绍了Zookeeper作为注册中心使用,在这篇文章中将介绍Zookeeper作为配置中心的使用,废话不多说,直接上代码. 相关依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

  • SpringCloud-Alibaba-Sentinel-配置持久化策略详解

    前言: Sentinel的如果没有配置持久化的话配置一些 流控 和服务降级 从启项目就会置空所以需要持久化的操作 动态规则扩展 拉模式:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS.文件,甚至是 VCS 等.这样做的方式是简单,缺点是无法及时获取变更: 推模式:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos.Zookeeper 等配置中心.这种方式有更好的实时性和一致性保证 案例用Nacos 步奏: pom 添加nacos 对sen

  • SpringCloud gateway跨域配置的操作

    gateway跨域配置 gateway允许跨域的配置和zuul的不一样,记录一下. 版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!--

  • SpringCloud2020 bootstrap 配置文件失效的解决方法

    Spring Cloud 2020版本 bootstrap 配置文件(properties 或者 yml)无效 如何解决? 背景介绍 微服务是基于Spring Cloud框架搭建的,Spring Cloud Config作为服务配置中心. 业务服务只配置服务名称.启用环境和config的URL地址,其他都配置在配置中心,例如服务端口.服务注册中心地址等.可在开发环境(dev).测试环境(test)和生产环境(prod)分别配置. 所以预想的启动流程是:先加载配置文件,再启动服务. 之前的做法是,

  • SpringCloud 如何提取公共配置

    SpringCloud 提取公共配置 在开发微服务项目时,通常会有很多服务,此时会用配置中心来管理这些服务的配置,但有些服务可能会有相同的配置,比如数据源配置,eureka server注册中心地址配置,actuator开放端口配置等,很多的服务都需要,如果每个服务都写一份这样相同的配置,服务一多,也挺麻烦的,并且如果要换一个数据库或注册中心,每个服务都得改,很麻烦,所以就需要将这些公共的配置提取出来,放到公共的配置文件中,而这些服务去引用这些配置即可. 原本服务的配置文件可能是这样的: spr

  • 解决SpringCloud Config结合github无法读取配置的问题

    前言 配置中心存放文件在github是读取过程,可能你会出现读取不到配置信息.本次笔者将这一过程进行详细介绍. 准备 父工程 由于笔者是使用聚合工程,所以这次也是把相关的工程创建说明写上.当然你也可以完全创建两个独立的工程来引用. 创建父工程时直接只有一个pom文件,以下是这个文件的依赖信息 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache

  • 浅谈springcloud常用依赖和配置

    spring cloud常用依赖和配置整理 常用依赖 // pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

  • 浅谈Spring的两种配置容器

    Spring提供了两种容器类型 SpringIOC容器是一个IOC Service Provider.提供了两种容器类型:BeanFactory和ApplicationContext.Spring的IOC容器是一个提供IOC支持的轻量级容器.除了基本的ioc支持,它作为轻量级容器还提供了IOC之外的支持. BeanFactory BeanFactory是基础类型IOC容器.顾名思义,就是生产Bean的工厂.能够提供完整的IOC服务.没有特殊指定的话,其默认采用延迟初始化策略.只有当客户端对象需要

  • 浅谈spring 常用注解

    我们不妨先将spring常用的注解按照功能进行分类 1 .将普通类加入容器形成Bean的注解 日常开发中主要使用到的定义Bean的注解包括(XML方式配置bean暂不讨论): @Component.@Repository.@Service.@Controller.@Bean 其中@Component.@Repository.@Service.@Controller实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型.当一个组件代表数据访问层(Dao)时,你可以给它加上@Reposit

  • 浅谈php常用的7大框架的优缺点

    一直以来,phper讨论最多的就是php各种框架的优缺点,网上的资料也是比较零散,现把几款主流的框架收集汇总一下,其中本人只是用过Yii2.Laravel.Yaf.Thinkphp这四种框架,因此大部分对各种框架的评价皆来自与网上资料,如果问题,请在评论中指出,共同进步 一.ThinkPHP ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架.它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟

  • 浅谈SpringBoot2.3 新特配置文件属性跟踪

    背景 当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下: spring: profiles: active: @project.profile@ #根据maven 动态配置profile --- spring: profiles: dev demo: lengleng_dev --- spring: profiles: prd demo: lengleng_prd 或者使用 spring cloud 配置中心 (nacos/config)等 再有就是 应用配置的

  • 浅谈SpringCloud之Ribbon详解

    一.什么是负载均衡 负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 现在网站的架构已经从C/S模式转变为B/S模式,C/S模式是有一个专门的客户端,而B/S模式是将浏览器作为客户端.当用户在浏览器上输入一个网址按下回车键后,就会产生一个请求,在远方的服务器会处理这个请求,根据这个请求来生成用户想要的页面,然后将这个页面响应给浏览器,这样用户就能看到他想要看到的东西.我们知道,一台服务器处理数

  • 浅谈spring DI 依赖注入方式和区别

    目录 spring DI 3种DI注解的区别 1 @Autowired 2 @Inject 3 @Resource 3种注入方式的区别 1 field注入 2 构造器注入 3 setter注入 构造器注入的好处 1 依赖不可变 2 依赖不为空 3 完全初始化状态 4 避免循环依赖 5 总结 spring DI Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Sp

  • 浅谈js常用内置方法和对象

    JS内置函数不从属于任何对象,在JS语句的任何地方都可以直接使用这些函数.JS中常用的内置函数如下: 1.eval(str)接收一个字符串形式的表达式,并试图求出表达式的值.作为参数的表达式可以采用任何合法的操作符和常数.如果参数中包含JS命令,这些命令也可以被执行,就像这些命令是JS程序的一部分一样. 2.parseInt(str,n)试图从一个字符串中提取一个整数.可附加一个n整数实现返回n进制整数.如果在字符串中存在除了数字.符号.小数点和指数符号以外的字符,就停止转换,返回已有的结果.如

  • 浅谈EasyUI常用控件的禁用方法

    如下所示: input和textarea: $('#controlid').prop('disabled', true); $('input:not(:button,:hidden)').prop('disabled', true);//禁用除button和hidden控件外的所有input控件 $('textarea').prop('disabled', true); radio和checkbox: $('input:radio[name="radioname"]').prop('d

  • 浅谈java常用的几种线程池比较

    1. 为什么使用线程池 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP.FTP 或 POP).通过 JMS 队列或者可能通过轮询数据库.不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的. 构建服务器应用程序的一个简单模型是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务.实际上对于原型开发这

随机推荐