欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nacos注冊中心的部署與用法示例詳解

 更新時間:2022年02月14日 10:01:44   作者:張維鵬  
注冊中心是微服務(wù)架構(gòu)中的紐帶,類似于“通訊錄”,它記錄了服務(wù)和服務(wù)地址的映射關(guān)系,本文通過示例代碼給大家介紹Nacos注冊中心的部署與用法,感興趣的朋友跟隨小編一起看看吧

一、什么是注冊中心:

我們知道微服務(wù)彼此間獨立部署、具有清晰的邊界,服務(wù)間通過遠程調(diào)用來構(gòu)建復(fù)雜的業(yè)務(wù)功能。而服務(wù)冊中心在微服務(wù)項目中扮演著非常重要的角色,那么注冊中心又是什么,使用服務(wù)注冊中心可以解決微服務(wù)中的哪些問題呢?

1、什么是注冊中心:

注冊中心是微服務(wù)架構(gòu)中的紐帶,類似于“通訊錄”,它記錄了服務(wù)和服務(wù)地址的映射關(guān)系。在分布式架構(gòu)中,服務(wù)會注冊到這里,當(dāng)服務(wù)需要調(diào)用其它服務(wù)時,就到這里找到服務(wù)的地址并進行調(diào)用。注冊中心本質(zhì)上是為了解耦服務(wù)提供者和服務(wù)消費者。對于任何一個微服務(wù),原則上都應(yīng)存在或者支持多個提供者,這是由微服務(wù)的分布式屬性決定的,更進一步,為了支持彈性擴縮容特性,一個微服務(wù)的提供者的數(shù)量和分布往往是動態(tài)變化的,也是無法預(yù)先確定的。因此,原本在單體應(yīng)用階段常用的靜態(tài)LB機制就不再適用了,需要引入額外的組件來管理微服務(wù)提供者的注冊與發(fā)現(xiàn),而這個組件就是服務(wù)注冊中心。

2、注冊中心的核心功能:

  • 服務(wù)注冊:服務(wù)實例將自身服務(wù)信息注冊到注冊中心
  • 服務(wù)發(fā)現(xiàn):服務(wù)實例通過注冊中心,獲取到注冊到其中的服務(wù)實例的信息,通過這些信息去請求它們提供的服務(wù)
  • 服務(wù)剔除:服務(wù)注冊中心將出問題的服務(wù)自動剔除到可用列表之外,使其不會被調(diào)用到

3、注冊中心解決的問題:

(1)屏蔽、解耦服務(wù)之間相互依賴的細(xì)節(jié):

服務(wù)之間的遠程調(diào)用必須要知道對方IP、端口。但是該調(diào)用方式存在明顯的問題,如被調(diào)用的IP、端口變化后,調(diào)用方也要同步修改。通過服務(wù)發(fā)現(xiàn),將服務(wù)之間IP與端口的依賴轉(zhuǎn)化為服務(wù)名的依賴,服務(wù)名可以根據(jù)具體微服務(wù)業(yè)務(wù)來做標(biāo)識。

(2)對服務(wù)進行動態(tài)管理:

在微服務(wù)架構(gòu)中,服務(wù)數(shù)量多且依賴錯綜復(fù)雜,無論是服務(wù)主動停止、意外掛掉,還是因為流量增加對服務(wù)擴容,這些服務(wù)狀態(tài)上的動態(tài)變化,都需要盡快的通知到被調(diào)用方,被調(diào)用方才采取相應(yīng)的措施。所以,對于服務(wù)注冊中心要實時管理服務(wù)的數(shù)據(jù)與狀態(tài),包括服務(wù)的注冊上線、服務(wù)主動下線,異常服務(wù)的剔除。

(3)降低服務(wù)端負(fù)載均衡中間件的壓力:

當(dāng)服務(wù)越來越多時,服務(wù) URL 配置管理變得非常困難,服務(wù)端的負(fù)載均衡中間件,比如 F5、Nginx 壓力也越來越大。通過服務(wù)注冊中心,就可以實現(xiàn)動態(tài)地注冊和發(fā)現(xiàn)服務(wù),使服務(wù)的位置透明,并通過在消費方獲取服務(wù)提供方地址列表,實現(xiàn)軟負(fù)載均衡和 Failover,降低對服務(wù)端的負(fù)載均衡中間件,也能減少部分成本。

