使用 Spring Cloud Alibaba Nacos 實現服務注冊…

2020-04-12 16:09:46來源:博客園 閱讀 ()

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

使用 Spring Cloud Alibaba Nacos 實現服務注冊與發現

什么是 Nacos

Nacos 是 Spring Cloud Alibaba 生態中的重要組件之一,用于發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,可以快速實現 動態服務發現服務配置服務元數據及流量管理

下載安裝

# 下載源碼
git clone https://github.com/alibaba/nacos.git

# 安裝到本地倉庫
cd nacos/
mvn -Prelease-nacos clean install -U

啟動服務

cd distribution/target/nacos-server-0.7.0/nacos/bin

# Linux
./startup.sh -m standalone

# Windows
startup.cmd

啟動完成后,訪問 http://192.168.127.132:8848/nacos

登錄

賬號:nacos

密碼:nacos

《使用 Docker Compose 部署 Nacos》

Nacos 控制臺

《使用 Docker Compose 部署 Nacos》

服務提供者

引入依賴

pom.xml 中主要添加依賴 spring-cloud-starter-alibaba-nacos-discovery

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

相關配置

application.yml 中主要配置 Nacos 的地址

spring:
  application:
    # 服務名
    name: service-provider
  cloud:
    nacos:
      discovery:
        # 服務注冊中心
        server-addr: 192.168.127.132:8848

Application 入口類中主要添加注解 @EnableDiscoveryClient 開啟服務注冊發現功能

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
}

Controller

創建一個 RestController 提供 RestFul API 用于測試提供服務

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EchoController {

    @GetMapping(value = "/echo/{keyword}")
    public  String echo(@PathVariable(value = "keyword") String keyword) {
        return "Hello Nacos Provider " + keyword + ";
    }
}

驗證是否成功

啟動項目,瀏覽器訪問 http://192.168.127.132:8848/nacos

《Nacos Discovery 實現服務注冊與發現》提供者服務已上線

會發現有一個服務已經注冊在 Nacos 中,服務名為 service-provider

此時訪問網址 http://localhost:8848/echo/hi,瀏覽器會響應以下內容:

Hello Nacos Provider hi

服務消費者

引入依賴

pom.xml 中主要添加 spring-cloud-starter-alibaba-nacos-discoveryspring-cloud-starter-openfeign 依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

相關配置

Application 入口類中同樣添加注解 @EnableDiscoveryClient 開啟服務注冊與發現功能,添加注解 @EnableFeignClients 開啟 Feign 客戶端

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

Service

創建業務層接口,通過 @FeignClient("服務名") 注解來指定具體調用哪個服務

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(value = "service-provider")
public interface EchoService {

    @GetMapping(value = "/echo/{keyword}")
    String echo(@PathVariable(value = "keyword") String keyword);

}

Controller

創建 Controller 調用服務

import com.funtl.spring.cloud.alibaba.consumer.service.EchoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestEchoController {

    @Autowired
    private EchoService echoService;

    @GetMapping(value = "/feign/echo/{keyword}")
    public String echoFeign(@PathVariable(value = "keyword") String keyword) {
        return echoService.echo(keyword);
    }
}

驗證是否成功

啟動項目,訪問網址 http://localhost:8080/feign/echo/hi

消費者服務已上線

會發現有一個名為 service-consumer 的服務已經注冊到 Nacos 中

此時再訪問 http://localhost:8080/echo/hi,瀏覽器會同樣響應以下內容:

Hello Nacos Provider hi
  • 文章作者:彭超
  • 本文首發于個人博客:https://antoniopeng.com/2020/01/16/springcloudalibaba/%E4%BD%BF%E7%94%A8SpringCloudAlibabaNacos%E5%AE%9E%E7%8E%B0%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C%E4%B8%8E%E5%8F%91%E7%8E%B0/
  • 版權聲明:本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議。轉載請注明來自 彭超 | Blog!

原文鏈接:https://www.cnblogs.com/antoniopeng/p/12687694.html
如有疑問請與原作者聯系

標簽:AVIEWindows簡單nameimg

版權申明:本站文章部分自網絡,如有侵權,請聯系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點,本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系,版權歸原作者所有

上一篇:Java連載109-sychronized關鍵的用途及其注意點、自定義注解

下一篇:使用 Spring Cloud Alibaba Nacos Config 作為配置中心

韩国三级在线看免费