国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微服務(wù)中間件--Nacos

這篇具有很好參考價(jià)值的文章主要介紹了微服務(wù)中間件--Nacos。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. Nacos入門

Nacos是阿里巴巴的產(chǎn)品,現(xiàn)在是SpringCloud中的一個(gè)組件。相比Eureka功能更加豐富,在國(guó)內(nèi)受歡迎程度較高。

  • 在bin目錄下windows命令:

    startup.cmd -m standalone
    

執(zhí)行后的效果如圖:

a.服務(wù)注冊(cè)到Nacos

1.在cloud-demo父工程中添加spring-cloud-alilbaba的管理依賴

父工程:

<!--Nacos的管理依賴-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

客戶端:

<!-- nacos客戶端依賴包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.注釋掉order-service和user-service中原有的eureka依賴。

3.添加nacos的客戶端依賴:

<!-- nacos客戶端依賴包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

4.修改user-service&order-service中的application.yml文件,注釋eureka地址,添加nacos地址:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

b.Nacos服務(wù)分級(jí)存儲(chǔ)模型

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

服務(wù)跨集群調(diào)用問題

  • 服務(wù)調(diào)用盡可能選擇本地集群的服務(wù),跨集群調(diào)用延遲較高
  • 本地集群不可訪問時(shí),再去訪問其它集群

1.修改application.yml,添加如下內(nèi)容:

spring:
    cloud:
        nacos:
          server-addr: localhost:8848 # nacos服務(wù)地址
          discovery:
            cluster-name: HZ # 集群名稱,HZ代指杭州

2.在Nacos控制臺(tái)可以看到集群變化:

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

c.NacosRule負(fù)載均衡

1.修改order-service中的application.yml,設(shè)置集群為HZ:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 配置集群名稱,也就是機(jī)房位置

2.然后在order-service中設(shè)置負(fù)載均衡的IRule為NacosRule,這個(gè)規(guī)則優(yōu)先會(huì)尋找與自己同集群的服務(wù):

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 負(fù)載均衡規(guī)則

d.服務(wù)實(shí)例的權(quán)重設(shè)置

實(shí)際部署中會(huì)出現(xiàn)這樣的場(chǎng)景:

  • 服務(wù)器設(shè)備性能有差異,部分實(shí)例所在機(jī)器性能較好,另一些較差,我們希望性能好的機(jī)器承擔(dān)更多的用戶請(qǐng)求

Nacos提供了權(quán)重配置來控制訪問頻率,權(quán)重越大則訪問頻率越高

1.在Nacos控制臺(tái)可以設(shè)置實(shí)例的權(quán)重值,首先選中實(shí)例后面的編輯按鈕

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

2.將權(quán)重設(shè)置為0.1,測(cè)試可以發(fā)現(xiàn)8081被訪問到的頻率大大降低

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

實(shí)例的權(quán)重控制

  • Nacos控制臺(tái)可以設(shè)置實(shí)例的權(quán)重值,0~1之間
  • 同集群內(nèi)的多個(gè)實(shí)例,權(quán)重越高被訪問的頻率越高
  • 權(quán)重設(shè)置為0則完全不會(huì)被訪問

e.環(huán)境隔離 - namespace

Nacos中服務(wù)存儲(chǔ)和數(shù)據(jù)存儲(chǔ)的最外層都是一個(gè)名為namespace的東西,用來做最外層隔離

  • 1.每個(gè)namespace都有唯一id
  • 2.服務(wù)設(shè)置namespace時(shí)要寫id而不是名稱
  • 3.不同namespace下的服務(wù)互相不可見

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

1.在Nacos控制臺(tái)可以創(chuàng)建namespace,用來隔離不同環(huán)境

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

2.然后填寫一個(gè)新的命名空間信息:

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

3.保存后會(huì)在控制臺(tái)看到這個(gè)命名空間的id:

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

