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

如何用nacos搭建微服務(wù)注冊配置中心

 更新時間:2024年05月13日 10:08:39   作者:日常500  
這篇文章主要介紹了如何用nacos搭建微服務(wù)注冊配置中心問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

之前微服務(wù)的注冊配置用的是Eureka,因?yàn)镋ureka已經(jīng)停止更新了,所以這篇我們簡單聊一下阿里的Nacos,比較基礎(chǔ),僅供學(xué)習(xí)用。

一、Nacos是什么?

Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您快速實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。摘自官網(wǎng)文檔(狗頭)。

Nacos官網(wǎng)文檔:Nacos文檔

二、部署Nacos

1.下載安裝

下載(圖例):

下載圖例

點(diǎn)擊上圖中的url會跳轉(zhuǎn)到GitHub,選擇對應(yīng)的Windows或者linux的版本下載即可,我這里使用的Windows系統(tǒng),下載.zip文件

下載圖例

2.啟動服務(wù)

下載解壓后對應(yīng)有bin、conf、log等目錄,我們進(jìn)去bin目錄直接雙擊擊startup.cmd文件啟動服務(wù)會發(fā)現(xiàn)報(bào)錯,因?yàn)閚acos還需要進(jìn)行部署

其部署方式有三種:單機(jī)模式、集群模式、多集群模式(來自官網(wǎng)文檔)

這里我們?yōu)榱撕唵蔚膶W(xué)習(xí)和使用,部署單機(jī)模式。

3.單機(jī)模式的部署

1)在自己的mysql數(shù)據(jù)庫中新建一個數(shù)據(jù)庫,名字為nacos

2)在nacos數(shù)據(jù)庫下執(zhí)行在剛解壓的conf目錄下的nacos-mysql.sql文件,會添加一些表

3)修改conf目錄下的application.properties,內(nèi)容如下(即連接mysql數(shù)據(jù)庫的連接配置):

### Count of DB:
db.num=1
### Connect URL of DB:
db.url=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456

4)修改bin目錄下的startup.cmd文件,內(nèi)容如下(修改nacos的部署模式為單機(jī)模式):

set MODE="standalone"

5)都配置完成后再次雙擊擊bin目錄下的startup.cmd啟動服務(wù)看是否能成功啟動,nacos的默認(rèn)端口是:8848,然后訪問http://localhost:8848/nacos/index.html并以用戶名密碼都為nacos登錄進(jìn)去就可以進(jìn)行服務(wù)的配置和注冊。

成功啟動截圖

成功啟動截圖

成功訪問截圖

成功訪問截圖

三、服務(wù)注冊

1.注冊生產(chǎn)者(用來提供遠(yuǎn)程訪問接口的服務(wù))

使用idea新建一個項(xiàng)目springboot項(xiàng)目,然后在項(xiàng)目下新建一個名為providerser模塊作為一個生產(chǎn)者微服務(wù),maven依賴如下:

	<properties>
			<java.version>1.8</java.version>
			<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
		</properties>
	<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
	</dependency>
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	</dependency>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
		<exclusions>
			<exclusion>
				<groupId>org.junit.vintage</groupId>
				<artifactId>junit-vintage-engine</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
</dependencies>
<dependencyManagement>
		<dependencies>
			<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>

在application.properties的配置如下:

##服務(wù)提供者server provider
server.port=8081
spring.application.name=providerser
##nacos注冊中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#允許其他服務(wù)通過注冊中心發(fā)現(xiàn)該服務(wù)#
eureka.instance.prefer-ip-address= true

在啟動類上添加注解@EnableDiscoveryClient進(jìn)行服務(wù)注冊:

##服務(wù)提供者server provider
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderserApplication {
	public static void main(String[] args) {
		SpringApplication.run(ProviderserApplication.class, args);
	}
}

新建一個controller類,在類中寫一個供遠(yuǎn)程訪問的接口(正常的接口即可):

@RestController
@Slf4j
@RequestMapping("/provider")
public class ProviderController {
    @RequestMapping(value="/getUserList")
    public List<String> getUserList(){
        log.info("開始調(diào)用start");
        List<String> result=new ArrayList<>();
        result.add("test1");
        result.add("test2");
        result.add("test3");
        result.add("test4");
        result.add("test5");
        result.add("test6");
        log.info("調(diào)用end");
        return  result;
    }
}

