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

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

微服務的版本號要怎么設計?

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

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

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

一、語義化版本控制規范

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

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

這個規范非常友好的提供了中文版的內容。xRD28資訊網——每日最新資訊28at.com

語義化的版本控制規范要求版本號由三部分構成:xRD28資訊網——每日最新資訊28at.com

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

語義化的版本控制規范主要做了如下一些要求:xRD28資訊網——每日最新資訊28at.com

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

二、微服務中的版本號

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

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

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

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

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

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

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

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

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

具體的實現思路是這樣:xRD28資訊網——每日最新資訊28at.com

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

以現在微服務中主流的網關 Spring Cloud Gateway 為例,我們可以做如下配置:xRD28資訊網——每日最新資訊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

大家看一下這個配置:xRD28資訊網——每日最新資訊28at.com

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

圖片圖片xRD28資訊網——每日最新資訊28at.com

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

圖片圖片xRD28資訊網——每日最新資訊28at.com

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

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

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

上一篇: 7000字+22張圖探秘Dubbo一次RPC調用的核心流程

下一篇: 英特爾代工合作伙伴為 EMIB 先進封裝技術提供參考流程

標簽:
  • 熱門焦點
  • 官方承諾:K60至尊版將會首批升級MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會搭載天璣9200+處理器和獨顯芯片X7的同時,Redmi給出了官方承諾,K60至尊重大更新首批升級,會首批推送MIUI 15。也就是說雖然
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據博主數碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網課,網課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業又有了新的發展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 一加首款折疊屏!一加Open渲染圖出爐:罕見單手可握小尺寸

    8月5日消息,此前就有爆料稱,一加首款折疊屏手機將會在第三季度上市,如今隨著時間臨近,新機的各種消息也開始浮出水面。據悉,這款新機將會被命名為&ldquo;On
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 2023年,我眼中的字節跳動

    此時此刻(2023年7月),字節跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的&ldquo;頭騰
  • 東方甄選單飛:有些鳥注定是關不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的&ldquo;網紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內直播,
  • 外交部:美方應停止在網絡安全問題上不負責任地指責他國

      中國外交部今天(16日)舉行例行記者會。會上,有記者問,美國情報官員稱,他們正在阻攔來自中國以及其他國家的黑客獲取相關科研成果。 中方對此有何評論?對此
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲高清在线精品| 国产日韩精品一区二区三区| 美女露胸一区二区三区| 欧美超级免费视 在线| 国产欧美日韩在线播放| 亚洲视频一区二区免费在线观看| 久久成人免费日本黄色| 国产一区二区黄| 亚洲午夜久久久久久久久电影网| 久久久久久网站| 中文日韩在线视频| 亚洲图片欧美午夜| 午夜精彩国产免费不卡不顿大片| 欧美jizz19性欧美| 亚洲视频图片小说| 裸体素人女欧美日韩| 激情综合色丁香一区二区| 亚洲美女91| 国产午夜精品视频| 亚洲成在人线av| 艳妇臀荡乳欲伦亚洲一区| 西瓜成人精品人成网站| 久久综合五月天婷婷伊人| 欧美日韩精品综合| 国模私拍视频一区| 欧美国产免费| 欧美国产成人在线| 国产精品久久久久av| 久久精品视频免费| 美国十次成人| 国产精品久久久久天堂| 激情欧美日韩一区| 亚洲一卡二卡三卡四卡五卡| 久久久久久久激情视频| 欧美午夜精品久久久久久浪潮| 国产自产女人91一区在线观看| 日韩一级精品视频在线观看| 久久精品欧洲| 国产精品99一区| 在线观看视频欧美| 午夜精品福利视频| 欧美日韩成人一区| 激情综合在线| 亚欧成人在线| 欧美日韩亚洲一区二区三区| 在线观看日韩av电影| 亚洲欧美激情视频| 欧美日韩爆操| 亚洲国产精品第一区二区| 欧美一区二区三区免费大片| 欧美日韩精品一区二区三区| 亚洲电影免费观看高清| 欧美在线精品免播放器视频| 欧美日韩中文另类| 国产伦精品一区二区| 黄色亚洲大片免费在线观看| 在线视频精品| 欧美第十八页| 国内精品一区二区| 亚洲欧美视频在线观看| 欧美女主播在线| 亚洲二区在线| 久久久久久久国产| 国产日韩欧美综合| 亚洲免费一级电影| 亚洲欧洲日产国产综合网| 欧美在线视频播放| 国产精品女人久久久久久| 99精品欧美一区二区蜜桃免费| 免费在线亚洲欧美| 有坂深雪在线一区| 久久精品中文字幕一区| 国产日韩欧美日韩| 欧美亚洲日本一区| 国产精品午夜av在线| 亚洲一区二区精品视频| 欧美日韩黄视频| 韩国久久久久| 久久久久久久成人| 精品成人一区二区三区四区| 久久国产精品99国产精| 国产一区二区精品久久99| 国产综合精品一区| 亚洲一区二区日本| 欧美日韩亚洲国产一区| 日韩一级精品视频在线观看| 欧美黄色大片网站| 亚洲欧洲日产国产网站| 猫咪成人在线观看| 亚洲电影免费在线| 免费在线观看精品| 亚洲人精品午夜| 欧美国产亚洲视频| 日韩午夜三级在线| 欧美日韩一级片在线观看| 中文欧美在线视频| 国产精品美女一区二区在线观看| 一区二区日韩伦理片| 欧美色区777第一页| 一区二区三区欧美在线| 国产精品久久久久三级| 性做久久久久久久免费看| 国产午夜亚洲精品羞羞网站| 久久九九99| 亚洲国产精品尤物yw在线观看| 欧美成va人片在线观看| 亚洲免费av片| 国产精品久久久久久久久久免费看| 亚洲永久字幕| 国产精品不卡在线| 欧美一区日韩一区| 在线观看欧美视频| 欧美精品一区二区三区四区| 一区二区三区偷拍| 国产午夜精品全部视频在线播放 | 久久综合激情| 亚洲国产美国国产综合一区二区| 欧美精品在线观看91| 亚洲影院在线| 国产一区二区精品久久| 免费欧美日韩| 亚洲视频香蕉人妖| 欧美日韩一级视频| 欧美一级片一区| 亚洲国产成人精品女人久久久| 欧美日韩国产成人在线| 欧美一级视频| 亚洲激情啪啪| 国产精品激情电影| 久久久久高清| 9人人澡人人爽人人精品| 国产欧美视频一区二区| 奶水喷射视频一区| 亚洲网站在线播放| 国产综合香蕉五月婷在线| 欧美福利视频| 午夜久久美女| 亚洲日本电影在线| 国产麻豆日韩欧美久久| 欧美岛国激情| 欧美影院在线| 亚洲三级影院| 国产亚洲成av人在线观看导航| 欧美国产日本在线| 久久超碰97人人做人人爱| 日韩午夜免费视频| 国产亚洲欧美另类中文| 欧美激情1区| 欧美综合77777色婷婷| 日韩一区二区久久| 好吊色欧美一区二区三区视频| 欧美日韩一区在线视频| 久久亚洲综合色| 亚洲愉拍自拍另类高清精品| 亚洲国产经典视频| 国产目拍亚洲精品99久久精品| 又紧又大又爽精品一区二区| 国产精品ⅴa在线观看h| 男男成人高潮片免费网站| 香港久久久电影| 日韩一区二区精品| 尤物精品在线| 国产喷白浆一区二区三区| 欧美男人的天堂| 另类成人小视频在线| 午夜激情一区| 一本色道久久综合亚洲精品按摩| 精东粉嫩av免费一区二区三区| 国产精品高潮呻吟久久| 欧美精品三级日韩久久| 久久天天综合| 欧美一区二区精品在线| 亚洲视频综合| 亚洲精品小视频在线观看| 红桃视频欧美| 国产日韩欧美不卡| 国产精品极品美女粉嫩高清在线 | 久久精品夜夜夜夜久久| 亚洲欧美视频在线观看| 在线视频精品| 日韩午夜高潮| 亚洲黄色成人久久久| 伊人久久亚洲热| 狠狠爱www人成狠狠爱综合网| 国产日韩欧美三区| 国产毛片精品视频| 国产精品美女久久久久久2018| 国产精品av免费在线观看| 欧美视频在线观看免费| 欧美日韩精品一区二区三区四区 | 狠狠操狠狠色综合网| 国产亚洲日本欧美韩国| 国产欧美精品日韩| 国产精品日韩精品欧美精品| 国产精品久久久对白| 国产精品videosex极品| 欧美性猛交xxxx乱大交蜜桃| 欧美午夜精品久久久久久人妖| 欧美日韩一级视频| 欧美偷拍另类| 国产精品美女视频网站| 国产乱码精品一区二区三区av| 国产精品免费区二区三区观看| 欧美性淫爽ww久久久久无|