4、服務(wù)的發(fā)現(xiàn)與注冊的實現(xiàn)模式:

上面提到,硬件的 F5、軟件的 Nginx 也可以實現(xiàn)服務(wù)的發(fā)現(xiàn),那么這與注冊中心的服務(wù)發(fā)現(xiàn)有什么區(qū)別呢?這其實是服務(wù)發(fā)現(xiàn)與注冊的兩種實現(xiàn)模式:服務(wù)端的發(fā)現(xiàn)模式 和 客戶端的發(fā)現(xiàn)模式。F5、Nginx 屬于服務(wù)端的發(fā)現(xiàn)模式,服務(wù)注冊中心屬于客戶端的發(fā)現(xiàn)模式,兩種模式各有優(yōu)缺點,也適用于不同的場景,對于大型應(yīng)用一般會有多層負(fù)載,外層用服務(wù)器端負(fù)載均衡,內(nèi)部用客戶端負(fù)載均衡。接下來我們就具體看看兩種服務(wù)發(fā)現(xiàn)模式是怎么樣的:

(1)服務(wù)端的發(fā)現(xiàn)模式:

服務(wù)端的發(fā)現(xiàn)模式是通過使用一個中間的服務(wù)器,來屏蔽被調(diào)用服務(wù)的復(fù)雜性與變動性,當(dāng)有新的服務(wù)加入或老服務(wù)剔除時,只需要修改中間服務(wù)器上的配置即可,此模式的顯著特點是:引入獨立的中間代理服務(wù)器來屏蔽真實服務(wù)的具體細(xì)節(jié)。

如下圖所示:當(dāng)服務(wù)A要調(diào)用服務(wù)B時,先通過 DNS 域名解析找到 Nginx 服務(wù)器,然后將請求發(fā)送給Nginx,因為在 Nginx 上配置了服務(wù)B的真實訪問地址,Nginx 收到請求后根據(jù)負(fù)載均衡算法,將請求轉(zhuǎn)發(fā)到某個真實的服務(wù)B,服務(wù)B將請求結(jié)果返回給 Nginx,Nginx 再將返回結(jié)果給服務(wù)A,整個請求流程結(jié)束。當(dāng)然中間服務(wù)器不一定非得是 Nginx,還可以是基于硬件的 F5,也可以是工作在傳輸層的 IP 負(fù)載均衡等。

該模式的優(yōu)點是:配置集中在獨立的中間服務(wù)器端完成,對代碼沒有任何入侵,也不存在跨平臺跨語言的問題。但缺點也很明顯,因為所有請求都需要穿透中間服務(wù)器,所以中間服務(wù)器會成為一個單點,對性能也會有所影響。

(2)客戶端的發(fā)現(xiàn)模式:

我們再看看客戶端的發(fā)現(xiàn)模式,服務(wù)A調(diào)用服務(wù)B時,不需要通過中間服務(wù)器,而是在自己進程內(nèi)維護了服務(wù)B的信息,再通過負(fù)載算法選擇一個服務(wù)B直接調(diào)用。那服務(wù)A具體是怎么維護服務(wù)B的信息呢?為此引入了服務(wù)注冊中心的概念,當(dāng)服務(wù)B啟動時向注冊中心注冊自己(將自己的信息發(fā)送到注冊中心的注冊表里),服務(wù)A再從注冊中心獲取所有注冊的服務(wù),這就是客戶端模式的基本原理。

客戶端模式因為在進程內(nèi)直接調(diào)用服務(wù),也叫做進程內(nèi)負(fù)載,由于不需要穿透中間服務(wù)器,所以客戶端模式的性能損耗比較小。但是,需要在服務(wù)內(nèi)部維護服務(wù)注冊信息,負(fù)載算法等,有一定的代碼入侵性,對于跨平臺,跨語言的支持不太友好。