4.修改order-service的application.yml,添加namespace:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 配置集群名稱,也就是機(jī)房位置
        namespace: 67d42554-fcf4-45e8-8ecf-bfa4467ed435 # dev環(huán)境(命名空間,填id)

5.重啟order-service后,再來查看控制臺(tái)

6.此時(shí)訪問order-service,因?yàn)閚amespace不同,會(huì)導(dǎo)致找不到userservice,控制臺(tái)會(huì)報(bào)錯(cuò):

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

f.Nacos和Eureka的對(duì)比

Nacos注冊(cè)中心細(xì)節(jié)分析

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

服務(wù)注冊(cè)到Nacos時(shí),可以選擇注冊(cè)為臨時(shí)或非臨時(shí)實(shí)例,通過下面的配置來設(shè)置:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 配置集群名稱,也就是機(jī)房位置
        namespace: 67d42554-fcf4-45e8-8ecf-bfa4467ed435 # dev環(huán)境(命名空間,填id)
        ephemeral: false # 是否是臨時(shí)實(shí)例

Nacos和Eureka的共同點(diǎn)

  • 1.都支持服務(wù)注冊(cè)和服務(wù)拉取
  • 2.都支持服務(wù)提供者心跳方式做監(jiān)控檢測(cè)

Nacos和Eureka的區(qū)別

  • 1.Nacos支持服務(wù)端主動(dòng)檢測(cè)提供者狀態(tài):臨時(shí)實(shí)例采用心跳模式,非臨時(shí)實(shí)例采用主動(dòng)檢測(cè)模式
  • 2.臨時(shí)實(shí)例心跳不正常會(huì)被剔除,非臨時(shí)實(shí)例則不會(huì)被剔除
  • 3.Nacos支持服務(wù)列表變更的消息推送模式,服務(wù)列表更新更及時(shí)
  • 4.Nacos集群默認(rèn)采用AP模式,當(dāng)集群中存在非臨時(shí)實(shí)例時(shí),采用CP模式;Eureka采用AP模式

2. Nacos配置管理

a.統(tǒng)一配置管理

統(tǒng)一配置管理

  • 配置更改熱更新

在Nacos中添加配置信息:

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

在彈出表單中填寫配置信息:

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

配置獲取的步驟如下:

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

與配置地址和nacos地址等信息都要放在bootstrap.yml中

1.引入Nacos的配置管理客戶端依賴:

<!--nacos配置管理依賴-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.在userservice中的resource目錄添加一個(gè)bootstrap.yml文件,這個(gè)文件是引導(dǎo)文件,優(yōu)先級(jí)高于application.yml:

spring:
  application:
    name: userservice # 服務(wù)名稱
  profiles:
    active: dev # 環(huán)境
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      config:
        file-extension: yaml # 文件后綴名

3.我們?cè)趗ser-service中將pattern.dateformat這個(gè)屬性注入到UserController中做測(cè)試:

@RestController
@RequestMapping("/user")
public class UserController {
    
    // 注入nacos中的配置屬性
    @Value("${pattern.dateformat}")
    private String dateformat;

    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
}

b.配置熱更新

Nacos中的配置文件變更后,微服務(wù)無需重啟就可以感知

不過需要通過下面兩種配置實(shí)現(xiàn):

  • 方式一:在@Value注入的變量所在類上添加注解@RefreshScope
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
    
    // 注入nacos中的配置屬性
    @Value("${pattern.dateformat}")
    private String dateformat;

    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
}
  • 方式二(推薦):使用@ConfigurationProperties注解

新建一個(gè)config/PatternProperties類,加入@ConfigurationProperties注解和前綴名

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private PatternProperties properties;

	@GetMapping("now")
    public String now(){
        return
LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));
    }

注意事項(xiàng):

  • 不是所有的配置都適合放到配置中心,維護(hù)起來比較麻煩
  • 建議將一些關(guān)鍵參數(shù),需要運(yùn)行時(shí)調(diào)整的參數(shù)放到nacos配置中心,一般都是自定義配置

