服务注册中心 Nacos

官网:home (nacos.io)
nacos-server下载地址:Releases · alibaba/nacos (github.com)

第一步:运行nacos-server

nacos-server-2.1.1\nacos\bin 目录下打开命令行窗口,输入startup.cmd -m standalone;访问http://localhost:8848/nacos,用户名、密码全部默认为 nacos

第二步:添加maven坐标

    com.alibaba.cloud    spring-cloud-starter-alibaba-nacosdiscovery

第三步:写YML配置文件

  • 服务提供者 application.yml
## application.ymlserver:   port:   spring:   application:   name:nacos-payment-providercloud:   nacos:   discovery:   server-addr:localhost:8848#配置Nacos地址    management:   endpoints:   web:   exposure:   include: '*'
  • 服务消费者 application.yml
# 额外添加service-url:   nacos-user-service:http://nacos-payment-provider

第四步:主启动类添加 @EnableDiscoveryClient


服务配置中心 Nacos第一步:添加maven坐标

    com.alibaba.cloud    spring-cloud-starter-alibaba-nacosconfig

第二步:写YML配置文件

springboot 读取配置文件的优先级:**bootstrap.yml > application.yml

  • bootstrap.yml
# nacos配置  server:   port:3377    spring:   application:   name:nacos-config-clientcloud:   nacos:   discovery:   server-addr:localhost:8848# Nacos服务注册中心地址config:   server-addr:localhost:8848# Nacos作为配置中心地址_  file-extension:yaml # 指定yaml格式的配置  namespace: # 命名空间id  group: DEV_GROUP
  • application.yml
spring:   profiles:   active:dev  # 开发环境

第三步:添加 Spring Cloud 原生注解@RefreshScope实现配置自动更新第四步:在nacos配置管理栏中添加新配置

DataID:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
Group:`${spring.cloud.nacos.config.group}
配置格式:YAML

第五步:配置持久化

  1. 执行SQL文件:nacos-server-2.1.1\nacos\con\nacos-mysql.sql
  2. 修改配置文件:nacos-server-2.1.1\nacos\con\application.properties
spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=trdb.user=db.password=

服务接口调用 OpenFeign

官网:Spring Cloud OpenFeign

第一步:添加maven坐标

      org.springframework.cloud      spring-cloud-starter-openfeign  

第二步:主启动类添加 @EnableFeignClients第三步:消费者业务接口添加 @FeignClient

  • 消费者 service 接口
@Component@FeignClient(value = "service-provider")public interface FeignService {    @GetMapping(value = "/provider/getPort")    String getServerPortOfProvider();}
  • 提供者 controller类,服务名service-provider
@RestControllerpublic class ProviderController {    @Value("${server.port}")    private String serverPort;        @GetMapping(value = "/provider/getPort")    public String getServerPortOfProvider() {    return this.serverPort;    }}

负载均衡服务调用 LoadBalancer

官网:云原生应用 (spring.io)

OpenFeign 内部依赖 loadBalancer。


服务网关 Gateway

官网:Spring Cloud Gateway

第一步:添加maven坐标

    org.springframework.cloud    spring-cloud-starter-gateway

第二步:写YML配置文件

spring:  cloud:      gateway:        discovery:          locator:            enabled: true   # 开启从注册中心动态创建路由的功能,利用微服务名进行路由      routes:          - id: payment_routh #payment_route    #路由的ID,没有固定规则但要求唯一,建议配合服务名            uri: lb://cloud-payment-service     #匹配后提供服务的路由地址            predicates:              - Path=/payment/get/**   # 断言,路径相匹配的进行路由            - id: payment_routh2 #payment_route    #路由的ID,没有固定规则但要求唯一,建议配合服务名            uri: lb://cloud-payment-service    #匹配后提供服务的路由地址            filters:            - AddRequestHeader=X-Request-red, blue # 更多Gateway filter配置到官网查看          predicates:              - Path=/payment/lb/**         # 断言,路径相匹配的进行路由            - After=2017-01-20T17:42:47.789-07:00[America/Denver] # 更多断言配置到官网查看

第三步:自定义 GlobalFilter

@Component  public class MyLogGateWayFilter implements GlobalFilter, Order {          @Override      public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {                     String name = exchange.getRequest().getQueryParams().getFirst("name");          if (name == null) {              exchange.getResponse().setStatusCode(HttpStatus.MULTI_STATUS);              return exchange.getResponse().setComplete();          }          return chain.filter(exchange);      }        @Override      public int value() {          return 0;      }        @Override      public Class annotationType() {          return null;      }  }

服务熔断和限流 Sentinel

官网:home (sentinelguard.io)
下载地址:Releases · alibaba/Sentinel (github.com)

第一步:运行

java -jar sentinel-dashboard-1.8.5.jar
访问 sentinel 管理界面,账号密码均为 sentinel,http://localhost:8080

第二步:添加maven坐标

    com.alibaba.cloud    spring-cloud-starter-alibaba-sentinel    com.alibaba.csp    sentinel-datasource-nacos

第三步:写YML配置文件

spring:  application:    name: cloudalibaba-sentinel-service  cloud:    nacos:      discovery:        #Nacos服务注册中心地址        server-addr: localhost:8848    sentinel:      transport:        #配置Sentinel dashboard地址        dashboard: localhost:8080        #默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口        port: 8719

第四步:由于sentinel采用懒加载,需要执行一次访问流控、降级、热点key限流、系统规则、@SentinelResource、熔断、规则持久化


分布式请求链路跟踪 Sleuth

下载:Central Repository: io/zipkin/zipkin-server (maven.org)

第一步:运行

java -jar zipkin-server-2.23.8-exec.jar

第二步:添加maven 坐标

    org.springframework.cloud    spring-cloud-starter-zipkin

第三步:写YML 配置文件

spring:  application:    name:   zipkin:    base-url: http://localhost:9411  sleuth:    sampler:      probability: 1

第四步:访问浏览器界面

http://localhost:9411/


消息驱动 Stream

官网:Spring Cloud Stream
第一步:添加maven坐标

    org.springframework.cloud    spring-cloud-starter-stream-rabbit