<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          分布式動(dòng)態(tài)配置后浪推前浪 -- Nacos

          共 3971字,需瀏覽 8分鐘

           ·

          2021-06-13 07:51

          Spring Boot 作為主流微服務(wù)框架,擁有非常多的開發(fā)者。為了提升大家工作效率

          整理個(gè)《專輯系列》,快速集成各大主流中間件框架

          如:Mybatis、druid、Data JPA、Redis、Sharding-sphere、Guava、Caffeine、Ehcache、ElasticSearch、Kafka、Pulsar、Apollo、Nacos、OkHttp、HttpClient、gRPC、Dubbo、Seata 等等,

          感興趣請關(guān)注公眾號 ---《微觀技術(shù)》

          ?? 前言

          Nacos 是阿里巴巴的開源的項(xiàng)目,全稱 Naming Configuration Service ,專注于服務(wù)發(fā)現(xiàn)和配置管理領(lǐng)域。

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

          客戶端語言方面目前支持 Java,go 、python、 C# 和 C++等主流語言

          開源地址:https://github.com/alibaba/nacos


          目前 Github上已經(jīng)有近 18K 的 start,又有阿里巴巴復(fù)雜的業(yè)務(wù)做背書,在開源市場非常受歡迎。最近一次 commits 時(shí)間在2021年5月6日,社區(qū)維護(hù)投入力度很大,一些bug也能及時(shí)修復(fù)。

          ?? 核心功能

          1、動(dòng)態(tài)配置服務(wù)

          動(dòng)態(tài)配置服務(wù)讓您能夠以中心化、外部化和動(dòng)態(tài)化的方式管理所有環(huán)境的配置。動(dòng)態(tài)配置消除了配置變更時(shí)重新部署應(yīng)用和服務(wù)的需要。配置中心化管理讓實(shí)現(xiàn)無狀態(tài)服務(wù)更簡單,也讓按需彈性擴(kuò)展服務(wù)更容易。


          2、服務(wù)發(fā)現(xiàn)及管理

          動(dòng)態(tài)服務(wù)發(fā)現(xiàn)對以服務(wù)為中心的(例如微服務(wù)和云原生)應(yīng)用架構(gòu)方式非常關(guān)鍵。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服務(wù)發(fā)現(xiàn)。Nacos也提供實(shí)時(shí)健康檢查,以防止將請求發(fā)往不健康的主機(jī)或服務(wù)實(shí)例。借助Nacos,您可以更容易地為您的服務(wù)實(shí)現(xiàn)斷路器。


          3、動(dòng)態(tài)DNS服務(wù)

          通過支持權(quán)重路由,動(dòng)態(tài)DNS服務(wù)能讓您輕松實(shí)現(xiàn)中間層負(fù)載均衡、更靈活的路由策略、流量控制以及簡單數(shù)據(jù)中心內(nèi)網(wǎng)的簡單DNS解析服務(wù)。動(dòng)態(tài)DNS服務(wù)還能讓您更容易地實(shí)現(xiàn)以DNS協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn),以消除耦合到廠商私有服務(wù)發(fā)現(xiàn)API上的風(fēng)險(xiǎn)。

          ?? Nacos 2.x 優(yōu)點(diǎn)

          在Nacos 1.X 基礎(chǔ)上,對通訊層做了優(yōu)化,目前采用了gRPC實(shí)現(xiàn)了長連接和配置推動(dòng),使用長鏈接的好處大幅度減少了 1.x 輪詢心跳頻繁導(dǎo)致 JVM Full GC。

          1、客戶端不再需要定時(shí)發(fā)送實(shí)例心跳,只需要有一個(gè)維持連接可用 keepalive 消息即可。重復(fù) TPS 可以大幅降低。

          2、TCP 連接斷開可以被快速感知到,提升反應(yīng)速度。

          3、長連接的流式推送,比 UDP 更加可靠;nio 的機(jī)制具有更高的吞吐量,而且由于可靠推送,可以加長客戶端用于對賬服務(wù)列表的時(shí)間,甚至刪除相關(guān)的請求。重復(fù)的無效 QPS 可以大幅降低。

          4、長連接避免頻繁連接開銷,可以大幅緩解 TIME_WAIT 問題。

          5、真實(shí)的長連接,解決配置模塊 GC 問題。

          6、更細(xì)粒度的同步內(nèi)容,減少服務(wù)節(jié)點(diǎn)間的通信壓力。

          ?? Show me the code

          外部依賴:

          Spring Boot 已經(jīng)為 Nacos 封裝了starter組件,只需在 pom.xml 文件中添加jar版本依賴即可:

          <dependency>
              <groupId>com.alibaba.boot</groupId>
              <artifactId>nacos-config-spring-boot-starter</artifactId>
              <version>0.2.1</version>
          </dependency>
          <dependency>
              <groupId>com.alibaba.boot</groupId>
              <artifactId>nacos-config-spring-boot-actuator</artifactId>
              <version>0.2.1</version>
          </dependency>

          配置文件:

          在配置文件 application.yaml 中配置 Nacos 的相關(guān)參數(shù),具體內(nèi)容如下:

          nacos:
            config:
              server-addr: 127.0.0.1:8848

          就像Maven用groupIdartifactIdversion三者來定位一個(gè)jar包在倉庫中的位置一樣。Nacos也提供了 Namespace (命名空間) 、Data ID (配置集ID)、 Group (組) 來確定一個(gè)配置文件。

          StartApplication 啟動(dòng)類,添加dataId:

          @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
                  DataSourceTransactionManagerAutoConfiguration.class})
          @NacosPropertySource(dataId = "bulking-nacos-example", autoRefreshed = true)
          public class StartApplication {

              public static void main(String[] args) {
                  SpringApplication.run(StartApplication.class, args);
              }
          }

          nacos提供了注解方式,實(shí)時(shí)動(dòng)態(tài)獲取配置項(xiàng)最新值

          @Controller
          @RequestMapping("config")
          public class ConfigController {

              @NacosValue(value = "${useLocalCache}", autoRefreshed = true)
              private boolean useLocalCache;

              @RequestMapping(value = "/get", method = GET)
              @ResponseBody
              public boolean get() {
                  return useLocalCache;
              }
          }

          ?? 操作演示

          管理后臺:

          Nacos是一個(gè)用Java語言編寫的web項(xiàng)目,Tomcat默認(rèn)端口是8848,訪問8848端口可以打開Nacos管理臺。訪問地址:http://localhost:8848/nacos/#/login

          用戶名和密碼:nacos/nacos

          新增動(dòng)態(tài)配置

          當(dāng)應(yīng)用啟動(dòng)時(shí),會(huì)將當(dāng)前節(jié)點(diǎn)注冊到nacos中

          首次訪問:http://localhost:9071/config/get

          返回結(jié)果:

          true

          將nacos中 Data Idbulking-nacos-example 中的 useLocalCache 設(shè)置成false

          演示工程在不重啟的情況下,能實(shí)時(shí)感知配置項(xiàng)的變化。

          ?? 工程代碼

          https://github.com/aalansehaiyang/spring-boot-bulking  


          模塊:spring-boot-bulking-naco


          推薦閱讀:
          億級系統(tǒng)的Redis緩存如何設(shè)計(jì)
          學(xué)會(huì)這10個(gè)設(shè)計(jì)原則,離架構(gòu)師又進(jìn)一步
          知乎高贊:為什么Kafka需要Leader而Redis不需要
          由淺入深逐步講解Java并發(fā)的半壁江山AQS
          再有人問你MySQL索引原理,就把這篇文章甩給他!

          關(guān)互聯(lián)網(wǎng)全棧架構(gòu)價(jià)

          瀏覽 63
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  懂色av蜜臀av粉嫩av分 麻豆的视频高清在线观看完整 | 最新成人美女视频 | 中文字幕不卡一区 | 色播婷婷五月 | 99XXX精品视频 |