c.多環(huán)境配置共享

微服務(wù)啟動(dòng)時(shí)會(huì)從nacos讀取多個(gè)配置文件:

  • [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml
  • [spring.application.name].yaml,例如:userservice.yaml

論profile如何變化,[spring.application.name].yaml這個(gè)文件一定會(huì)加載,因此多環(huán)境共享配置可以寫入這個(gè)文件

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud

多種配置的優(yōu)先級(jí):

  • 服務(wù)名-profile.yaml >服務(wù)名稱.yaml > 本地配置

微服務(wù)中間件--Nacos,微服務(wù)中間件,微服務(wù),中間件,架構(gòu),java,分布式,spring cloud文章來源地址http://www.zghlxwxcb.cn/news/detail-672605.html

到了這里,關(guān)于微服務(wù)中間件--Nacos的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java程序員面試專欄 分布式中間件】Redis 核心面試指引

    【Java程序員面試專欄 分布式中間件】Redis 核心面試指引

    關(guān)于Redis部分的核心知識(shí)進(jìn)行一網(wǎng)打盡,包括Redis的基本概念,基本架構(gòu),工作流程,存儲(chǔ)機(jī)制等,通過一篇文章串聯(lián)面試重點(diǎn),并且?guī)椭訌?qiáng)日?;A(chǔ)知識(shí)的理解,全局思維導(dǎo)圖如下所示 明確redis的特性、應(yīng)用場(chǎng)景和數(shù)據(jù)結(jié)構(gòu) Redis是一個(gè) 開源的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng)

    2024年02月20日
    瀏覽(17)
  • Java分布式微服務(wù)4——異步服務(wù)通訊(RabbitMQ)中間件

    Java分布式微服務(wù)4——異步服務(wù)通訊(RabbitMQ)中間件

    為什么需要異步調(diào)用? 故障隔離 :支付服務(wù)不負(fù)責(zé)調(diào)用其他三個(gè)服務(wù),只負(fù)責(zé)通知Broker支付成功這個(gè)事件,然后就返回結(jié)果,后面的服務(wù)故障了和前面發(fā)布事件的服務(wù)無關(guān),前面的服務(wù)發(fā)布完事件就結(jié)束了 吞吐量提升 :Broker將支付成功的事件廣播給訂閱了這個(gè)事件的那些服

    2024年02月13日
    瀏覽(28)
  • 分布式消息中間件概念

    分布式消息中間件概念

    ? ? 對(duì)于分布式消息中間件,首先要了解兩個(gè)基礎(chǔ)的概念,即什么是分布式系統(tǒng),什么又是中間件。 ? ? ? 分布式系統(tǒng) ? “A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messasges.”——《Distributed Systems Concepts and Desig

    2023年04月27日
    瀏覽(22)
  • 分布式消息中間件RocketMQ的應(yīng)用

    分布式消息中間件RocketMQ的應(yīng)用

    所有代碼同步至GitCode:https://gitcode.net/ruozhuliufeng/test-rocketmq.git 普通消息 消息發(fā)送分類 ? Producer對(duì)于消息的發(fā)送方式也有多種選擇,不同的方式會(huì)產(chǎn)生不同的系統(tǒng)效果。 同步發(fā)送消息 ? 同步發(fā)送消息是指,Producer發(fā)出一條消息后,會(huì)在收到MQ返回的ACK之后才發(fā)下一條消息。

    2024年02月05日
    瀏覽(21)
  • golang分布式中間件之kafka

    Kafka是一個(gè)分布式發(fā)布-訂閱消息系統(tǒng),由LinkedIn公司開發(fā)。它被設(shè)計(jì)為快速、可靠且具有高吞吐量的數(shù)據(jù)流平臺(tái),旨在處理大量的實(shí)時(shí)數(shù)據(jù)。Kafka的架構(gòu)是基于發(fā)布-訂閱模型構(gòu)建的,可以支持多個(gè)生產(chǎn)者和消費(fèi)者。 在本文中,我們將討論如何使用Go語言來實(shí)現(xiàn)Kafka分布式中間件

    2024年02月07日
    瀏覽(26)
  • Springcloud中間件-----分布式搜索引擎 Elasticsearch

    Springcloud中間件-----分布式搜索引擎 Elasticsearch

    該筆記是根據(jù)黑馬程序員的課來自己寫了一遍的,b站有對(duì)應(yīng)教程和資料 第一部分 第二部分 第三部分 預(yù)計(jì)看完跟著練習(xí)5小時(shí)足夠 1.1.1.elasticsearch的作用 elasticsearch是一款非常強(qiáng)大的開源搜索引擎,具備非常多強(qiáng)大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容 例如:

    2024年02月08日
    瀏覽(136)
  • ShardingSphere:強(qiáng)大的分布式數(shù)據(jù)庫中間件【圖文】

    ShardingSphere:強(qiáng)大的分布式數(shù)據(jù)庫中間件【圖文】

    Sharding-JDBC :它提供了一個(gè)輕量級(jí)的 Java 框架,在 Java 的 JDBC 層提供額外的服務(wù)。使用客戶端直連數(shù)據(jù)庫,以 jar 包形式提供服務(wù),無需額外部署和依賴,可理解為增強(qiáng)版的 JDBC 驅(qū)動(dòng),完全兼容 JDBC 和各種 ORM 框架。Sharding-JDBC主要用于嵌入到應(yīng)用程序中,使應(yīng)用程序能夠透明地

    2024年04月28日
    瀏覽(23)
  • 在CSDN學(xué)Golang分布式中間件(ElasticSearch)

    倒排索引是一種用于快速查找文本中特定單詞或短語的數(shù)據(jù)結(jié)構(gòu)。它將文本中的每個(gè)單詞或短語與包含該單詞或短語的文檔列表相關(guān)聯(lián)。這使得可以輕松地查找包含給定單詞或短語的所有文檔。 在 Go 中,可以使用 map 和 slice 來實(shí)現(xiàn)倒排索引。具體來說,可以使用一個(gè) map 將每

    2024年02月15日
    瀏覽(26)
  • 中間件系列 - Redis入門到實(shí)戰(zhàn)(高級(jí)篇-分布式緩存)

    中間件系列 - Redis入門到實(shí)戰(zhàn)(高級(jí)篇-分布式緩存)

    學(xué)習(xí)視頻: 黑馬程序員Redis入門到實(shí)戰(zhàn)教程,深度透析redis底層原理+redis分布式鎖+企業(yè)解決方案+黑馬點(diǎn)評(píng)實(shí)戰(zhàn)項(xiàng)目 中間件系列 - Redis入門到實(shí)戰(zhàn) 本內(nèi)容僅用于個(gè)人學(xué)習(xí)筆記,如有侵?jǐn)_,聯(lián)系刪除 學(xué)習(xí)目標(biāo) Redis持久化 Redis主從 Redis哨兵 Redis分片集群 - 基于Redis集群解決單機(jī)R

    2024年02月03日
    瀏覽(23)
  • XXL-JOB中間件【實(shí)現(xiàn)分布式任務(wù)調(diào)度】

    XXL-JOB中間件【實(shí)現(xiàn)分布式任務(wù)調(diào)度】

    目錄 1:XXL-JOB介紹 2:搭建XXL-JOB 2.1:調(diào)度中心 2.2:執(zhí)行器 2.3:執(zhí)行任務(wù) 3:分片廣播 XXL-JOB是一個(gè)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,開箱即用。 官網(wǎng):https://www.xuxueli.com/xxl-

    2024年02月03日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包