日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

微服務的版本號要怎么設計?你知道嗎?

來源: 責編: 時間:2024-07-09 07:01:21 843觀看
導讀今天我們來聊一下微服務項目中的版本號要怎么設計。小伙伴們平時看到的項目版本號,基本上都是分為了三部分 X.Y.Z,版本升級的時候版本號都會變,那么版本號怎么變,這可不是拍腦門決定的,今天我們就一起來探討一下這個話題。

今天我們來聊一下微服務項目中的版本號要怎么設計。ePQ28資訊網(wǎng)——每日最新資訊28at.com

小伙伴們平時看到的項目版本號,基本上都是分為了三部分 X.Y.Z,版本升級的時候版本號都會變,那么版本號怎么變,這可不是拍腦門決定的,今天我們就一起來探討一下這個話題。ePQ28資訊網(wǎng)——每日最新資訊28at.com

一、語義化版本控制規(guī)范

版本號該如何控制?其實是有一個標準規(guī)范的,規(guī)范地址:ePQ28資訊網(wǎng)——每日最新資訊28at.com

  • https://semver.org/lang/zh-CN/

這個規(guī)范非常友好的提供了中文版的內容。ePQ28資訊網(wǎng)——每日最新資訊28at.com

語義化的版本控制規(guī)范要求版本號由三部分構成:ePQ28資訊網(wǎng)——每日最新資訊28at.com

  • MAJOR(X):這個是主版本號,一般是涉及到不兼容的 API 更改時,這個會變化。
  • MINOR(Y):這個是次版本號,當我們對 API 進行向后兼容的增強時,這個版本號會變化,換句話說,也就是有新增的功能時,這里會變化。
  • PATCH(Z):這個是修訂號,當我們進行一些 BUG 的修復,然后要發(fā)版的時候,這里會發(fā)生變化。

