国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

k8s :kube-apiserver 訪問(wèn) etcd 后端存儲(chǔ)

shenhualong / 3297人閱讀

摘要:前言本文介紹是如何訪問(wèn)后端存儲(chǔ)相關(guān)源代碼主要在通用接口原文注釋定義了后端存儲(chǔ)的通用接口,主要是一些增刪改查方法,這種面向接口編程,將實(shí)現(xiàn)和設(shè)計(jì)分離的設(shè)計(jì)提高了軟件的可擴(kuò)展性,降低了模塊間的耦合度,比如只要我們提供的具體實(shí)現(xiàn),那么除了使用

前言

本文介紹 kube-apiserver 是如何訪問(wèn) etcd 后端存儲(chǔ)

相關(guān)源代碼主要在 kubernetes/staging/src/k8s.io/apiserver/pkg/storage

通用接口

Interface offers a common interface for object marshaling/unmarshaling operations and hides all the storage-related operations behind it(原文注釋)

// kubernetes/vendor/k8s.io/apiserver/storage/interfaces.go
type Interface interface {
    Versioner() Versioner
    Create(...)
    Delete(...)
    Watch(...)
    WatchList(...)
    Get(...)
    GetToList(...)
    List(...)
    GuaranteedUpdate(...)
}

Interface 定義了后端存儲(chǔ)的通用接口,主要是一些"增刪改查"方法,這種面向接口編程,將實(shí)現(xiàn)和設(shè)計(jì)分離的設(shè)計(jì)提高了軟件的可擴(kuò)展性,降低了模塊間的耦合度,比如只要我們提供 Interface 的具體實(shí)現(xiàn),那么除了使用 etcd 作為后端存儲(chǔ)之外,是不是也可以使用 consul/zookeeper 等分布式 kv 存儲(chǔ)?

具體實(shí)現(xiàn)

Interface 接口目前有兩個(gè)具體實(shí)現(xiàn)類,分別對(duì)應(yīng) etcd v2 和 etcd v3 兩個(gè)不同的 etcd api 版本

// kubernetes/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_helper.go 
type etcdHelper struct {
    ...
}

// kubernetes/vender/k8s.io/apiserver/pkg/storage/etcd3/store.go
type store struct {
    ...
}

這兩個(gè)實(shí)現(xiàn)類的名字差的也太大了。。。go 語(yǔ)言使用非侵入式的接口,所以從 類(結(jié)構(gòu))名上是看不出他們兩和 storage.Interface 有半毛線關(guān)系的,但是只要它們實(shí)現(xiàn)了 storate.Interface 接口里面聲明的方法他們就 "is-a" storage.Interface

創(chuàng)建

factory 包里的《工廠方法》Create 會(huì)根據(jù)配置 storagebackend.Config 創(chuàng)建相應(yīng)的 storage.Interface

func Create(c storagebackend.Config) (storage.Interface, DestroyFunc, error) {
    swtich c.Type {
        case storagebackend.StorageTypeETCD2:
            return newETCD2Storage(c)
        case storagebackend.StorageTypeUnset, storageback.StorageTypeETCD3:
            return newETCD3Storage(c)
        default:
            return nil, nil, fmt.Errorf("unknown storage type: %s", c.Type)
    }
}
使用

storage.Interface 被 Store 類(這又是什么東東?)用來(lái)實(shí)現(xiàn) rest.StandardStorage(RESTful 增刪改查) 接口

// kubernetes/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go
type Store struct {
    ...
    Storage storage.Interface
}

// Create inserts a new item according to the unique key from the object
func (e *Store) Create(ctx genericapirequest.Context, obj runtime.Object,
    includeUninitialized bool)(runtime.Object, error) {
    ...
    key, err := e.KeyFunc(ctx, name)
    ...
    out := e.NewFunc()
    if err := e.Storage.Create(ctx, key, obj, out, ttl); err != nil {
        ...
    }
    ...
}
總結(jié)

本介紹了 kube-apiserver 訪問(wèn) etcd 后端存儲(chǔ)相關(guān)的類(結(jié)構(gòu))和方法,用到的設(shè)計(jì)模式以及架構(gòu)上的套路

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/33050.html

