kubernetes开发指南(REST&API)(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hahachenchen789/article/details/87467101

REST简介

REST(representational state transfer)是由roy博士在他的论文中提出的一个术语,rest本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。

基于web的架构实际上就是各种规范的集合,这些规范共同组成了web架构,比如HTTP、客户端服务器模式都是规范。每当我们在原有规范的基础上增加新的规范时,就会形成新的架构,而rest正是这样一种架构,它结合了一系列规范,形成了一种新的基于web的架构风格。

传统的web应用大多是B/S架构,涉及如下规范。

1.客户-服务器:这种规范的提出,改善了用户接口跨多个平台的可移植性,并且通过简化服务器组件,改善了系统的可伸缩性。最为关键的是通过分析用户接口和数据存储,使得不同的用户终端共享相同的数据成为可能。

2.无状态性:这是在客户-服务器的基础上添加的又一层规范,它要求通信必须在本质上是无状态的,即从客户端到服务器的每个request都必须包含理解该request所必须的所有信息。这个规范改善了系统的可见性(无状态性使得客户端和服务端不必保存对方的详细信息,服务器只需要处理当前的request,而不必了解所有request的历史)、可靠性(无状态性减少了服务器从局部错误中恢复的任务量)、可伸缩性(无状态使得服务器端可以很容易地释放资源,因为服务端不必在多个request中保存状态)。同时,这种规范的缺点也是显而易见的,由于不能将状态数据保存在服务器上,因此增加了在一系列request中发生重复数据的开销,严重降低了效率。

3.缓存:为了改善无状态性带来的网络低效性,我们添加了缓存约束,缓存约束允许隐式或显式标记一个response中的数据,赋予了客户端缓存response数据的功能,这样就可以为以后的request公用缓存的数据,部分或全部地消除一部分交互,提高了网络效率。但是由于客户端缓存了信息,所以增加了客户端与服务器数据不一致的可能性,从而降低了可靠性。

可以看出B/S架构的优点是部署非常方便,在用户体验方面却不理想,为了改善这种情况,我们引入了rest,rest在原有架构基础上增加了三个新规范:统一接口、分层系统和按需代码。

1.统一接口:rest架构风格的核心特征就是强调组件之间有一个统一的接口,表现为在rest世界中,网络上的所有事物抽象为资源,这样设计的好处是保证系统提供的服务都是解耦的,极大简化了系统,从而改善了系统的交互性和可重用性。

2.分层系统:分层系统规则的加入提高了各种层次之间的独立性,为整个系统的复杂性设置了边界,通过封装遗留的服务,使得新的服务器免受遗留客户端的影响,也提高了系统的可伸缩性。

3.按需代码:rest允许对客户端功能进行拓展,比如通过下载并执行applet或脚本形式的代码来拓展客户端的功能。

REST架构是针对web应用而设计的,七亩地就是为了降低开发的复杂性,提高系统的可伸缩性,REST提出了如下设计准则。

1.网络上所有事物都被抽象为资源

2.每个资源对应一个唯一的资源标识符

3.通过通用的连接器接口对资源进行操作

4.对资源的各种操作不会改变资源标识符

5.所有的操作都是无状态的

REST中的资源所指的不是数据,而是数据和表现形式的组合,比如“最新访问的10位会员”和“最活跃的10位会员”在数据上可能有重叠或者完全相同,而由于它们的表现形式不同,所以被归于不同的资源,这也就是为什么REST的全名是representational state transfer,资源标识符就是URI(uniform resource identifier),不管是图片,word还是视频文件,也不管是什么格式,全部通过URI对资源进行唯一标识。

REST是基于HTTP的,任何对资源的操作行为都通过HTTP来实现,以往的web开发大多数用的是HTTP中的GET和Post方法,很少使用其他方法,这是几上是因为对HTTP的片面理解造成的。HTTP不仅仅是一个简单的运载数据的协议,而是一个具有丰富内涵的网络软件的协议,它不仅能对互联网资源进行唯一定位,还能告诉我们如何对该资源进行操作。HTTP把对一个资源的操作限制在4种方法内:GET、POST、PUT和DELETE,这正是对资源CRUD操作的实现,由于资源和URI是一一对应的,在执行这些操作时URI没有变化,和以往的web开发有很大的区别,所有极大简化了web开发,也使得URI可以被设计成更为直观反映资源的接口。

kubernetes API也符合RESTful规范。

kubernetes API详解

kubernetes API概述

kubernetes API是集群系统中的重要组成部分,kubernetes中各种资源的数据通过该API接口被提交到后端的持久性存储etcd中,kubernetes集群中的各部分之间通过该API接口实现解耦合,同时kubernetes集群中一个重要且便捷的管理工具kubectl也是通过访问该API接口实现其强大的管理功能的。kubernetes API中的资源对象都拥有通用的元数据,资源对象也可能存在嵌套现象,比如在一个pod里面嵌套多个container。创建一个API对象是指通过API调用一条有意义的记录,该记录一旦被创建,kubernetes将确保对应的资源对象会被自动创建并托管维护。

为了方便查阅API接口的详细定义,kubernetes使用了swagger-ui提供API在线查询功能,其官网为https://kubernetes.io/docs/reference/

猜你喜欢

转载自blog.csdn.net/hahachenchen789/article/details/87467101