語義化的版本控制規(guī)范主要做了如下一些要求:ePQ28資訊網(wǎng)——每日最新資訊28at.com

  1. 使用語義化版本控制的軟件必須(MUST)定義公共 API。該 API 可以在代碼中被定義或出現(xiàn)于嚴謹?shù)奈臋n內。無論何種形式都應該力求精確且完整。
  2. 標準的版本號必須(MUST)采用 X.Y.Z 的格式,其中 X、Y 和 Z 為非負的整數(shù),且禁止(MUST NOT)在數(shù)字前方補零。X 是主版本號、Y 是次版本號、而 Z 為修訂號。每個元素必須(MUST)以數(shù)值來遞增。例如:1.9.1 -> 1.10.0 -> 1.11.0。
  3. 標記版本號的軟件發(fā)行后,禁止(MUST NOT)改變該版本軟件的內容。任何修改都必須(MUST)以新版本發(fā)行。有的小伙伴可能會說我們的項目處于快速開發(fā)階段,API 不穩(wěn)定,天天變,要是按照這個要求來得發(fā)多少個版本才夠用呀!其實,一般 API 快速變化主要有兩種情況,一種是項目剛立項的時候,此時主版本號為 0,那么這個時候的 API 就不能算是穩(wěn)定的 API;另外一種情況則是下個主版本處于快速開發(fā)中,但是這種情況一般會有一個新的分支用來管理下個版本的代碼,所以和這里的要求實際上并不沖突(具體參見第 4、5 條)。
  4. 主版本號為零(0.y.z)的軟件處于開發(fā)初始階段,一切都可能隨時被改變。這樣的公共 API 不應該被視為穩(wěn)定版。
  5. 1.0.0 的版本號用于界定公共 API 的形成。這一版本之后所有的版本號更新都基于公共 API 及其修改內容。那么有的小伙伴可能會糾結什么時候版本號從 0.Y.Z 變?yōu)?1.Y.Z 呢?一般來說,當你的項目已經(jīng)上了生產(chǎn)環(huán)境或者說有穩(wěn)定的 API 提供給別人使用的時候,基本上就可以算是 1.Y.Z 了。
  6. 修訂號 Z(x.y.Z | x > 0)必須(MUST)在只做了向下兼容的修正時才遞增。這里的修正指的是針對不正確結果而進行的內部修改。
  7. 次版本號 Y(x.Y.z | x > 0)必須(MUST)在有向下兼容的新功能出現(xiàn)時遞增。在任何公共 API 的功能被標記為棄用時也必須(MUST)遞增。也可以(MAY)在內部程序有大量新功能或改進被加入時遞增,其中可以(MAY)包括修訂級別的改變。每當次版本號遞增時,修訂號必須(MUST)歸零。
  8. 主版本號 X(X.y.z | X > 0)必須(MUST)在有任何不兼容的修改被加入公共 API 時遞增。其中可以(MAY)包括次版本號及修訂級別的改變。每當主版本號遞增時,次版本號和修訂號必須(MUST)歸零。
  9. 先行版本號可以(MAY)被標注在修訂版之后,先加上一個連接號再加上一連串以句點分隔的標識符來修飾。標識符必須(MUST)由 ASCII 字母數(shù)字和連接號 [0-9A-Za-z-] 組成,且禁止(MUST NOT)留白。數(shù)字型的標識符禁止(MUST NOT)在前方補零。先行版的優(yōu)先級低于相關聯(lián)的標準版本。被標上先行版本號則表示這個版本并非穩(wěn)定而且可能無法滿足預期的兼容性需求。范例:1.0.0-alpha、1.0.0-alpha.1、1.0.0-0.3.7、1.0.0-x.7.z.92。
  10. 版本編譯信息可以(MAY)被標注在修訂版或先行版本號之后,先加上一個加號再加上一連串以句點分隔的標識符來修飾。標識符必須(MUST)由 ASCII 字母數(shù)字和連接號 [0-9A-Za-z-] 組成,且禁止(MUST NOT)留白。當判斷版本的優(yōu)先層級時,版本編譯信息可(SHOULD)被忽略。因此當兩個版本只有在版本編譯信息有差別時,屬于相同的優(yōu)先層級。范例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.sha.5114f85。
  11. 版本的優(yōu)先層級指的是不同版本在排序時如何比較。
  1. 只有數(shù)字的標識符以數(shù)值高低比較。
  2. 有字母或連接號時則逐字以 ASCII 的排序來比較。
  3. 數(shù)字的標識符比非數(shù)字的標識符優(yōu)先層級低。
  4. 若開頭的標識符都相同時,欄位比較多的先行版本號優(yōu)先層級比較高。例如:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0。
  5. 判斷優(yōu)先層級時,必須(MUST)把版本依序拆分為主版本號、次版本號、修訂號及先行版本號后進行比較(版本編譯信息不在這份比較的列表中)。
  6. 由左到右依序比較每個標識符,第一個差異值用來決定優(yōu)先層級:主版本號、次版本號及修訂號以數(shù)值比較。例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。
  7. 當主版本號、次版本號及修訂號都相同時,改以優(yōu)先層級比較低的先行版本號決定。例如:1.0.0-alpha < 1.0.0。
  8. 有相同主版本號、次版本號及修訂號的兩個先行版本號,其優(yōu)先層級必須(MUST)透過由左到右的每個被句點分隔的標識符來比較,直到找到一個差異值后決定:

二、微服務中的版本號

那么在微服務中,我們的版本號該怎么設計呢?ePQ28資訊網(wǎng)——每日最新資訊28at.com

首先,整體上的思路,就是按照上文所說的語義化版本控制規(guī)范來。ePQ28資訊網(wǎng)——每日最新資訊28at.com

其次,上面雖然給出了很多條條框框,然而我們實際開發(fā)中,一般只需要從以下幾個方面簡單考慮即可,每次發(fā)版的時候都去翻這個規(guī)范顯然也不現(xiàn)實:ePQ28資訊網(wǎng)——每日最新資訊28at.com

  1. 理想情況下,我們應該只進行向后兼容的更新。

我們要為項目添加新功能、新特性,我們必須要考慮到項目的兼容性。例如接口中新加了一個參數(shù),那么為了老版本的客戶端能夠順利訪問這個接口,服務端應該考慮為老版本客戶端缺少的請求參數(shù)提供一個默認值。我們也可能為響應添加新的屬性,或者提供了一些新的接口,當然這些一般都不影響老客戶端。ePQ28資訊網(wǎng)——每日最新資訊28at.com

  1. 必須進行不兼容的升級。