5、服務(wù)注冊表:

微服務(wù)架構(gòu)中,所有的服務(wù)啟動后都通過注冊中心來注冊自己,同時把注冊中心里面的服務(wù)信息拉回本地,后續(xù)調(diào)用時就直接檢查本地的服務(wù)和節(jié)點信息來進行服務(wù)節(jié)點的調(diào)用。每個服務(wù)節(jié)點都會來注冊中心進行服務(wù)注冊,那注冊信息是如何在服務(wù)端保存的呢,其實就是注冊表,服務(wù)注冊的時候把自己的信息上報上來,然后注冊中心把注冊表,返回給客戶端,那服務(wù)之間就知道要調(diào)用服務(wù)的節(jié)點了。

服務(wù)注冊表需要高可用而且隨時更新??蛻舳四軌蚓彺鎻姆?wù)注冊表中獲取的服務(wù)地址,然而,這些信息最終會過時,客戶端也就無法發(fā)現(xiàn)服務(wù)實例。因此,服務(wù)注冊表會包含若干服務(wù)端,并使用復(fù)制協(xié)議保持一致性。服務(wù)注冊表不能是單點,否則存在單點故障,當(dāng)服務(wù)注冊表有多臺服務(wù)器的時需要考慮服務(wù)注冊表的信息在多臺機器上的實時同步和一致。

二、主流服務(wù)注冊中心的對比:

(1)Zookeeper 和 Consul 遵循 CP 原則,保證了強一致性和分區(qū)容錯性,放棄可用性,在分布式環(huán)境中,如果涉及數(shù)據(jù)存儲的場景,數(shù)據(jù)一致性應(yīng)該是首先被保證的,但對于服務(wù)發(fā)現(xiàn)來說,可用性才是最核心的,針對同一個服務(wù),即使注冊中心的不同節(jié)點保存的服務(wù)提供者信息不相同,也并不會造成災(zāi)難性的后果。因為對于服務(wù)消費者來說,能消費才是最重要的,消費者拿到不正確的服務(wù)實例信息后嘗試消費一下,也勝過因為無法獲取實例信息而不去消費而導(dǎo)致系統(tǒng)異常

(2)Eureka 遵循 AP 原則,保證可用性,放棄數(shù)據(jù)一致性,基本能滿足注冊中心所需的核心功能,但 Eureka 2.x 版本已停止開發(fā),并且宣布如果繼續(xù)使用的話,風(fēng)險自負(fù)。

(3)Nacos 同時支持 AP 與 CP,默認(rèn)是 AP,同時功能更豐富,與 SpringCloud Alibaba 的兼容性更好,使用更簡單靈活,可以滿足更多的業(yè)務(wù)場景,且支持 K8S 的集成。

不同的服務(wù)注冊中心組件的應(yīng)用場景不同,讀者可以根據(jù)自己的業(yè)務(wù)情況進行選型。但下文我們主要以 Nacos 注冊中心為例進行介紹,其他幾種注冊中心讀者自行上網(wǎng)查閱

三、Nacos 注冊中心的部署與使用:

1、Nacos 注冊中心的搭建:

我們先去 Nacos 的 Github(Tags · alibaba/nacos · GitHub)下載我們所需的 Nacos 版本,可以選擇 windows 或者 Linux,如下圖:

由于當(dāng)時在搭建項目的時候,考慮到與 SpringBoot 和 SpringCloud 的版本對應(yīng)問題,我這里是下載了 2.0.0 的版本進行搭建,讀者可以根據(jù)自己的情況選擇對應(yīng)的 Nacos 版本。

1.1、Windows 環(huán)境:

下載并解壓 nacos-server-2.0.0.zip,解壓完成后進入 /bin 目錄,可以看到下面兩個腳本:

windows 環(huán)境直接運行 startup.cmd 啟動項目,出現(xiàn)以下界面則啟動完成:

在瀏覽器輸入 http://localhost:8848/nacos 進入Nacos的登錄界面,用戶名與密碼默認(rèn)都是 nacos,登錄成功后界面如下:

1.2、Linux 環(huán)境:

