前一篇已经写到了利用Nacos作为配置中心来构建一个项目,毕竟需求有很大一部分的比重就是配置中心。所以就先利用Nacos构建了基于配置中心的项目。
Nacos作为注册中心是更加常用的。下面创建项目注册到Nacos中。

服务提供者

  1. 创建一个项目作为服务的提供者 nacos-discovery-http-provider
  2. maven引入相关依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.alibaba.cloud</groupId>
    4. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    5. </dependency>
    6. <dependency>
    7. <groupId>org.springframework.boot</groupId>
    8. <artifactId>spring-boot-starter-test</artifactId>
    9. <scope>test</scope>
    10. </dependency>
    11. <dependency>
    12. <groupId>org.springframework.boot</groupId>
    13. <artifactId>spring-boot-starter-web</artifactId>
    14. </dependency>
    15. <dependency>
    16. <groupId>org.springframework.boot</groupId>
    17. <artifactId>spring-boot-starter-actuator</artifactId>
    18. </dependency>
    19. </dependencies>
  3. 创建相关服务类
    NacosHttpServerApplication.java

    1. @SpringBootApplication
    2. @EnableDiscoveryClient
    3. public class NacosHttpServerApplication {
    4. public static void main(String[] args) {
    5. SpringApplication.run(NacosHttpServerApplication.class, args);
    6. }
    7. }
  4. UserController.java

    1. @RestController
    2. public class UserController {
    3. //提供相关服务
    4. @RequestMapping(value = "selectOne",method = RequestMethod.GET)
    5. public String selectOne(@RequestParam String id){
    6. return "Hello:"+id;
    7. }
    8. }
  5. @EnableDiscoveryClient表示开启SpringCloud服务注册注册发现功能。主要是由pom.xml中引入的 spring-cloud-starter-alibaba-nacos-discovery 模块实现.

  6. 配置文件

    1. server.port=8081
    2. # 注册中心
    3. spring.cloud.nacos.discovery.server-addr=localhost:8848
    4. # 配置中心展现的服务名称
    5. spring.application.name=nacos-discovery-http-provider
  7. 启动应用程序&查看Nacos控制台 启动应用程序,当控制台输出以下内容时表示服务注册&启动成功

    1. 2020-05-19 21:15:22.471 INFO 4568 --- [ main] c.a.c.n.registry.NacosServiceRegistry : nacos registry, DEFAULT_GROUP nacos-discovery-http-provider 192.168.1.16:8081 register finished
  8. 登陆Nacos控制台服务列表即可看到如下内容。

SpringCloudAlibaba(四):使用Nacos作为注册中心 - 图1
image

服务消费者

  1. 创建服务消费项目 NacosHttpConsumerApplication
  2. 编辑pom.xml文件,内容与provider的pom文件内容一致
  3. 创建相关类 NacosHttpConsumerApplication.java

    1. @SpringBootApplication
    2. @EnableDiscoveryClient
    3. @EnableFeignClients("top.anydata.products.web.example.nacos_discovery_http_consumer.service")
    4. public class NacosHttpConsumerApplication {
    5. public static void main(String[] args) {
    6. SpringApplication.run(NacosHttpConsumerApplication.class,args);
    7. }
    8. }
  4. IServerUserServiceFeign.class

    1. @FeignClient(value = "nacos-discovery-http-provider")
    2. public interface IServerUserServiceFeign {
    3. @RequestMapping(value = "selectOne",method = RequestMethod.GET)
    4. String selectOne(@RequestParam("id")String id);
    5. }
  5. ClientUserController.java

    1. @RestController
    2. public class ClientUserController {
    3. @Autowired
    4. IServerUserServiceFeign serverUserServiceFeign;
    5. @RequestMapping(value = "selectOne",method = RequestMethod.GET)
    6. public String selectOne(String id){
    7. return serverUserServiceFeign.selectOne(id);
    8. }
    9. }
  6. 配置文件配置服务名称与Nacos相关,实现发现Nacos中的服务

    1. spring.cloud.nacos.discovery.server-addr=localhost:8848
    2. # 配置中心展现的服务名称
    3. spring.application.name=nacos-discovery-http-consumer
    4. # 默认选择的配置环境,当前把环境划分为4套, dev[开发环境],test[测试环境],pre[预发环境],prod[生产环境]
    5. spring.profiles.active=dev
    6. management.endpoints.web.exposure.include='*'
  7. 启动服务&测试调用
    启动consumer服务,调用rest相关接口进行测试。

SpringCloudAlibaba(四):使用Nacos作为注册中心 - 图2
image

自此即实现了使用Nacos作为注册中心来进行服务的管理
本篇源码示例:

  1. https://github.com/CainGao/SpringCloudAlibabaExample

参考文章:
SpringCloudAlibaba(四):使用Nacos作为注册中心