springcloud alibaba整合nacos註冊中心

上一篇文章,我們搭建好了nacos管理控制檯。本篇文章來體驗一下nacos作爲服務註冊與發現組件,這裏我選擇了通過springcloud alibaba整合nacos的方式,但是你需要注意,並不是說使用nacos一定要與springcloud alibaba框架整合,事實上,nacos可以與任何服務進行整合,提供了豐富的客戶端支持能力,比如

  • java

  • spring

  • springboot

  • springcloud

就是說,nacos提供了客戶端支持任何java項目,甚至計劃提供其它異構服務的的客戶端

  • node.js

  • c++

  • shell

  • python

控制面板截圖

從圖上看,還提供了各種應用接入的示例代碼,很貼心!對不對。

下面我們創建兩個服務,一個服務提供者,一個服務消費者,體驗一下nacos作爲服務註冊發現組件的強大之處。

1.搭建服務提供者

1.1.導入依賴

springcloud alibaba整合使用nacos服務註冊發現組件,需要引入依賴

<!--nacos discovery依賴-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

1.2.編寫配置

server:
  port: ${server.port:8080}
spring:
  application:
    name: follow-me-springloud-nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

1.3.編寫應用

1.3.1.啓動類

/**
 * <p>
 * 啓動類
 * </p>
 *
 * @author [email protected]
 * @since 2021/8/11
 */
@SpringBootApplication
public class FollowMeNacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(FollowMeNacosProviderApplication.class, args);
    }
}

1.3.2.rest接口

/**
 * <p>
 * 提供者controller
 * </p>
 *
 * @author [email protected]
 * @since 2021/8/11
 */
@RestController
@RequestMapping("provider")
@Slf4j
public class ProviderController {

    @Value("${server.port}")
    private String serverPort;

    @RequestMapping("test")
    public String test(){
       log.info("當前服務實例接收到請求,端口:{}", serverPort);
        return "ProviderController---test.ok.port=" + serverPort;
    }
}

1.3.3.啓動服務

啓動時,分別通過端口:8080、8081啓動兩個實例,從nacos控制檯上,可以看到註冊上來的服務提供者。

訪問8080:http://127.0.0.1:8080/provider/test

訪問8081:http://127.0.0.1:8081/provider/test

2.搭建服務消費者

2.1.導入依賴

<!--nacos discovery依賴-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.2.編寫配置

server:
  port: 8090
spring:
  application:
    name: follow-me-springloud-nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

2.3.編寫應用

2.3.1.啓動類

/**
 * <p>
 * 啓動類
 * </p>
 *
 * @author [email protected]
 * @since 2021/8/11
 */
@SpringBootApplication
public class FollowMeNacosConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(FollowMeNacosConsumerApplication.class, args);
    }
}

2.3.2.配置類

使用RestTemplate實現遠程調用,且配合Ribbon組件實現負載均衡。

/**
 * <p>
 * 消費者配置類
 * </p>
 *
 * @author [email protected]
 * @since 2021/8/11
 */
@Configuration
public class ConsumerConfiguration {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

2.3.3.rest接口

需要注意,在RestTemplate遠程調用時,是通過服務提供者的服務名稱:follow-me-springloud-nacos-provider,即通過nacos服務發現獲取服務實例,完成應用處理。

/**
 * <p>
 * 消費者controller
 * </p>
 *
 * @author [email protected]
 * @since 2021/8/11
 */
@RestController
@RequestMapping("consumer")
@Slf4j
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("test")
    public String test(){
        log.info("準備調用服務提供者api:follow-me-springloud-nacos-provider");
        String result = restTemplate.getForObject("http://follow-me-springloud-nacos-provider/provider/test", String.class);

        return result;
    }

}

2.3.4.啓動服務

啓動消費者服務,從nacos管理控制檯看到消費者服務已經註冊上來。

2.3.5.驗證

訪問消費者端點:http://127.0.0.1:8090/consumer/test,觀察兩個provider實例控制檯輸出,實現了負載均衡,刷新六次,觀察是否兩個提供者實例控制檯各輸出3次

消費者控制檯

服務提供者8080控制檯

服務提供者8081控制檯

到此,我們通過springcloud alibaba整合nacos完成了一個有代表意義的服務註冊與發現,體驗還不錯吧!

本文源碼:https://gitee.com/yanghouhua/springcloud.git

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章