成功啟動該模塊后會自動在nacos中注冊該服務(wù),在nacos的服務(wù)管理下的服務(wù)列表中可查看到,如圖:

注冊生產(chǎn)者

2.注冊消費(fèi)者(用來遠(yuǎn)程訪問接口的服務(wù))

同樣在項(xiàng)目下新建一個名為consumerser模塊作為一個消費(fèi)者微服務(wù),maven依賴如下:

	<properties>
			<java.version>1.8</java.version>
			<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
		</properties>
	<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
       </dependency>
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
       </dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-openfeign</artifactId>
		<version>2.2.3.RELEASE</version>
	</dependency>
       <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
		<exclusions>
			<exclusion>
				<groupId>org.junit.vintage</groupId>
				<artifactId>junit-vintage-engine</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
</dependencies>
<dependencyManagement>
		<dependencies>
			<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>

在application.properties的配置如下:

server.port=8082
spring.application.name=consumerser
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

在啟動類上添加注解@EnableDiscoveryClient進(jìn)行服務(wù)注冊,同時添加@EnableFeignClients注解(采用Feign進(jìn)行遠(yuǎn)程接口訪問):

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

寫遠(yuǎn)程訪問接口,類似service層,這里指向的是生產(chǎn)者對應(yīng)的接口(即遠(yuǎn)程訪問生產(chǎn)者的接口):

//這里寫遠(yuǎn)程調(diào)用服務(wù)注冊的服務(wù)名(spring.application.name中配置的內(nèi)容)
@FeignClient(value="providerser")
public interface UserApi {
    //這里寫要調(diào)用的遠(yuǎn)程服務(wù)接口
    @RequestMapping(value = "/provider/getUserList",method = RequestMethod.POST)
    List<String> getFeignList();
}

寫遠(yuǎn)程訪問接口,controller層:

@RestController
@RequestMapping(value = "/remoteApi")
public class ConsumerController {
    @Autowired
    private UserApi UserApi;
    @RequestMapping("/getFeignList")
    public List<String> getFeignList(){
        return this.UserApi.getFeignList();
    }
}

同樣的,成功啟動該模塊后會自動在nacos中注冊該服務(wù),在nacos的服務(wù)管理下的服務(wù)列表中同樣可查看到,如圖:

成功注冊的服務(wù)

使用postman測試,調(diào)用消費(fèi)者微服務(wù)的接口,然后消費(fèi)者會遠(yuǎn)程調(diào)用生產(chǎn)者的接口返回的數(shù)據(jù):

調(diào)用消費(fèi)者接口

四、配置管理

當(dāng)服務(wù)數(shù)量超過一定程度之后,如果需要在每個服務(wù)里面分別維護(hù)每一個服務(wù)的配置文件,運(yùn)維人員估計(jì)要哭了。

如下圖所示,你所有的配置文件都會在配置列表里面,我們這里配置好后,直接可以啟用一個訪問配置的服務(wù),通過接口獲取到對應(yīng)配置文件的所有內(nèi)容。

也可以直接進(jìn)入這個頁面進(jìn)行實(shí)時遠(yuǎn)程的更改。

配置列表

1.管理配置

就不需要過多介紹了,直接在上圖對對應(yīng)的配置文件進(jìn)行增刪改查操作就ok。

點(diǎn)加號進(jìn)行配置,配置成功后如下圖:

配置內(nèi)容

2.訪問配置

在項(xiàng)目再下新建一個名為configser模塊作為一個配置文件訪問服務(wù),maven依賴如下:

	<properties>
			<java.version>1.8</java.version>
			<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
		</properties>
	<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-openfeign</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
		<exclusions>
			<exclusion>
				<groupId>org.junit.vintage</groupId>
				<artifactId>junit-vintage-engine</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		<version>0.2.1.RELEASE</version>
	</dependency>
</dependencies>
<dependencyManagement>
		<dependencies>
			<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>

在application.properties的配置如下:

spring.profiles.active=dev
server.port=8083

新建一個文件bootstrap.properties,配置內(nèi)容如下:

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=configser
spring.cloud.nacos.config.file-extension=properties
management.endpoints.web.exposure.include=*

