Nacos使用

Nacos与Sentinel实战
本文详细介绍Nacos作为服务注册中心和配置中心的使用方法,包括依赖配置、YAML设置及Sentinel的集成,实现服务的注册、配置及流量控制。

1.Nacos使用

Nacos作为服务注册中心和配置中心

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--这是注册服务-->
  <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!---这是配置服务-->

需要的yml配置

#这是单纯的注册到nacos
server:
  port: 30001
spring:
  application:
    name: 01provider
  cloud:
    nacos:
      discovery:
        server-addr: 47.94.169.138:8848
#这是作为配置中心和服务中心bootstrap.yml
spring:
  application:
    name: 02consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yml #注意,在老版本的nacos中这个地方必须写yaml,否则启动会找不到文件
        namespace: 01lqq #这里的命名空间不是空间名字而是空间id
server:
  port: 30002
#application.yml指定配置文件的后缀
spring:
  profiles:
    active: dev

在这里插入图片描述

2.Sentinel的使用

通过代码配置 @SentinelResource

value:这是get接口添加一个sentinel的降级名字,通过对这个降级接口接口对原接口进行降级规则的添加
blockHandler:对配置热点参数的降级,但是不会对异常进行降级,参数中需要添加一个BlockException异常参数
fallback:降级的方法名,需要保证于接口的参数一致,当接口出现错误或异常就会触发这个降级方法
fallbackClass:这是一个降级类,发生降级会去降级类中匹配降级方法
defaultFallback,不需要任何参数但需要返回值相同
exceptionsToIgnore:忽略异常,发生异常不触发降级

    sentinel:
      transport:
        dashboard: 127.0.0.1:8080
      datasource:
        ds1:
          nacos: #配置sentinel使用nacos作为配置中心
            server-addr: localhost:8848
            dataId: 01providersentinel
            rule-type: flow
 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
         <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
            <version>1.7.2</version>
        </dependency>
        <!--需要nacos保存降级规则,否则重新启动之前的降级规则就会消失-->
[
    {
        "resource": " /test2",
        "limitApp": "default",
        "grade": 0,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]
需要用json形式保存降级规则
### 服务发现与配置管理使用教程 #### 服务发现 Nacos 提供了强大的服务发现功能,支持多种服务注册与发现协议,包括 DNS、HTTP 和 RPC。通过 Nacos,开发者可以轻松实现服务的注册、发现和调用。 要开始使用 Nacos 进行服务发现,首先需要安装并启动 Nacos 服务。可以从 Nacos 的官方文档下载并按照指导安装 Nacos [^2]。安装完成后,可以通过以下步骤注册服务到 Nacos1. 在 Spring Boot 项目中添加 Nacos 服务发现的依赖,例如 `spring-cloud-starter-alibaba-nacos-discovery` [^4]。 2. 在 `application.yml` 或 `application.properties` 文件中配置 Nacos 服务器的地址。 3. 启动应用,服务将自动注册到 Nacos 中。 服务发现的实现可以通过 Feign 或 RestTemplate 来完成。Feign 是一个声明式的 Web 服务客户端,它使得编写 Web 服务客户端变得更加简单。使用 Feign 可以直接通过接口和注解来调用 Web 服务。 ```java @FeignClient(name = "service-provider") public interface ServiceClient { @GetMapping("/api") String callApi(); } ``` #### 配置管理 Nacos 的配置管理功能允许开发者动态地更新和获取配置信息,而无需重启服务。这意味着可以在不重新部署应用的情况下更改应用的行为。 要使用 Nacos 进行配置管理,需要在 Nacos 控制台创建配置文件,并通过 API 或 SDK 获取配置。在 Spring Boot 应用中,可以通过添加 `spring-cloud-starter-alibaba-nacos-config` 依赖来集成 Nacos 配置管理 [^4]。 ```yaml spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 extension-configs: - data-id: user-service.properties group: DEFAULT_GROUP refresh: true ``` 以上配置指定了 Nacos 服务器的地址,并且指定了要加载的配置文件。当配置文件发生变化时,Nacos 会自动推送更新到应用,从而实现配置的热更新。 #### 动态配置服务 Nacos 支持配置版本管理,可以查看配置的历史版本,回滚到之前的版本,或者对比不同版本之间的差异。这有助于维护配置的一致性和可追溯性。 通过 Nacos 提供的 API,开发者可以发布配置,客户端则可以通过 API 获取配置 [^3]。 #### 服务融合 Nacos 还支持服务融合,这意味着它可以与其他服务框架无缝集成,如 Spring Cloud 和 Dubbo。这种融合使得开发者可以在不同的服务框架之间共享服务注册信息,从而简化了服务间的通信 [^1]。 #### 示例代码 下面是一个简单的示例,展示了如何使用 Nacos 进行服务发现: ```java @RestController public class ServiceController { @Autowired private ServiceClient serviceClient; @GetMapping("/call") public String callService() { return serviceClient.callApi(); } } ``` #### 相关问题 1. 如何在 Spring Boot 应用中集成 Nacos 服务发现? 2. 怎样利用 Nacos 实现配置的热更新? 3. Nacos 支持哪些服务发现协议? 4. 如何通过 Nacos 控制台管理配置文件? 5. 如何在 Nacos 中实现服务的健康检查?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值