栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

K8s源码分析(14)-资源的服务层接口实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

K8s源码分析(14)-资源的服务层接口实现

上一篇文章中,我们主要介绍了 kubernetes 中资源的服务层接口定义,包括增删改查类接口,以及操作的策略类接口。在本篇文章里, 我们主要来介绍资源增删改查类接口的实现。

对于增删改查类接口实现,图解和源码如下:

// k8s.io/apiserver/pkg/registry/generic/registry/store.go
type GenericStore interface {
  GetCreateStrategy() rest.RESTCreateStrategy
  GetUpdateStrategy() rest.RESTUpdateStrategy
  GetDeleteStrategy() rest.RESTDeleteStrategy
}


type Store struct {
  NewFunc func() runtime.Object
  NewListFunc func() runtime.Object
  CreateStrategy rest.RESTCreateStrategy
  UpdateStrategy rest.RESTUpdateStrategy
  DeleteStrategy rest.RESTDeleteStrategy
  Storage DryRunnableStorage
  KeyRootFunc func(ctx context.Context) string
  KeyFunc func(ctx context.Context, name string) (string, error)
  ObjectNameFunc func(obj runtime.Object) (string, error)
  ......
}


func (e *Store) New() runtime.Object{...} ==>Storage
func (e *Store) NewList() runtime.Object{...}==>Lister
func (e *Store) List(ctx context.Context, options *metainternalversion.ListOptions) (runtime.Object, error) {...}
func (e *Store) NamespaceScoped() bool {...}==>Scoper
func (e *Store) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error){...}==>Getter
func (e *Store) Watch(ctx context.Context, options *metainternalversion.ListOptions) (watch.Interface, error)==>{...}Watcher
func (e *Store) Create(ctx context.Context, obj runtime.Object, createvalidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error)==>{...}Creater
func (e *Store) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createvalidation rest.ValidateObjectFunc, updatevalidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error){...}==>Updater
func (e *Store) Delete(ctx context.Context, name string, deletevalidation rest.ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error){...} ==>GracefulDeleter
func (e *Store) DeleteCollection(ctx context.Context, deletevalidation rest.ValidateObjectFunc, options *metav1.DeleteOptions, listOptions *metainternalversion.ListOptions) (runtime.Object, error){...}==>CollectionDeleter


func (e *Store) GetCreateStrategy() rest.RESTCreateStrategy{...} ==>GenericStore
func (e *Store) GetUpdateStrategy() rest.RESTUpdateStrategy{...} 
func (e *Store) GetDeleteStrategy() rest.RESTDeleteStrategy{...}

registry.store.Store 结构体实现了增删改查类型接口定义的函数。

registry.store.Store 结构体中,以组合的方式封装了上一篇文章中介绍的对于资源操作策略类型的一系列相关属性,例如RESTCreateStrategy/RESTUpdateStrategy/RESTDeleteStrategy 等,用来完成不同操作的逻辑。

registry.store.Store 结构体中,以组合的方式封装以前文章中介绍的数据访问层属性 DryRunnableStorage, 用来对后端存储的数据层访问。

目前先我们写到这里,在下一篇文章中我们继续来介绍资源数据服务层策略类型接口的实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号