Nacos使用备忘

该博客记录Nacos使用备忘,主要涉及远程调用配置。需在pom文件引入dubbo及项目jar依赖包,在application.yml、bootstrap.yml中配置,启动类加@EnableDubbo注解,使用service引用项目。还建议将单个微服务的Iservice单独管理,方便外部调用。

Nacos使用备忘
1.远程调用:
在pom文件中引入dubbo依赖包以及对应项目的jar依赖包

<!-- Nacos 注册与配置中心 -->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  <exclusions>
    <exclusion>
      <groupId>com.alibaba.nacos</groupId>
      <artifactId>nacos-api</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>com.alibaba.nacos</groupId>
  <artifactId>nacos-api</artifactId>
  <version>1.1.4</version>
   <!-- Dubbo dependency -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>dubbo</artifactId>
</dependency>
<!-- Alibaba Spring Context extension -->
<dependency>
  <groupId>com.alibaba.spring</groupId>
  <artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
  <groupId>com.gtown.cloud</groupId>
  <artifactId>dubbo-registry-nacos</artifactId>
</dependency>
  <!-- omp库存服务信息-->
 <dependency>
  <groupId>com.XXX.omp</groupId>
  <artifactId>user-service-api</artifactId>
  <version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- omp库存服务信息-->
<dependency>
  <groupId>com.XXX.omp</groupId>
  <artifactId>omp-warehouse-service-api</artifactId>
  <version>1.0.1-SNAPSHOT</version>
</dependency>

2.在application.yml

dubbo:
  application:
    name: @artifactId@ #填写pom中的本项目的artifactId
  registry:
    address: nacos://@nacosDiscoveryServerAddr@  #填写注册中心地址
  protocol:
    name: dubbo
    port: 22020
  reference:
    retries: 0
  consumer:
    timeout: 10000
    check: false
    retries: 0
    filter: webUserFilter  #自定义的过滤器
  provider:
    filter: webUserFilter  #自定义的过滤器

3.在bootstrap.yml中

spring:
  cloud:
    nacos:
      discovery:
        server-addr: @nacosDiscoveryServerAddr@ 
        namespace: @nacosDiscoveryNamespace@  #需要选取引用的远程服务相同的命名空间,不然无法调用
        service: xxx-pay # 通常就写项目名称,发布到nacos的的名称
        metadata:
          registerGateway: true
          registerOpenGateway: true
      config:
        server-addr: @nacosConfigServerAddr@
        namespace: @nacosConfigNamespace@
        file-extension: yml
        access-key: @nacosAccessKey@
        secret-key: @nacosSecretKey@
        endpoint: @nacosConfigEndpoint@
        extension-configs:
          - dataId: public-key.yml
          - dataId: redis.yml

4.在启动类上加上@EnableDubbo注解

@EnableDubbo
@Slf4j
@SpringBootApplication
@EnableTransactionManagement #视项目而定是否需要
@EnableAspectJAutoProxy #视项目而定是否需要
@EnableScheduling #视项目而定是否需要
@ServletComponentScan("com.XXX.cloud.order.config")#使用@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通过@WebServlet@WebFilter@WebListener注解自动注册,无需其他代码。
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        log.info("================SUCCESS==============");
    }
}

5.在具体使用的service中引用项目时

import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Reference;

@Service
public class UmallGoodsServiceImpl implements IUmallGoodsService {

    @Reference(version = "1.0") #版本version就是引用的远程项目包的版本
    private IApiProductSpuService productSpuService;

    @Reference(version = "1.0")
    private IApiChannelItemService channelItemService;
......
}

备注:可以将单个微服务的Iservice单独放在一个package下进行管理,方便外部调用。

### 服务发现与配置管理使用教程 #### 服务发现 Nacos 提供了强大的服务发现功能,支持多种服务注册与发现协议,包括 DNS、HTTP 和 RPC。通过 Nacos,开发者可以轻松实现服务的注册、发现和调用。 要开始使用 Nacos 进行服务发现,首先需要安装并启动 Nacos 服务。可以从 Nacos 的官方文档下载并按照指导安装 Nacos [^2]。安装完成后,可以通过以下步骤注册服务到 Nacos: 1. 在 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 中实现服务的健康检查?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值