有時候我們必須進行一些不兼容的升級,對 API 做一些主要的修改,考慮到微服務之間的松耦合性,我們沒法強迫客戶端進行立馬升級,此時可能會考慮在某一個時間段內,兩個版本的 API 共存。ePQ28資訊網(wǎng)——每日最新資訊28at.com

多個 API 共存的時候,一個比較簡單的辦法是在 API 設計的時候,加上版本號,例如 /v1/xxx 或者 /v2/xxx,不過這種寫法有一個小小的缺陷,就是路徑中加了版本號之后,這個路徑看起來就不是一個完美的 REST 路徑了。ePQ28資訊網(wǎng)——每日最新資訊28at.com

所以這塊還有一個方案,就是把請求的 API 的版本號寫到請求頭中。ePQ28資訊網(wǎng)——每日最新資訊28at.com

具體的實現(xiàn)思路是這樣:ePQ28資訊網(wǎng)——每日最新資訊28at.com

首先,在微服務中,我們所有的請求一般來說都會經(jīng)過網(wǎng)關,我們可以在網(wǎng)關中提取出請求頭的 Accept 參數(shù),然后根據(jù) Accept 中的請求版本號,做不同的請求轉發(fā),如果版本號是 1.0,就轉發(fā)到 1.0 的服務上去;如果版本號是 2.0,則轉發(fā)到 2.0 的服務上去。基本上就是這個樣子。ePQ28資訊網(wǎng)——每日最新資訊28at.com

以現(xiàn)在微服務中主流的網(wǎng)關 Spring Cloud Gateway 為例,我們可以做如下配置:ePQ28資訊網(wǎng)——每日最新資訊28at.com

spring:  application:    name: gateway  cloud:    nacos:      discovery:        password: nacos        username: nacos        server-addr: a.b.c.d:8848        namespace: public    gateway:      discovery:        locator:#          enabled: true          lower-case-service-id: true      routes:        - id: v1_provider          uri: lb://provider          predicates:            - Path=/p/**            - Header=Accept,.*;?version=1/.0(|;.*)          filters:            - StripPrefix=1server:  port: 8082

大家看一下這個配置:ePQ28資訊網(wǎng)——每日最新資訊28at.com

  1. 首先記得關閉服務自動發(fā)現(xiàn),否則通過默認的服務名進行代理就不會經(jīng)過我們配置的過濾器了。
  2. 然后我們手動配置服務轉發(fā),上面的配置基本上都是常規(guī)配置,跟版本號相關的配置是 Header=Accept,.*;?version=1/.0(|;.*),這個配置就是對請求頭提出要求,首先前面的 Accept 表示這里是要判斷請求頭中的 Accept 字段,然后后面緊跟著的是 value(兩者之間用 , 隔開),這個 value 是一個正則表達式 .*;?version=1/.0(|;.*),意思就是在 version=1.0 之前和之后可以有任意字符串,只要 value 中包含 version=1.0 就算匹配上了。只有匹配上了,才會進行請求轉發(fā),否則不會進行請求轉發(fā)。
  3. 最后,我們在發(fā)送請求的時候,設置如下請求頭即可:

圖片圖片ePQ28資訊網(wǎng)——每日最新資訊28at.com

如果版本號是 versinotallow=2.0,則會報一個 404 錯誤:ePQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ePQ28資訊網(wǎng)——每日最新資訊28at.com

好啦,一個小小的版本號話題,感興趣的小伙伴可以試試最后這段代碼哦!ePQ28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-99641-0.html微服務的版本號要怎么設計?你知道嗎?

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 2024 Vue 生態(tài)工具最能打的組合!

下一篇: 三款C#開源且實用的工具類庫,工作效率提升利器!

