注冊(cè)中心 Nacos(單機(jī)部署)

Nacos可以理解為是一個(gè)集成注冊(cè)中心、配置中心、服務(wù)管理的平臺(tái)
官網(wǎng)文檔地址:https://nacos.io/docs/latest/what-is-nacos/

一、環(huán)境配置

本次學(xué)習(xí)采用在虛擬中搭建nacos服務(wù),虛擬機(jī)環(huán)境:
jdk 1.8
nacos 2.2.1

  • ubuntu 安裝jdk1.8
#更新包列表
sudo apt update
#安裝OpenJDK 8
sudo apt install openjdk-8-jdk
#驗(yàn)證安裝是否成功
java -version

jdk成功安裝


jdk成功安裝
  • 部署 Nacos-server 2.2.1

Nacos-server下載地址:https://github.com/alibaba/Nacos/releases

Ubuntu選擇后綴為.tar.gz版本

nacos-server-2.2.1版本選擇

移動(dòng)壓縮包至虛擬機(jī)


壓縮包移動(dòng)到虛擬機(jī)

解壓壓縮包

# -C后是解壓后文件存放路徑,-z表示解壓的tar.gz格式,-x表示解壓,-v表示詳細(xì)輸出,-f表示指定文件名
tar -zxvf nacos-server-2.2.1.tar.gz -C ./

二、啟動(dòng)nacos服務(wù)

Nacos-server 2.2.1 默認(rèn)配置nacos.core.auth.plugin.nacos.token.secret.key沒(méi)有添加,需要自行添加。
不添加的情況下在啟動(dòng)的時(shí)候會(huì)報(bào)錯(cuò),所以這里添加了官網(wǎng)默認(rèn)值:
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

  • 單機(jī)啟動(dòng)Nacos服務(wù):
# 使用bash命令是因?yàn)閁buntu是默認(rèn)使用bash服務(wù),其他linux系統(tǒng)可用使用的是sh命令
bash startup.sh -m standalone

根據(jù)后提示的日志輸出可以查看服務(wù)是否正常啟動(dòng):


nacos正常啟動(dòng)日志

根據(jù)console地址可以進(jìn)入nacos控制臺(tái)查看:

Nacos默認(rèn)用戶名和密碼均為nacos

nacos控制臺(tái)

三、測(cè)試工程搭建

測(cè)試工程分為兩部分:
1、訂單服務(wù);
2、庫(kù)存服務(wù)。

  • 訂單服務(wù)

引入依賴

        <!--nacos-服務(wù)注冊(cè)發(fā)現(xiàn)-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--服務(wù)調(diào)用負(fù)載均衡組件,老版本中默認(rèn)負(fù)載均衡組件,新版本需要自己添加-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>

配置文件(application.yml),記得將下方的{nacos服務(wù)地址}替換成自己實(shí)際的Nacos服務(wù)地址

server:
  port: 8020
  # 應(yīng)用名稱 (nacos會(huì)將該名稱當(dāng)做服務(wù)名稱)
spring:
  application:
    name: order-service
  cloud:
    nacos:
      server-addr: {nacos服務(wù)地址}:8848
      discovery:
        username: nacos
        password: nacos
        namespace: public

接口邏輯:當(dāng)調(diào)用下單服務(wù)時(shí)遠(yuǎn)程調(diào)用stock-server庫(kù)存服務(wù)進(jìn)程庫(kù)存扣減

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/add")
    public String add(){
        System.out.println("下單成功!");

        String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
        return "Hello World"+msg;
    }
}

RestTemplate為springboot遠(yuǎn)程調(diào)用restful接口的推薦方式
為了讓spring容器管理RestTemplate實(shí)例bean,需要在config類里添加如下代碼@LoadBalanced是服務(wù)發(fā)現(xiàn)和負(fù)載均衡的一個(gè)標(biāo)識(shí)標(biāo)簽不可以省略

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        RestTemplate restTemplate = builder.build();
        return restTemplate;
    }

這里用于測(cè)試,就沒(méi)有單獨(dú)創(chuàng)建config類而是直接放在了啟動(dòng)類里


Order啟動(dòng)類
  • 庫(kù)存服務(wù)

引入依賴(因?yàn)閹?kù)存服務(wù)只是被調(diào)用放,所以無(wú)需引入服務(wù)調(diào)用負(fù)載均衡組件)

        <!--nacos-服務(wù)注冊(cè)發(fā)現(xiàn)-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

配置文件(application.yml),記得將下方的{nacos服務(wù)地址}替換成自己實(shí)際的Nacos服務(wù)地址

server:
  port: 8021
# 應(yīng)用名稱 (nacos會(huì)將該名稱當(dāng)做服務(wù)名稱)
spring:
  application:
    name: stock-service
  cloud:
    nacos:
      server-addr: {nacos服務(wù)地址}:8848
      discovery:
        username: nacos
        password: nacos

接口邏輯:被調(diào)用后進(jìn)行扣減庫(kù)存

@RestController
@RequestMapping("/stock")
public class StockController {

    @RequestMapping("/reduct")
    public String reduct() throws InterruptedException {
        System.out.println("扣減庫(kù)存");
        return "扣減庫(kù)存:";
    }

}

四、測(cè)試

  • 啟動(dòng)訂單服務(wù)(Order)和庫(kù)存服務(wù)(Stock)


    服務(wù)啟動(dòng)

觀察nacos控制臺(tái)已經(jīng)正確注冊(cè)了兩個(gè)服務(wù)


nacos控制臺(tái)
  • 進(jìn)行下訂單操作


    服務(wù)整體調(diào)用效果

    order服務(wù)調(diào)用效果

    stock服務(wù)調(diào)用效果
最后編輯于
?著作權(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)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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