相關(guān)文章

  • k8skube-apiserver 訪問(wèn) etcd 后端存儲(chǔ)

    摘要:前言本文介紹是如何訪問(wèn)后端存儲(chǔ)相關(guān)源代碼主要在通用接口原文注釋定義了后端存儲(chǔ)的通用接口,主要是一些增刪改查方法,這種面向接口編程,將實(shí)現(xiàn)和設(shè)計(jì)分離的設(shè)計(jì)提高了軟件的可擴(kuò)展性,降低了模塊間的耦合度,比如只要我們提供的具體實(shí)現(xiàn),那么除了使用 前言 本文介紹 kube-apiserver 是如何訪問(wèn) etcd 后端存儲(chǔ) 相關(guān)源代碼主要在 kubernetes/staging/src/k8s....

    zhjx922 評(píng)論0 收藏0
  • k8skube-apiserver 啟動(dòng)流程 - 1

    摘要:前言看源代碼有一段時(shí)間,總感覺(jué)在迷宮里亂竄,有時(shí)候覺(jué)得終于找到出口了,一下子又撞墻了,總結(jié)下來(lái)還是自己的內(nèi)功不夠深厚,本文是對(duì)遺留,即將廢棄初始化流程以及數(shù)據(jù)結(jié)構(gòu)的一個(gè)梳理,算是做個(gè)路標(biāo),便于以后在迷宮中還能找到回來(lái)的路主要功能是提供接 前言 看 k8s 源代碼有一段時(shí)間,總感覺(jué)在迷宮里亂竄,有時(shí)候覺(jué)得終于找到出口了,一下子又撞墻了,總結(jié)下來(lái)還是自己的內(nèi)功不夠深厚,本文是對(duì) kube-...

    wwolf 評(píng)論0 收藏0
  • k8skube-apiserver 啟動(dòng)流程 - 1

    摘要:前言看源代碼有一段時(shí)間,總感覺(jué)在迷宮里亂竄,有時(shí)候覺(jué)得終于找到出口了,一下子又撞墻了,總結(jié)下來(lái)還是自己的內(nèi)功不夠深厚,本文是對(duì)遺留,即將廢棄初始化流程以及數(shù)據(jù)結(jié)構(gòu)的一個(gè)梳理,算是做個(gè)路標(biāo),便于以后在迷宮中還能找到回來(lái)的路主要功能是提供接 前言 看 k8s 源代碼有一段時(shí)間,總感覺(jué)在迷宮里亂竄,有時(shí)候覺(jué)得終于找到出口了,一下子又撞墻了,總結(jié)下來(lái)還是自己的內(nèi)功不夠深厚,本文是對(duì) kube-...

    RayKr 評(píng)論0 收藏0
  • k8skube-apiserver RESTful API 實(shí)現(xiàn) - Storage

    摘要:前言了解的同學(xué)都知道,對(duì)外提供接口提供查詢,監(jiān)聽集群資源狀態(tài)的服務(wù),主要就做一件事,就是如何將接口調(diào)用映射到對(duì)后端存儲(chǔ)比如的增刪改查訪問(wèn),在設(shè)計(jì)的時(shí)候考慮到是個(gè)快速迭代的開源項(xiàng)目,很多接口版本可能在未來(lái)版本發(fā)生變化,因此如何設(shè)計(jì)一個(gè)擴(kuò)展 前言 了解 k8s 的同學(xué)都知道,kube-apiserver 對(duì)外提供 RESTful API 接口提供 查詢,監(jiān)聽集群(資源)狀態(tài)的服務(wù),kube...

    frank_fun 評(píng)論0 收藏0
  • k8skube-apiserver RESTful API 實(shí)現(xiàn) - Storage

    摘要:前言了解的同學(xué)都知道,對(duì)外提供接口提供查詢,監(jiān)聽集群資源狀態(tài)的服務(wù),主要就做一件事,就是如何將接口調(diào)用映射到對(duì)后端存儲(chǔ)比如的增刪改查訪問(wèn),在設(shè)計(jì)的時(shí)候考慮到是個(gè)快速迭代的開源項(xiàng)目,很多接口版本可能在未來(lái)版本發(fā)生變化,因此如何設(shè)計(jì)一個(gè)擴(kuò)展 前言 了解 k8s 的同學(xué)都知道,kube-apiserver 對(duì)外提供 RESTful API 接口提供 查詢,監(jiān)聽集群(資源)狀態(tài)的服務(wù),kube...

    ChristmasBoy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<