Nacos 在 Linux 環(huán)境下的啟停跟在 windows 環(huán)境的啟?;疽恢拢认螺d nacos-server-2.0.0.tar.zip 壓縮包,然后上傳到 Linux 服務(wù)器上進行解壓(解壓命令:tar -zxvf nacos-server-2.0.0.tar.gz),解壓完成后同樣進入 /bin 目錄執(zhí)行啟動命令(單機模式啟動命令:sh startup.sh -m standalone),啟動完成后再訪問 nacos 控制臺地址(http://服務(wù)器ip地址:8848/nacos/index.html)驗證是否成功啟動即可。

2、SpringBoot 整合 Nacos 進行服務(wù)注冊發(fā)現(xiàn):

我們首先看一下 nacos 的簡單架構(gòu)圖:

參照上面的架構(gòu)圖,我們分別創(chuàng)建兩個模塊,分別是 cloud-producer-server(服務(wù)提供者)、cloud-consumer(服務(wù)消費者),職責(zé)如下:

  • cloud-producer-server:注冊進入nacos-server,對外暴露
  • 服務(wù)cloud-consumer:注冊進入nacos-server,調(diào)用 cloud-producer-server 的服務(wù)

創(chuàng)建這兩個模塊前,我們先聲明項目的版本信息:

<properties>
    <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
    <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
    <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
</properties>
 
<!--  只聲明依賴,不引入依賴 -->
<dependencyManagement>
    <dependencies>
        <!-- 聲明springBoot版本 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 聲明springCloud版本 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 聲明 springCloud Alibaba 版本 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.1、創(chuàng)建服務(wù)提供者 cloud-producer-server:

(1)引入maven依賴:

<!-- 引入阿里的nacos作為服務(wù)注冊中心 -->
	<dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	</dependency>

(2)添加 nacos 相關(guān)的配置信息:

在 application.properties 配置文件指定服務(wù)名稱、端口號、nacos-server 的地址信息,如下:

spring.application.name = cloud-producer-server
server.servlet.context-path = /${spring.application.name}
server.port=9000
# nacos注冊中心配置
spring.cloud.nacos.discovery.server-addr = localhost:8848
spring.cloud.nacos.discovery.namespace = 91b5489b-d009-4725-86fa-534f760b4d04
spring.cloud.nacos.discovery.register-enabled = true

(3)開啟服務(wù)注冊發(fā)現(xiàn)的功能:

在主 Application 啟動類加入 @EnableDiscoveryClient 注解開啟服務(wù)注冊發(fā)現(xiàn)的功能,如下:

/**
 * SpringBoot啟動類
 * @EnableDiscoveryClient 開啟服務(wù)注冊發(fā)現(xiàn)的功能
 */
@EnableDiscoveryClient
@SpringBootApplication
public class ProducerApplication
{
	public static void main(String[] args)
	{
		SpringApplication.run(ProducerApplication.class, args);
	}
}

(4)實現(xiàn)個演示功能:

cloud-producer-server 作為服務(wù)提供者注冊到 nacos 中,肯定需要提供個服務(wù)來供消費者 cloud-consumer 調(diào)用,下面簡單寫一個演示接口:

@RestController
@RequestMapping (value = "/")
public class CloudController
{
    @PostMapping ("getSum")
    public String getSum(@RequestParam (value = "num1") Integer num1, @RequestParam (value = "num2") Integer num2)
    {
         return "success:兩數(shù)求和結(jié)果=" + (num1 + num2);
    }
}

(5)啟動項目:

啟動項目之后,我們進入 nacos 控制臺,在 nacos 的 “服務(wù)管理->服務(wù)列表” 的 “91b5489b-d009-4725-86fa-534f760b4d04” 空間中將會發(fā)現(xiàn)注冊進入的 cloud-producer-server 這個服務(wù),如下圖:

2.2、創(chuàng)建服務(wù)消費者 cloud-consumer:

服務(wù)消費者的創(chuàng)建步驟與服務(wù)提供者基本一致

(1)引入maven依賴:

	<!-- 引入阿里的nacos作為服務(wù)注冊中心 -->
	<dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	</dependency>

(2)添加 nacos 相關(guān)的配置信息:

spring.application.name = cloud-consumer
server.port=9001
 
# nacos注冊中心配置
spring.cloud.nacos.discovery.server-addr = localhost:8848
spring.cloud.nacos.discovery.namespace = 91b5489b-d009-4725-86fa-534f760b4d04
spring.cloud.nacos.discovery.register-enabled = true

(3)開啟服務(wù)注冊發(fā)現(xiàn)的功能:

/**
 * SpringBoot啟動類
 * @EnableDiscoveryClient 開啟服務(wù)注冊發(fā)現(xiàn)的功能
 */
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication
{
	public static void main(String[] args)
	{
		SpringApplication.run(ConsumerApplication.class, args);
	}
}

(4)調(diào)用服務(wù)提供方的演示功能:

cloud-producer-server 服務(wù)提供方提供一個演示功能,那我們?nèi)绾握{(diào)用該功能呢?其實 Nacos 集成了 Ribbon(有關(guān) Ribbon 的詳細(xì)介紹請參考這篇文章:http://www.dbjr.com.cn/article/206292.htm),因此我們便能使用 Ribbon 的負(fù)載均衡來調(diào)用服務(wù),步驟如下:

① 創(chuàng)建 RestTemplate,使用 @LoadBalanced 注解標(biāo)注開啟負(fù)載均衡:

@Configuration
public class RestConfig
{
    /**
     * 創(chuàng)建restTemplate對象。
     * LoadBalanced注解表示賦予restTemplate使用Ribbon的負(fù)載均衡的能力(一定要加上注解,否則無法遠程調(diào)用)
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

② 通過 RestTemplate 請求遠程服務(wù)地址并接收返回值

@RestController
@RequestMapping (value = "api/invoke")
public class InvokeController
{
    @Autowired
    private RestTemplate restTemplate;
 
    /**
     * 使用 RestTemplate 進行遠程服務(wù)調(diào)用,并且使用 Ribbon 進行負(fù)載均衡
     */
    @ApiOperation (value = "RestTemplate", notes = "使用RestTemplate進行遠程服務(wù)調(diào)用,并使用Ribbon進行負(fù)載均衡")
    @GetMapping ("getByRestTemplate")
    public String getByRestTemplate(Integer num1, Integer num2)
    {
        //第一個cloud-producer-server代表在nacos注冊中心中的服務(wù)名,第二個cloud-producer-server代表contextPath配置的項目路徑
        String url = "http://cloud-producer-server/cloud-producer-server/getSum";
        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
        params.add("num1", num1);
        params.add("num2", num2);
        //通過服務(wù)名的方式調(diào)用遠程服務(wù)(非ip端口)
        return restTemplate.postForObject(url, params, String.class);
    }
}

(5)啟動測試,查看nacos注冊中心控制面板情況

啟動成功后將會在 nacos 中的服務(wù)列表中看到 cloud-consumer,如下圖:

那么接下來就測試下服務(wù)能否調(diào)的通?訪問服務(wù)消費方的 api/invoke/getByRestTemplate接口,可以看到請求結(jié)果如下:

3、Nacos 的集群化部署:

前面的介紹中,我們并未對 Nacos 服務(wù)端做任何特殊的配置,一切均以默認(rèn)的單機模式運行,但是單機運行模式僅適用于學(xué)習(xí)與測試環(huán)境,對于有高可用要求的生產(chǎn)環(huán)境顯然是不合適的。那我們怎么搭建支持高可用的集群環(huán)境呢?

在搭建 Nacos 集群前,我們需要先修改 Nacos 的數(shù)據(jù)持久化配置為 MySQL 存儲。默認(rèn)情況下,Nacos 使用內(nèi)嵌的數(shù)據(jù)庫 Derby實現(xiàn)數(shù)據(jù)的存儲,這種情況下,如果啟動多個默認(rèn)配置下的 Nacos 節(jié)點,數(shù)據(jù)存儲是存在一致性問題的。為了解決這個問題,Nacos 采用了集中式存儲的方式來支持集群化部署,但目前 Nacos 只支持 MySQL 的存儲,且版本要求:5.6.5+

3.1、Nacos 配置的持久化:

(1)初始化 MySQL 數(shù)據(jù)庫:

首先在 MySQL 中新建一個數(shù)據(jù)庫 nacos-config(名稱隨意),然后執(zhí)行 Nacos 中的SQL腳本,該腳本是 Nacos-server 的 conf 文件夾中的 nacos-mysql.sql,如下圖:

執(zhí)行該腳本,將會自動創(chuàng)建表,如下圖:

(2)修改 conf/application.properties 配置文件:

Nacos-server 也是一個Spring Boot 項目,想要連接自己的數(shù)據(jù)庫,當(dāng)然要配置數(shù)據(jù)源了,配置文件同樣在 Nacos-server 中的 conf 目錄下,如下圖:

只需要將 application.properties 中的 Mysql 配置成自己的數(shù)據(jù)源并重啟 Nacos-server 即可 ,如下:

# 此項一定要啟用,默認(rèn)是注釋掉的
spring.datasource.platform=mysql
 
# 注意MySQL8.0以上版本指定url時一定要帶入serverTimezone參數(shù)
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?serverTimezone=Asia/Shanghai&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
# 可選啟用配置
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false

3.2、Nacos 集群化部署:

Nacos 官方推薦在生產(chǎn)環(huán)境使用集群模式部署,這樣可以避免單點故障,集群化部署的架構(gòu)圖如下:

? 請求先通過 Nginx 集群進行轉(zhuǎn)發(fā)到 Nacos 集群中,當(dāng)然為了保持高可用,數(shù)據(jù)庫也需要是集群模式。那么接下來我們就演示下搭建 Nacos 集群的方法。

? 由于條件限制,我們僅在一臺服務(wù)器上啟動三個Nacos服務(wù)演示。Nacos的端口分別為8848、8849、8850。

(1)修改端口號:

? Nacos 默認(rèn)的端口號是 8848,那么如何修改端口呢?只需要修改 conf 目錄下的 application.properties 中的 server.port 即可,如下圖:

(2)修改集群配置:

那么如何配置集群呢?在 conf 目錄下有一個 cluster.conf.example 文件,如下圖:

只需要將 cluster.conf.example 這個文件復(fù)制一份為 cluster.conf 放在 conf 目錄下,其中配置的內(nèi)容如下:

172.16.1.84:8848
172.16.1.84:8849
172.16.1.84:8850

(3)修改數(shù)據(jù)源:

這個在持久化的那里已經(jīng)講過了,只需要將 application.properties 中的數(shù)據(jù)源替換掉,如下:

# 此項一定要啟用,默認(rèn)是注釋掉的
spring.datasource.platform=mysql
 
# 注意MySQL8.0以上版本指定url時一定要帶入serverTimezone參數(shù)
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?serverTimezone=Asia/Shanghai&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
 
# 可選啟用配置
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false

(4)啟動Nacos:

經(jīng)過上述的步驟 Nacos 集群已經(jīng)配置好了,啟動 Nacos 成功后,訪問任意一個端口的 Nacos 服務(wù),在 “集群管理->節(jié)點列表” 中將會看到自己搭建的三個節(jié)點,如下圖:

至此,Nacos集群算是搭建完成了

(5)Nginx 中的配置:

此處就不演示Nginx集群搭建了,直接在單機的Nginx中配置。直接修改nginx的conf文件,內(nèi)容如下:

upstream nacos{
		server 172.16.1.84:8848;
		server 172.16.1.84:8849;
		server 172.16.1.84:8850;
	 }
	 
	 server{
		listen 80;
		location / {
			proxy_pass http://nacos;
		}
	 }

(6)項目中配置 server-addr:

既然搭建了集群,那么項目中也要配置一下,有兩種方式,下面分別介紹:

第一種:通過直連的方式配置,如下:

spring:
  application:
    ## 指定服務(wù)名稱,在nacos中的名字
    name: cloud-producer-server
  cloud:
    nacos:
      discovery:
        # nacos的服務(wù)地址,nacos-server中IP地址:端口號
        server-addr: 172.16.1.84:8848,172.16.1.84:8849,172.16.1.84:8850

第二種:直接連接Nginx,如下:

spring:
  application:
    ## 指定服務(wù)名稱,在nacos中的名字
    name: cloud-producer-server
  cloud:
    nacos:
      discovery:
        # nacos的服務(wù)地址,nacos-server中IP地址:端口號
        server-addr: 172.16.1.84:80

Nacos 集群搭建非常簡單,唯一的配置就是在 cluster.conf 中設(shè)置三個 Nacos 服務(wù)的地址。

參考文章:

微服務(wù)為什么要有服務(wù)發(fā)現(xiàn)與注冊?

五十五張圖告訴你微服務(wù)的靈魂擺渡者Nacos究竟有多強?

到此這篇關(guān)于Nacos注冊中心的部署與用法詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Nacos注冊中心部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解SpringBoot如何使用Redis和Redis緩存

    詳解SpringBoot如何使用Redis和Redis緩存

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何使用Redis和Redis緩存,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)SpringBoot有一定的幫助,需要的可以參考一下
    2022-06-06
  • java實現(xiàn)監(jiān)控rtsp流轉(zhuǎn)flv方法實例(前端播放,前后端代碼都有)

    java實現(xiàn)監(jiān)控rtsp流轉(zhuǎn)flv方法實例(前端播放,前后端代碼都有)

    這篇文章主要給大家介紹了關(guān)于java實現(xiàn)監(jiān)控rtsp流轉(zhuǎn)flv的相關(guān)資料,文中介紹的是前端播放,前后端代碼都有,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Java abstract class 與 interface對比

    Java abstract class 與 interface對比

    這篇文章主要介紹了 Java abstract class 與 interface對比的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Spring實現(xiàn)一個簡單的SpringIOC容器

    Spring實現(xiàn)一個簡單的SpringIOC容器

    本篇文章主要介紹了Spring實現(xiàn)一個簡單的SpringIOC容器,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • java輸入數(shù)字,輸出倒序的實例

    java輸入數(shù)字,輸出倒序的實例

    這篇文章主要介紹了java輸入數(shù)字,輸出倒序的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java?SWT中常見彈出框?qū)嵗偨Y(jié)

    Java?SWT中常見彈出框?qū)嵗偨Y(jié)

    剛開始寫Java工具的小伙伴可能不知道怎么寫消息對話框,在這里總結(jié)一些常用的幾種消息彈出框,下面這篇文章主要給大家介紹了關(guān)于Java?SWT中常見彈出框的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • springboot項目中的bootstrap.yml配置不生效的原因及解決(沒有自動提示)

    springboot項目中的bootstrap.yml配置不生效的原因及解決(沒有自動提示)

    新創(chuàng)建一個 springboot項目,添加了 bootstrap.yml 文件,發(fā)現(xiàn)文件并沒有如預(yù)期變成綠色葉子,編寫的時候也沒有自動提示,啟動的時候,發(fā)現(xiàn)端口是8080,由此發(fā)現(xiàn)配置并沒有生效,所以本文給大家講解了springboot項目中的bootstrap.yml配置不生效的原因及解決
    2024-01-01
  • Java 中引入內(nèi)部類的意義?

    Java 中引入內(nèi)部類的意義?

    這篇文章主要介紹了Java 中引入內(nèi)部類的意義?文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • Java中死鎖產(chǎn)生的原因有哪些?

    Java中死鎖產(chǎn)生的原因有哪些?

    這篇文章主要介紹了Java中死鎖產(chǎn)生的原因有哪些?死鎖即Dead?Lock指的是兩個或兩個以上的運算單元,下文關(guān)于其產(chǎn)生的原因,需要的小伙伴可以參考一下
    2022-05-05
  • springboot 如何重定向redirect 并隱藏參數(shù)

    springboot 如何重定向redirect 并隱藏參數(shù)

    這篇文章主要介紹了springboot 如何重定向redirect 并隱藏參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論