SpringCloudAlibaba整合开发

1、Nacos :服务注册与发现

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台

获取GIT上Nacos文件,打包并启动

克隆:git clone https://github.com/alibaba/nacos.git

打包:mvn -Prelease-nacos clean install -U

服务注册列表地址:http://192.168.43.20:8848/nacos/index.html

Nacas服务端点检查:http://localhost:8081/actuator/nacos-discovery(登录:nacos/naocs)

服务提供者与服务消费者

负载均衡:LoadBalancerClient替代原有的ribbon

Fegin用法保持不变

java 复制代码
#提供者配置
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

@RestController
public class NacosController {
    @GetMapping(value = "/provide/{message}")
    public String echo(@PathVariable(value = "message") String message) {
        return "Hello Nacos " + message;
    }
}


#消费者配置
spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848


@RestController
public class ConsumerController {

    @Autowired
    public LoadBalancerClient loadBalancerClient;

    @Autowired
    private RestTemplate restTemplate;

    @Value("${spring.application.name}")
    private String appName;

    @GetMapping(value = "/duan/app/name")
    public String duan() {
        ServiceInstance instance = loadBalancerClient.choose("nacos-provider");
        String url = String.format("http://%s:%s/provide/%s",
                instance.getHost(),
                instance.getPort(),
                appName);
        return restTemplate.getForObject(url, String.class);
    }
}

2、Sentinel :熔断器机制

把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务稳定性

克隆:git clone https://github.com/alibaba/Sentinel.git

打包:mvn clean package

启动参数:java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=127.0.0.1:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

Dashboard监控网址:localhost:8080(登录:sentinel/ sentinel)

java 复制代码
#配置文件application.yml
spring:
  application:
    name: nacos-consumer-fegin-sentinel
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8080

3、Gateway :路由网关

动态设置路由网关,通过注册在nacos上的微服务的名称访问消费者与提供者

采用LoadBalanceClient的方式,以lb://开头,后面是注册在nacos上的服务名:

uri: lb://nacos-consumer(通过注册的微服务名访问)

java 复制代码
#配置文件application.yml
spring:
  application:
    name: spring-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
     transport:
        port: 8718
        dashboard: localhost:8080
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      #采用自定义路由的ID(有固定的用法,不同的id有不同的功能)
        - id: NACOS-CONSUMER
          #采用LoadBalanceClient的方式,以lb://开头,后面是注册在nacos上的服务名
          uri: lb://nacos-consumer
          #Predicate 翻译为"谓词"的意思,必须。主要用来匹配用户的请求,有多种写法
          predicates:
            #Method 方法谓词,这里匹配GET与POST请求
            - Method=GET,POST
        - id: NACOS-CONSUMER-FEIGN
          uri: lb://nacos-consumer-feign
          predicates:
            - Method=GET,POST


public class AuthFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String token = exchange.getRequest().getQueryParams().getFirst("token");
        if(token==null || token.isEmpty())
        {
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            return exchange.getResponse().setComplete();
        }
        return chain.filter(exchange);
    }

}

4、Nacos-config :动态配置以及多环境

配置管理-配置列表-新增配置

多环境-启用环境:spring.profiles.active=prod

应用名为Nacos Config中的Data ID,实际应用名称以配置中心的为准:

spring.application.name=nacos-provider-config
指定查找名为nacos-provider-config.yaml的文件:

spring.cloud.nacos.config.file-extension=yaml

Nacos Server的地址:spring.cloud.nacos.config.server-addr=127.0.0.1:8848

关闭动态刷新 spring.cloud.nacos.config.refresh.enabled=false

获取最新环境变量,获取配置信息

@Autowired

private ConfigurableApplicationContext applicationContext;

String name = applicationContext.getEnvironment().getProperty("user.name");

java 复制代码
#多环境-启用环境
spring.profiles.active=prod
#应用名为Nacos Config中的Data ID,实际应用名称以配置中心的为准
spring.application.name=nacos-provider-config
#指定查找名为nacos-provider-config.yaml的文件
spring.cloud.nacos.config.file-extension=yaml
#Nacos Server的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#关闭动态刷新 
spring.cloud.nacos.config.refresh.enabled=false
相关推荐
灰小猿5 天前
分布式项目集成TLog实现轻量级日志链路追踪
java·分布式·springcloud·tlog·日志链路追踪
最后1115 天前
lamp-cloud 5.7.0 发布,新增缓存清理 + 修复优化全覆盖
java·后端·spring·缓存·springboot·springcloud
漂流幻境5 天前
Spring cloud gateway 跨域配置与碰到的问题
java·gateway·springcloud·跨域
小坏讲微服务7 天前
Docker Compose搭建Git仓库私服上传微服务
分布式·git·docker·微服务·容器·springcloud·springalibaba
小坏讲微服务7 天前
Spring Cloud Alibaba整合SkyWalking的监控完整使用
java·微服务·架构·springcloud·监控·skywalking·java微服务
小坏讲微服务10 天前
Spring Cloud Alibaba 2025.0.0 与 Nacos 3.1.0 集群整合
分布式·nacos·架构·springcloud·nacos集群·springalibaba
没有bug.的程序员10 天前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
没有bug.的程序员13 天前
Spring Cloud Alibaba 生态总览
java·开发语言·spring boot·spring cloud·alibaba
serendipity_hky15 天前
【微服务 - easy视频 | day01】准备工具+gateway网关及路由至内部服务
java·微服务·架构·gateway·springcloud
装不满的克莱因瓶19 天前
【Java架构师】各个微服务之间有哪些调用方式?
java·开发语言·微服务·架构·dubbo·restful·springcloud