在Nacos集群配置[1]中,我们介绍了Nacos的安装以及集群配置,本文我们介绍一下在Spring Cloud中如何使用Nacos作为服务注册中心。
编写父工程
父工程只提供基本的依赖关系,一定要注意版本,否则会出现很多乱七八糟的错误。父工程依赖如下
<?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>net.xiangcaowuyu</groupId><artifactId>Cloud2020</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>cloud-provider-payment8001</module><module>cloud-consumer-order80</module><module>cloud-api-common</module><module>cloud-provider-payment8004</module><module>cloud-consumerzk-order80</module><module>cloud-consumer-feign-order80</module><module>cloud-provider-hystrix-payment8001</module><module>cloud-consumer-feign-hystrix-order80</module><module>cloud-consumer-hystrix-dashboard9001</module><module>cloud-gateway-gateway9527</module><module>cloud-config-center-3344</module><module>cloud-config-client-3355</module><module>cloud-config-client-3366</module><module>cloud-stream-rabbitmq-provider8801</module><module>cloud-stream-rabbitmq-consumer8802</module><module>cloud-stream-rabbitmq-consumer8803</module><module>cloud-stream-rabbitmq-consumer8802</module><module>cloud-stream-rabbitmq-consumer8803</module><module>cloud-stream-rabbitmq-consumer8803</module><module>cloudalibaba-provider-payment9001</module><module>cloudalibaba-provider-payment9002</module><module>cloudalibaba-consumer-order8888</module><module>cloudalibaba-config-nacos-client3377</module><module>cloudalibaba-sentinel-service8401</module><module>seata-order-service2001</module><module>seata-storage-service2002</module><module>seata-account-service2003</module></modules><!-- 统一管理jar包版本--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version><mysql.version>5.1.47</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.12.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR12</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><!-- <version>2.1.0.RELEASE</version>--><version>2.2.1.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency></dependencies></dependencyManagement><build><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><plugin><artifactId>maven-site-plugin</artifactId><version>3.7.1</version></plugin><plugin><artifactId>maven-project-info-reports-plugin</artifactId><version>3.0.0</version></plugin></plugins></pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><configuration><locales>en,fr</locales></configuration></plugin></plugins></build><reporting><plugins><plugin><artifactId>maven-project-info-reports-plugin</artifactId></plugin></plugins></reporting></project>
请忽略其他的项目模块。
编写服务提供者
编写一个简单的服务提供者,输出一个字符串。
添加依赖
<?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"><parent><artifactId>Cloud2020</artifactId><groupId>net.xiangcaowuyu</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloudalibaba-provider-payment9002</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.5</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies></project>
修改配置文件
server:port: 9001spring:application:name: nacos-provider-paymentcloud:nacos:discovery:server-addr: 192.168.120.180:8848management:endpoints:web:exposure:include: "*"
修改启动类
@SpringBootApplicationpublic class PaymentProviderMain9001 {public static void main(String[] args){SpringApplication.run(PaymentProviderMain9001.class,args);}}
编写服务接口
@RestController@Slf4jpublic class NacosController {@Value("${server.port}")private String serverPort;@GetMapping(value = "/echo/{string}")public String echo(@PathVariable String string) {return "Hello Nacos Discovery " + string+"\t当前服务端口:"+serverPort;}}
启动服务,我们可以查看以下Nacos是否有对应的服务。

集群
一般情况下,为了系统的健壮性,我们都会进行集群。我这里为了方便调试,复制了一个cloudalibaba-provider-payment9001
工程,只是将端口号改成9002
,然后,我们启动9002
端口项目,再次查看Nacos

可以看到当前有两个实例了。集群的关键时服务名称需要一致,也就是我们配置文件中的spring.application.name
必须保持一致。
References
[1]
Nacos集群配置: https://www.xiangcaowuyu.net/devtools/nacos-cluster-configuration.html
文章转载自香草物语博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