標簽:
  • 熱門焦點
  • Mate60手機殼曝光 致敬自己的經(jīng)典設計

    8月3日消息,今天下午博主數(shù)碼閑聊站帶來了華為Mate60的第三方手機殼圖,可以讓我們在真機發(fā)布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 28個SpringBoot項目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會使用到很多注解或者問到注解相關的知識。本文主要對一些常用的注解進行了總結,同時也會舉出具體例子,供大家學習和參考。注解
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創(chuàng)建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統(tǒng)中的其他對象共享,從而減少
  • 一個注解實現(xiàn)接口冪等,這樣才優(yōu)雅!

    場景碼猿慢病云管理系統(tǒng)中其實高并發(fā)的場景不是很多,沒有必要每個接口都去考慮并發(fā)高的場景,比如添加住院患者的這個接口,具體的業(yè)務代碼就不貼了,業(yè)務偽代碼如下:圖片上述代碼有
  • 零售大模型“干中學”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來源/華爾街科技眼對于絕大多數(shù)登山愛好者而言,攀爬珠穆朗瑪峰可謂終極目標。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內的南坡路線,一是中國境內的北坡路線。相
  • 猿輔導與新東方的兩種“歸途”

    作者|卓心月 出品|零態(tài)LT(ID:LingTai_LT)如何成為一家偉大企業(yè)?答案一定是對&ldquo;勢&rdquo;的把握,這其中最關鍵的當屬對企業(yè)戰(zhàn)略的制定,且能夠站在未來看現(xiàn)在,即使這其中的
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元&ldquo;人在職場,應該選擇什么樣的著裝?&rdquo;近日,在網(wǎng)絡上,一個與著裝相關的帖子引發(fā)關注,在該帖子里,一位在高級寫字樓亞洲金
  • 3699元!iQOO Neo8 Pro頂配版今日首銷:1TB UFS 4.0同價位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更是首發(fā)搭載了聯(lián)發(fā)科天璣9200+旗艦
  • iQOO Neo8系列或定檔5月23日:首發(fā)天璣9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經(jīng)上市便受到了用戶的廣泛關注。在時隔半年后,
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
制服诱惑一区二区| 精品99视频| 国产精品福利av| 国产精品久久久久aaaa| 国产欧美短视频| 黄色亚洲大片免费在线观看| 亚洲精品女人| 亚洲美女色禁图| 午夜国产精品视频| 另类图片综合电影| 欧美日韩精品综合在线| 国产精品网站在线观看| 在线成人av.com| 在线视频日韩| 久久久久国产精品厨房| 欧美精品在线免费播放| 国产丝袜美腿一区二区三区| 亚洲激情偷拍| 亚洲宅男天堂在线观看无病毒| 久久久久国产精品厨房| 欧美日韩精品一区二区天天拍小说| 国产精品自拍网站| 亚洲激情第一区| 午夜精品福利电影| 欧美激情网站在线观看| 国产欧美高清| 亚洲精品日韩综合观看成人91| 性做久久久久久久免费看| 欧美精品国产| 国产一区二区久久久| 日韩视频免费观看高清在线视频 | 亚洲一区二区三区四区中文 | 久久综合狠狠综合久久综合88| 欧美日韩成人在线观看| 国产一区二区精品在线观看| 99亚洲伊人久久精品影院红桃| 久久精品国产欧美激情| 欧美午夜激情视频| 在线视频国产日韩| 性伦欧美刺激片在线观看| 欧美区亚洲区| 精品51国产黑色丝袜高跟鞋| 亚洲一区二区精品在线| 欧美国产一区二区| 黄色小说综合网站| 午夜精品999| 欧美日韩一区二区三区免费看| 有码中文亚洲精品| 欧美在线啊v一区| 欧美日韩成人网| 亚洲国产高清自拍| 久久精品国产亚洲一区二区三区| 欧美色综合天天久久综合精品| 亚洲国内高清视频| 久久久亚洲高清| 国产欧美日韩激情| 亚洲女同性videos| 欧美色视频在线| 亚洲精品视频免费观看| 另类专区欧美制服同性| 国产自产2019最新不卡| 亚洲欧美资源在线| 国产精品国产福利国产秒拍 | 久久久999成人| 国产精品一二一区| 亚洲一区在线观看视频 | 激情亚洲网站| 久久超碰97中文字幕| 国产精品欧美日韩| 在线综合+亚洲+欧美中文字幕| 欧美激情麻豆| 亚洲韩国日本中文字幕| 免播放器亚洲一区| 亚洲电影观看| 麻豆国产精品va在线观看不卡| 狠狠做深爱婷婷久久综合一区| 欧美一区二区女人| 国产日韩在线播放| 久久国产精品99久久久久久老狼| 国产精品一级二级三级| 亚洲女人av| 国产精品综合| 午夜激情亚洲| 国产精品自在线| 午夜一区在线| 国产综合色一区二区三区| 久久国产精品99国产精| 国内精品久久久久影院色 | 另类春色校园亚洲| 亚洲国产视频直播| 欧美高清你懂得| 亚洲免费电影在线| 欧美新色视频| 午夜视频一区| 国产在线国偷精品产拍免费yy| 久久精品男女| 在线精品亚洲| 欧美国产激情二区三区| 日韩午夜激情| 欧美性猛交视频| 亚洲欧美激情在线视频| 国产日韩在线播放| 久久免费99精品久久久久久| 亚洲国产老妈| 欧美日韩一区二区三区四区五区 | 亚洲日韩欧美视频| 欧美精品在线免费播放| 亚洲天堂av图片| 国产精品丝袜久久久久久app| 欧美在线视频观看| 在线播放亚洲一区| 欧美久久久久免费| 亚洲综合国产激情另类一区| 国外成人网址| 免费成人av在线看| 亚洲精品女人| 欧美特黄a级高清免费大片a级| 亚洲午夜精品一区二区三区他趣| 久久精品一区二区三区四区| 欧美色网在线| 欧美在线视频免费播放| 国产亚洲免费的视频看| 卡通动漫国产精品| 日韩一级免费| 国产久一道中文一区| 久久综合网络一区二区| 99re6热在线精品视频播放速度| 国产精品久久久久久久久 | 久久久精品999| 91久久精品国产91久久性色tv| 欧美色中文字幕| 久久精品中文字幕一区| 亚洲看片一区| 国产欧美精品在线播放| 欧美成人精品激情在线观看| 亚洲一区二区影院| 有码中文亚洲精品| 欧美视频在线观看| 久久久久久9| 99视频在线观看一区三区| 国产亚洲精品一区二区| 欧美区高清在线| 久久精品国产一区二区三| 尤物精品在线| 欧美另类在线观看| 欧美一区二区视频网站| 亚洲精品欧洲| 国产亚洲一区二区三区在线观看| 欧美精品日韩三级| 欧美在线视频观看| 一区二区三区免费网站| 伊人久久婷婷色综合98网| 国产精品第2页| 久久资源av| 先锋影音久久| 99国产精品久久久久久久成人热| 国产亚洲欧美日韩一区二区| 欧美日韩天天操| 久久综合图片| 欧美一区二区播放| 国产精品99久久久久久久女警 | 欧美在线电影| 亚洲最黄网站| 亚洲高清自拍| 国产一区视频在线看| 欧美性猛交xxxx乱大交蜜桃| 欧美成人精品福利| 久久久精品欧美丰满| 午夜精品久久久久久久| 一本色道久久88精品综合| 在线观看日韩精品| 国产一区二区av| 国产精品欧美一区喷水| 欧美日韩蜜桃| 欧美大片在线观看一区二区| 久久久久88色偷偷免费| 欧美一区二区三区免费看| 亚洲社区在线观看| 99re6这里只有精品视频在线观看| 在线观看日韩av先锋影音电影院| 国产日韩精品一区二区浪潮av| 欧美三级电影大全| 欧美精品麻豆| 欧美大片在线看免费观看| 久久全球大尺度高清视频| 欧美中文字幕不卡| 性色一区二区| 亚洲欧美综合精品久久成人| 亚洲欧美日本国产专区一区| 亚洲深夜福利网站| 一区二区三区不卡视频在线观看| 亚洲日本中文| 亚洲黄色成人| 亚洲国产成人久久综合一区| 在线成人中文字幕| 精品999在线观看| 一色屋精品视频在线观看网站| 国产又爽又黄的激情精品视频 | 日韩一区二区福利| 亚洲伦理一区| 日韩天堂av| 99亚洲伊人久久精品影院红桃| 日韩亚洲综合在线| 亚洲免费不卡|