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

淺析Alibaba Nacos注冊中心源碼剖析

 更新時間:2021年05月10日 10:51:39   作者:PoetryAndTheDistance  
這篇文章主要介紹了淺析Alibaba Nacos注冊中心源碼剖析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Nacos&Ribbon&Feign核心微服務(wù)架構(gòu)圖

0

架構(gòu)原理

  1. 微服務(wù)系統(tǒng)在啟動時將自己注冊到服務(wù)注冊中心,同時外發(fā)布 Http 接口供其它系統(tǒng)調(diào)用(一般都是基于Spring MVC)
  2. 服務(wù)消費者基于 Feign 調(diào)用服務(wù)提供者對外發(fā)布的接口,先對調(diào)用的本地接口加上注解@FeignClient,F(xiàn)eign會針對加了該注解的接口生成動態(tài)代理,服務(wù)消費者針對 Feign 生成的動態(tài)代理去調(diào)用方法時,會在底層生成Http協(xié)議格式的請求,類似 /stock/deduct?productId=100
  3. Feign 最終會調(diào)用Ribbon從本地的Nacos注冊表的緩存里根據(jù)服務(wù)名取出服務(wù)提供在機(jī)器的列表,然后進(jìn)行負(fù)載均衡并選擇一臺機(jī)器出來,對選出來的機(jī)器IP和端口拼接之前生成的url請求,生成調(diào)用的Http接口地址 http://192.168.0.60:9000/stock/deduct?productId=100,最后基于HTTPClient調(diào)用請求

Nacos架構(gòu)圖

0

Nacos核心功能點

服務(wù)注冊:Nacos Client會通過發(fā)送REST請求的方式向Nacos Server注冊自己的服務(wù),提供自身的元數(shù)據(jù),比如ip地址、端口等信息。Nacos Server接收到注冊請求后,就會把這些元數(shù)據(jù)信息存儲在一個雙層的內(nèi)存Map中。

服務(wù)心跳:在服務(wù)注冊后,Nacos Client會維護(hù)一個定時心跳來持續(xù)通知Nacos Server,說明服務(wù)一直處于可用狀態(tài),防止被剔除。默認(rèn)5s發(fā)送一次心跳。

服務(wù)健康檢查:Nacos Server會開啟一個定時任務(wù)用來檢查注冊服務(wù)實例的健康情況,對于超過15s沒有收到客戶端心跳的實例會將它的healthy屬性置為false(客戶端服務(wù)發(fā)現(xiàn)時不會發(fā)現(xiàn)),如果某個實例超過30秒沒有收到心跳,直接剔除該實例(被剔除的實例如果恢復(fù)發(fā)送心跳則會重新注冊)

服務(wù)發(fā)現(xiàn):服務(wù)消費者(Nacos Client)在調(diào)用服務(wù)提供者的服務(wù)時,會發(fā)送一個REST請求給Nacos Server,獲取上面注冊的服務(wù)清單,并且緩存在Nacos Client本地,同時會在Nacos Client本地開啟一個定時任務(wù)定時拉取服務(wù)端最新的注冊表信息更新到本地緩存

服務(wù)同步:Nacos Server集群之間會互相同步服務(wù)實例,用來保證服務(wù)信息的一致性。

Nacos核心功能源碼架構(gòu)圖

0

Nacos服務(wù)注冊表結(jié)構(gòu):Map

<namespace, Map<group::serviceName, Service>>

0

舉例說明:

0

Nacos服務(wù)端源碼單機(jī)運行

# 下載nacos源碼
git clone https://github.com/alibaba/nacos.git

選擇Tag 1.4.1版本

源碼整體結(jié)構(gòu)(注意,nacos源碼導(dǎo)入要求maven 3.2.5以上版本):

0

1、源碼單機(jī)運行:

直接運行console模塊里的 com.alibaba.nacos.Nacos.java

# 增加啟動vm參數(shù)
-Dnacos.standalone=true

0

2、源碼集群運行(啟動流程參見視頻):

nacos集群需要配置mysql存儲,需要先創(chuàng)建一個數(shù)據(jù),名字隨便取,然后執(zhí)行 distribution/conf 目錄下的 nacos-mysql.sql 腳本,然后修改 console\src\main\resources 目錄下的 application.properties 文件里的mysql配置,如下所示

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

運行console模塊里的 com.alibaba.nacos.Nacos.java,需要增加啟動vm參數(shù)端口號和實例運行路徑nacos.home(對應(yīng)的目錄需要自己提前創(chuàng)建好),每臺server的nacos.home目錄里需要創(chuàng)建一個conf文件夾,里面放一個cluster.conf文件,文件里需要把所有集群機(jī)器ip和端口寫入進(jìn)去,見下圖:

0

0

0

0

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

相關(guān)文章

  • MyBatis不同Mapper文件引用resultMap實例代碼

    MyBatis不同Mapper文件引用resultMap實例代碼

    這篇文章主要介紹了mybatis 不同Mapper文件引用resultMap的實例代碼,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2017-07-07
  • java驗證碼生成具體代碼

    java驗證碼生成具體代碼

    這篇文章主要為大家分享了java驗證碼生成具體代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 使用Spring?Security搭建極簡的安全網(wǎng)站教程

    使用Spring?Security搭建極簡的安全網(wǎng)站教程

    這篇文章主要為大家介紹了使用Spring?Security搭建極簡的安全網(wǎng)站教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java編程技巧:if-else優(yōu)化實踐總結(jié)歸納

    Java編程技巧:if-else優(yōu)化實踐總結(jié)歸納

    這篇文章主要介紹了Java中避免過多if-else的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2021-06-06
  • Mybatis使用useGeneratedKeys獲取自增主鍵

    Mybatis使用useGeneratedKeys獲取自增主鍵

    這篇文章主要為大家介紹了Mybatis使用useGeneratedKeys獲取自增主鍵示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • java不用循環(huán)語句打印數(shù)組元素的實例

    java不用循環(huán)語句打印數(shù)組元素的實例

    下面小編就為大家?guī)硪黄猨ava不用循環(huán)語句打印數(shù)組元素的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 詳解idea從git上拉取maven項目詳細(xì)步驟

    詳解idea從git上拉取maven項目詳細(xì)步驟

    這篇文章主要介紹了詳解idea從git上拉取maven項目詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java遍歷HashMap簡單的方法

    java遍歷HashMap簡單的方法

    這篇文章主要介紹了java遍歷HashMap簡單的方法,以實例形式簡單分析了采用java遍歷HashMap的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • JAVA 格式化JSON數(shù)據(jù)并保存到j(luò)son文件中的實例

    JAVA 格式化JSON數(shù)據(jù)并保存到j(luò)son文件中的實例

    這篇文章主要介紹了JAVA 格式化JSON數(shù)據(jù)并保存到j(luò)son文件中的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • IDEA?2022?中的Lombok?使用基礎(chǔ)教程

    IDEA?2022?中的Lombok?使用基礎(chǔ)教程

    ? Lombok是使用java編寫的一款開源類庫。其主作用是使用注解來代替一些具有格式固定,沒有過多技術(shù)含量的編碼工作,這篇文章主要介紹了IDEA?2022?中的Lombok?使用基礎(chǔ)教程,需要的朋友可以參考下
    2022-12-12

最新評論