Spring Cloud Alibaba Nacos 初探

什么是Nacos?
  • 官方文檔
  • 概括:服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)共享與管理等
解決什么問(wèn)題?
  • 服務(wù)直接如何相互調(diào)用
  • 服務(wù)的配置管理
服務(wù)架構(gòu)
服務(wù)架構(gòu)圖
搭建Nacos Server
編寫(xiě)Client代碼,實(shí)現(xiàn)服務(wù)間調(diào)用
  • 創(chuàng)建SpringBoot項(xiàng)目 (user-server)
  • 引入依賴(lài)
    <dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>
      <dependency>
          <groupId>net.logstash.logback</groupId>
          <artifactId>logstash-logback-encoder</artifactId>
      </dependency>
    </dependencies>
    
  • application.yml 配置
    # 配置服務(wù)端口
    server:
      port: 8801
    
    spring:
      # 配置服務(wù)名稱(chēng)
      application:
        name: user-server
      # 配置nacos注冊(cè)中心地址
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
    
  • 以同樣的步驟創(chuàng)建一個(gè) order-server
  • 啟動(dòng)服務(wù),在nacos頁(yè)面可以看到兩個(gè)服務(wù)已經(jīng)注冊(cè)
    Nacos Server Web UI
  • order-server 提供一個(gè)API
    # order-server
    @RestController
    @RequestMapping("/orders")
    public class OrderController {  
        @GetMapping("/{orderId}")
        public String getOrderById(@PathVariable String orderId) {
            return orderId + " - orders";
        }
    }
    
  • user-server 使用 RestTemplate 實(shí)現(xiàn)調(diào)用 order-server
    # user-server
    @Service
    public class UserServiceImpl implements UserService {
        @Autowired
        private DiscoveryClient discoveryClient;
        @Autowired
        private RestTemplate restTemplate;
    
        @Override
        public String getUserOrderById(String orderId) {
            List<ServiceInstance> instances = discoveryClient.getInstances("order-server");
            String userServerAddress = instances.stream()
                  .map(ServiceInstance::getUri)
                  .findFirst().orElseThrow(() -> new RuntimeException("No Instances."))
                  .toString();
    
            return restTemplate.getForObject(
                    userServerAddress + "/orders/{orderId}",
                    String.class,
                    orderId);
         }
    }
    
  • 為了方便測(cè)試,這里使用junit,停掉已經(jīng)啟動(dòng)的 user-server
    @Autowired
    private UserService userService;
    
    @Test
    public void getOrderById() {
        String order = userService.getUserOrderById("E000202003170001");
        System.out.println(order);
    }
    
  • 結(jié)果
    結(jié)果
到此 Nacos Server 搭建完成,Nacos Client 注冊(cè)完成
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud學(xué)習(xí)筆記(九) Nacos 1. 概念 nacos的官方文檔為:https://nacos...
    云師兄閱讀 1,745評(píng)論 0 0
  • 一、概念理解 二、搭建注冊(cè)中心 2.1、創(chuàng)建eureka-server項(xiàng)目 使用的maven依賴(lài): <groupI...
    尤力閱讀 375評(píng)論 0 0
  • Thymeleaf 是一種模板語(yǔ)言。那模板語(yǔ)言或模板引擎是什么?常見(jiàn)的模板語(yǔ)言都包含以下幾個(gè)概念:數(shù)據(jù)(Data)...
    指針與內(nèi)存棧閱讀 809評(píng)論 0 6
  • 今兒個(gè)天真好~真好哎~暖洋洋的,感覺(jué)春天就在不遠(yuǎn)處。
    和塵之塵閱讀 892評(píng)論 0 11
  • 道是炎日似火燒,人身似草半枯焦,碧空浮云倒也好,不如回家吹空調(diào)。
    furx閱讀 307評(píng)論 0 1

友情鏈接更多精彩內(nèi)容