寫訪問配置文件內(nèi)容的接口,controller層:

@RestController
@RequestMapping("/config")
//修改后能自動根據(jù)修改進(jìn)行刷新注解
@RefreshScope
public class ConfigController {
    @Value("${useLocalCache}")
    private String useLocalCache;
    @RequestMapping("/get")
    public String getConfigSet(){
        return useLocalCache;
    }
}

使用postman測試,調(diào)用配置服務(wù)的接口,會返回之前在配置中心中配置好的數(shù)據(jù)useLocalCache的值,如圖:

獲取配置內(nèi)容

總結(jié)

好的,對nacos的簡單介紹到此結(jié)束,我其實(shí)也是為了對微服務(wù)的進(jìn)一步的學(xué)習(xí)和加深理解!

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java8列表中通過stream流根據(jù)對象屬性去重的三種方式

    java8列表中通過stream流根據(jù)對象屬性去重的三種方式

    這篇文章主要介紹了java8列表中通過stream流根據(jù)對象屬性去重的三種方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Spring MVC創(chuàng)建項(xiàng)目踩過的bug

    Spring MVC創(chuàng)建項(xiàng)目踩過的bug

    這篇文章主要介紹了Spring MVC創(chuàng)建項(xiàng)目踩過的bug,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java Map 按key排序和按Value排序的實(shí)現(xiàn)方法

    Java Map 按key排序和按Value排序的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄狫ava Map 按key排序和按Value排序的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • 關(guān)于Java三大特性之多態(tài)的總結(jié)

    關(guān)于Java三大特性之多態(tài)的總結(jié)

    這篇文章主要介紹了關(guān)于Java三大特性之多態(tài)的總結(jié),內(nèi)容詳細(xì),涉及多態(tài)的定義,存在條件,好處,分類及實(shí)現(xiàn)方式等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • mybatis-plus 通用字段自動化(如邏輯刪除和更新時間等)

    mybatis-plus 通用字段自動化(如邏輯刪除和更新時間等)

    這篇文章主要介紹了mybatis-plus 通用字段自動化(如邏輯刪除和更新時間等),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java中創(chuàng)建線程的兩種方式詳細(xì)說明

    Java中創(chuàng)建線程的兩種方式詳細(xì)說明

    這篇文章主要介紹了Java中創(chuàng)建線程的兩種方式詳細(xì)說明,Java使用java.lang.Thread類代表線程,所有的線程對象都必須是Thread類或其子類的實(shí)例,每個線程的作用是完成一定的任務(wù),實(shí)際上就是執(zhí)行一段程序流即一段順序執(zhí)行的代碼,需要的朋友可以參考下
    2023-11-11
  • Java中的WeakHashMap淺析

    Java中的WeakHashMap淺析

    這篇文章主要介紹了Java中的WeakHashMap淺析,weakhashmap關(guān)鍵是:當(dāng)一個對象被GC回收時,響應(yīng)的值對象的引用從map中刪除,weakhashmap能節(jié)約存儲空間,來實(shí)現(xiàn)緩存那些非必要的數(shù)據(jù),需要的朋友可以參考下
    2023-09-09
  • SpringBoot集成JWT令牌詳細(xì)說明

    SpringBoot集成JWT令牌詳細(xì)說明

    這篇文章主要介紹了SpringBoot集成JWT令牌詳細(xì)說明,JWT方式校驗(yàn)方式更加簡單便捷化,無需通過redis緩存,而是直接根據(jù)token取出保存的用戶信息,以及對token可用性校驗(yàn),單點(diǎn)登錄,驗(yàn)證token更為簡單,需要的朋友可以參考下
    2023-10-10
  • java適配器模式之萬物擬人化

    java適配器模式之萬物擬人化

    本文詳細(xì)介紹了什么是適配器模式,適配器模式的種類以及各種類的詳細(xì)講解等,需要學(xué)習(xí)該知識點(diǎn)的小伙伴可以參考這篇文章
    2021-08-08
  • JAVA生成xml文件簡單示例

    JAVA生成xml文件簡單示例

    這篇文章主要介紹了JAVA生成xml文件的相關(guān)資料,在Java中可以使用DOM或者JDOM來生成XML文件,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07

最新評論