真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)

今天就跟大家聊聊有關(guān)如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)從事成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專(zhuān)業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專(zhuān)業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開(kāi)發(fā)服務(wù)!

在web開(kāi)發(fā)中隨著版本的更新迭代,通常要在系統(tǒng)中維護(hù)多個(gè)版本的api,多個(gè)版本的api在數(shù)據(jù)結(jié)構(gòu)上往往也各不相同,今天就來(lái)一起學(xué)習(xí)下kubernetes中的Scheme機(jī)制是如何解決這個(gè)問(wèn)題的,如何借助HTTP請(qǐng)求里面的數(shù)據(jù)進(jìn)行反序列化操作

 

1. web請(qǐng)求的處理流程

 

1.1 HTTP請(qǐng)求處理流程

如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)通常首先是webServer先進(jìn)行Http協(xié)議的處理,然后解析成基礎(chǔ)的webServer內(nèi)部的一個(gè)Http請(qǐng)求對(duì)象, 通常該對(duì)象持有對(duì)應(yīng)請(qǐng)求的請(qǐng)求頭和底層對(duì)應(yīng)的字節(jié)序列(從socket流中讀取)接著首先會(huì)通常根據(jù)對(duì)應(yīng)的編碼格式來(lái)進(jìn)行反序列化,完成從字節(jié)序列到當(dāng)前接口的業(yè)務(wù)模型的映射, 然后在交給業(yè)務(wù)邏輯處理,從而最終進(jìn)行持久化存儲(chǔ), 本文的重點(diǎn)也就在反序列化部分

 

2.模型映射的實(shí)現(xiàn)

 

2.1 描述資源版本信息

/api/{version}/{resource}/{action}
 

上面是一個(gè)基礎(chǔ)的web url通常我們都會(huì)為每個(gè)版本注冊(cè)一個(gè)對(duì)應(yīng)的URL, 其中會(huì)包含很關(guān)鍵的兩個(gè)信息即version與resource,通過(guò)這兩個(gè)信息,通常我們就可以知道這可能是某個(gè)資源的那個(gè)版本, 如果我們把后面的action也包裹進(jìn)來(lái),我們通常就可以知道對(duì)應(yīng)的資源的那個(gè)具體操作

 

2.2 Group組信息

如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)在微服務(wù)流行的今天我們通常會(huì)為按照業(yè)務(wù)功能來(lái)進(jìn)行微服務(wù)的切分,本質(zhì)上一個(gè)微服務(wù)可能就是實(shí)現(xiàn)某個(gè)具體業(yè)務(wù)場(chǎng)景的功能集合,比如用戶(hù)系統(tǒng)通常會(huì)包含用戶(hù)的所有相關(guān)操作,在kubernetes中也有類(lèi)似的概念就是所謂的Group

POST /apis/batch/v1beta1/namespaces/{namespace}/cronjobs
POST /apis/apps/v1/namespaces/{namespace}/daemonsets
 

我們來(lái)看一個(gè)實(shí)例這是一個(gè)創(chuàng)建daemonsets和cronjobs的url, 如果按照Group、resource、version來(lái)進(jìn)行拆分可以拆成如下:batch、v1beta1、cronjobs和apps、v1、daemonsets,也就是大家嘗試的GroupVersionKind,其中kind對(duì)應(yīng)的就是resource

 

2.3 模型映射的實(shí)現(xiàn)

如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)我們通過(guò)url里面獲取到資源的GroupVersionKind信息,如何將其映射為一個(gè)具體的類(lèi)型呢?這貌似就很簡(jiǎn)單了結(jié)合反射和map來(lái)進(jìn)行就可以了,我們通過(guò)url獲取到對(duì)應(yīng)想的GVK信息,然后在通過(guò)我們的映射表,就知道對(duì)應(yīng)的模型是哪個(gè),接下來(lái)就只需要進(jìn)行轉(zhuǎn)換就行了

gvkToType map[schema.GroupVersionKind]reflect.Type
 
 

3.反序列化實(shí)現(xiàn)

 

3.1 解碼機(jī)制

那如何將對(duì)應(yīng)的Http里面的數(shù)據(jù)流反序列化成內(nèi)部的一個(gè)對(duì)象呢,別忘記了是Http協(xié)議, 肯定就是header頭里面的信息了,我們通過(guò)header頭里面的序列化就可以知道對(duì)應(yīng)的編碼格式,只需要調(diào)用對(duì)應(yīng)格式的解碼就可以完成了

Content-Type: "application/json"
 
 

3.2 默認(rèn)對(duì)象

如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)如果要將json格式的字節(jié)數(shù)組進(jìn)行解碼通常要進(jìn)行如下操作,我們需要傳入一個(gè)目標(biāo)對(duì)象的指針,然后由json將對(duì)應(yīng)的字節(jié)數(shù)據(jù)解析到目標(biāo)對(duì)象中,我們也需要這樣一個(gè)對(duì)象,用于存儲(chǔ)反序列化的結(jié)果 

func Unmarshal(data []byte, v interface{}) error {}
 

那只要我再提供一個(gè)當(dāng)前版本對(duì)應(yīng)的對(duì)象構(gòu)造函數(shù)是不是就可以呢?答案是的

func() Object{ return 目標(biāo)對(duì)象 },
 
 

4. 設(shè)計(jì)總結(jié)

如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)首先在進(jìn)行url注冊(cè)的時(shí)候,我們構(gòu)造出對(duì)應(yīng)url映射的資源的版本信息即GroupVersionKind,后續(xù)的很多操作我們可以通過(guò)對(duì)應(yīng)的版本映射獲取對(duì)應(yīng)的目標(biāo)操作或者對(duì)象,然后再通過(guò)Header里面的字段獲取對(duì)應(yīng)的解碼器,并將Body里面的字節(jié)序列進(jìn)行解碼到目標(biāo)對(duì)象,就可以實(shí)現(xiàn)多版本資源的映射和反序列化操作了。

看完上述內(nèi)容,你們對(duì)如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)頁(yè)題目:如何理解kubernetes中的api多版本機(jī)制實(shí)現(xiàn)
本文鏈接:http://weahome.cn/article/podjoh.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部