首页 > 其他分享 >【API设计与开发实践】第3篇 API 模型初探,从洋葱模型到细胞模型

【API设计与开发实践】第3篇 API 模型初探,从洋葱模型到细胞模型

时间:2022-11-22 18:39:01浏览次数:75  
标签:可以 细胞 API 初探 细胞核 模型 描述

API 现有模型

API 使用情景

从前文系列文章看 WEB API,无论是 HTTP API,还是 RPC API,都是一个服务单元。一般软件系统或者平台发布的 API 包含多个 API,这里就有一个 API 之间关系梳理的工作。

我们可以将常见 API 使用情景列出:

  • API 既可以单独使用,也可以独立使用
  • API 可以在容器内运行,也可以不使用容器运行
  • API 可以是无状态的,可以操作状态数据
  • API 可以有多个版本
  • API 可以部署多个实例,支持均衡负载
  • API 可以被击穿,也可以修复
  • API 的限流、熔断等可以放在内部也可以放在外部,但放在外部更方便

洋葱模型(onion model)

对于 HTTP API 以及过滤器,网上常有人使用洋葱模型来进行描述。 image.png ::: hljs-center 图片来自网络,原始出处不可考,有问题请联系作者 :::

这个图对于理解 HTTP API 方便,但描述不算完全准确。洋葱模型不是简单的层级模型,而是图关系模型。

The onion model is a graph-based diagram and conceptual model for describing relationships among levels of a hierarchy, evoking a metaphor of the layered "shells" exposed when an onion (or other concentric assembly of spheroidal objects) is bisected by a plane that intersects the center or the innermost shell. The outer layers in the model typically add size and/or complexity, incrementally, around the inner layers they enclose.

An onion diagram can be represented as an Euler or Venn diagram composed of a hierarchy of sets, A1...Ak (but perhaps potentially or conceptually infinite) where each set An+1 is a strict subset of An (and by recursion, of all Am where in each case m > n). (Some applications of the concept, however, may fail to benefit from the mathematical and otherwise rigorous properties of the model.)

https://en.wikipedia.org/wiki/Onion_model

可见,洋葱模型描述了 API 的实现,但没有描述 API 之间的组合关系,API 运行所处的宿主环境。 洋葱模型并不适合描述现在较为复杂的 API 服务体系。

原子 API 和分子 API

函数式 API 是 stateless API,与数据状态无关,固定的输入对应固定的输出。因此函数式 API 可以作为一种标准化的工业产品,用于组合生成 API 服务,构建软件系统。 当然, 使用有状态 API 也可以构建服务体系,只是并发、扩展等性能不如无状态 API 好。

网上也有说法,用原子 API(atom API)和分子 API(molecule API)来描述 API 模型。原子 API 可以独立提供功能服务,通过有机组合形成分子 API,对用户提供完整服务。 对于原子 API的组合,相同的组合就是相同的分子,不同的组合就是不同的分子,原子 API 及组合关系,就是分子 API 的特征。

虽然用原子和分子可以描述两种粒度的 API,但是对 API 模型的描述并不完整。 API 服务体系不是独立的,其运行往往还配合有网关,有缓存、数据库等状态数据,有消息队列等中间件。

API 细胞模型(cellula API)

梳理 API 关键信息

一个 API 从声明到实现到运行的路径中,包括以下关键信息:

  1. API 接口定义
  2. API 实现的源代码
  3. API 编译得到的可运行文件
  4. API 运行的容器定义
  5. API 打包生成的容器
  6. API 缓存
  7. API 通信
  8. API 网关

从以上信息来看,API 实现只是 API 服务中极少的一部分。要描述 API 模型,除了考虑 API 的静态结构,还必须考虑 API 的动态环境,而且后者更加重要。

原子和细胞的对比

原子是一种没有生命体的微观粒子,分析时只考虑化学成分,稳定性强,大多数在环境中不易发生变化。原子适合描述静态结构。

细胞体积比原子体积大得多,结构和功能都复杂,有细胞膜、细胞核、细胞器、细胞液等。细胞是一切生物体的组成根本,也是生命活动的主要承担者。细胞更适合描述动态结构。

细胞基本含义和 API 对照

细胞的定义来源于 https://yixue.com/细胞

细胞并没有统一的定义,近年来比较普遍的提法是:细胞是生命活动的基本单位。

细胞是是基本生命单位, 单个 API 也是可以独立访问的单元。

一般来说,细菌等绝大部分微生物以及原生动物由一个细胞组成,即单细胞生物;高等植物与高等动物则是多细胞生物。

对于简单的 API 服务,一个 API 就可以,比如IP查询、天气查询等。 对于复杂的 API 服务,需要多个 API 组合,比如购买一件商品,包含商品详情 API、订单 API、支付 API、仓储 API、物流 API等。

细胞可分为两类:原核细胞、真核细胞。 原核细胞(prokaryotic cell) 指没有核膜且不进行有丝分裂、减数分裂、无丝分裂的细胞。 真核细胞(eukaryotic cell)指含有真核(被核膜包围的核)的细胞。其染色体数在一个以上,能进行有丝分裂。

API 包括有状态的单体 API,运行的实例数量不会发生变化;也包括无状态的函数式API,可部署一个到多个,根据实际需要扩容和缩容。

由真核细胞构成的生物称为真核生物。

由无状态函数式 API 组成的 API 服务是云原生 API。

在真核细胞的细胞核中,DNA与组蛋白等蛋白质共同组成染色体结构,在核内可看到核仁。在细胞质内膜系统很发达,存在着内质网、高尔基体、线粒体和溶酶体等细胞器,分别行使特异的功能。

无状态函数式 API,按照接口定义使用指定编程语言实现,有核心源代码。API 具有输入转换、输出转换、序列化、反序列化、堆栈内存访问、过滤器、异常处理等逻辑。

真核细胞具有一个或多个由双膜包裹的细胞核,遗传物质包含于核中,并以染色体的形式存在。

API 具有至少一个核心函数,可能具有多个协程。核心功能通过源代码区别,可以通过 diff 进行比对。

染色体由少量的组蛋白及某些富含精氨酸和赖氨酸的碱性蛋白质构成。

源码包括系统函数和开发者编写的函数。

真核生物进行有性繁殖,并进行有丝分裂。

云原生 API 服务体系(平台)有专门团队负责维护,不断完善改进。API 服务可以复用部署多个实例。

细胞膜(cell membrane)为细胞与环境之间以及胞器与细胞质之间的分界,能够调节物质的进出,而膜上的蛋白质有许多种类,有的可以适时协助物质进出,有的能够传递讯息,有的则负责防御(免疫系统)的功能。

API 网关负责 API 通信、API 路由、API 代理,防御 DDOS。

细胞质位于细胞膜内,满满的液状、胶体状的(cytoplasm),可粗略分为细胞质基质和胞器。细胞质含有维持生命现象所需要的基本物质,例如糖类、脂质、蛋白质、与蛋白质合成有关的核糖核酸,因此也是整个细胞运作的主要场所,透过细胞膜外接收的讯息、细胞内部的物质,共同调节基因的表现,影响生理活动。

Docker 容器提供 API 实现的运行环境,数据交换环境。

细胞核具有双层膜的胞器,是橾控整个细胞的控掣站,主要携带遗传物质(DNA),包括染色体(脱氧核糖核酸加上一些特殊的蛋白质)、核糖核酸等,核膜上有许多小孔称做核孔,由数十种特殊的蛋白组成特别的构造,容许一些物质自由通过,但是分子量很大的核糖核酸、蛋白质就必须依赖这些蛋白辅助,以消耗能量的主动运输,来往于细胞质跟细胞核之间。

处理函数就是细胞核,用于处理满足预期特征的数据。

液胞是另一种囊状的单层膜胞器,在细胞中扮演不同角色,形状可大可小。通常植物的液胞较大。在原生动物,例如草履虫,液胞扮演伸缩泡的功能,将过多的水分收集并排出体外;大多数植物细胞液胞在细胞成熟后,占有大部分的细胞体积,可以储存水分、存放色素,有些种类植物的液胞更能够协助光合作用的进行,另外液胞也有一个很大的功能:协助细胞往大体积的方向演化同时,能够使得细胞质的表面积变大,有利物质交换。

API 的数据存储空间。

粒线体是一种双层膜的胞器,外膜平滑,内膜则朝内部形成皱折状的构造称为折襞,目的是为了增加生理作用的表面积,折襞之间充满基质,其中有许多的代谢反应进行。整个粒线体主要协助细胞呼吸,并且产生细胞使用能量最直接的形式,三磷酸腺苷。特别的是粒线体有自己的遗传分子,与细胞核的遗传物质不同,只遗传到这个胞器的子代胞器,而不是子代细胞,能够让粒线体自我分裂增殖,制造本身需要的一些蛋白质,但是仍有一些调节控制的过程受到细胞核的影响,更重要的是,粒线体基因只在母系遗传,不遵守孟德尔遗传律,有助于研究人类演化的研究。

操作系统的进程和协程,使用 CPU 时间和网络 IO。

叶绿体也是双层膜状的胞器,跟粒线体类似的地方是,它也有自己的遗传物质,能够自己分裂增殖,自制本身所需的一蛋白质。主要的功能是吸收光能,转变成化学能,并借此将无机物(二氧化碳和水)合成为有机物(糖类),这个借由光能产生营养物质的过程称为光合作用,光表示光能,合表示合成。

专用的计算机硬件设备,解释执行更加底层的计算机指令,消耗电能,完成数据计算。

小结

不言而喻,API 服务体系是动态体系。使用细胞模型描述 API 模型,不论是对于 HTTP API 还是 RPC API,都可以找到对应的概念描述。

研发 API 的过程就是培养细胞的过程,API 的无感计算就是生物体的自然生长,API 服务体系最终会演变为云原生的“活体”服务。

标签:可以,细胞,API,初探,细胞核,模型,描述
From: https://blog.51cto.com/u_13556371/5878308

相关文章

  • bitconin-cli 私有链搭建及jsonrpc-api
    精通比特币第三章,讲了如何编译等最后搭建成功之后执行:bitcoind-regtest-daemon后台运行私有链,不加-regtest默认公有链,包括之后对私有链操作,加上-regtest即可如果为了以......
  • 常用免费API接口整理
    获取图片验证码:​​http://bjsj.wenxuesucai.com/api/verification?appKey=gzgseyejeneuekeuegeeeseueiev&key=abcd123&codeLength=4&codeType=2&width=300&height=50&bgCo......
  • ebpf-1——ebpf初探
    一、简介1.eBPF提供可基于系统或程序事件高效安全执行一段特定代码的通用能力,涵盖了性能分析、系统追踪、网络优化等方面。2.eBPF有以下优势强安全:BPF验证器(verif......
  • HTAP 的下一步?SoTP 初探(上):从 “大” 数据到 “小” 而 “宽” 数据 —— 第七届中国开
    在今年的第七届中国开源年会上,StoneDB团队在大数据分论坛发表了《HTAP的下一步?SoTP初探》主题演讲,在本次演讲中,我们首次正式对外阐释了“SoTP数据库”的技术理念,本系列......
  • HTAP的下一步?SoTP初探(上):从“大”数据到“小”而“宽”数据
    在今年的第七届中国开源年会上,StoneDB团队在大数据分论坛发表了《HTAP的下一步?SoTP初探》主题演讲,在本次演讲中,我们首次正式对外阐释了“SoTP数据库”的技术理念,本系......
  • 如何用App实现巡检业务数字化?以YonBuilder移动开发平台APICloud为例
    巡检是企事业单位的常见场景之一,以消防检查为例,秋冬季节气温下降、生产繁忙,用火、用电、用气情况大量增加,消防安全事件多发,一款消防检查app可以有效减少繁复工作、提升巡......
  • 【访谈】Eolink:通过 API 连接全球企业的数据服务
    采访嘉宾:刘昊臻主持人:马畅   9月,在QECon上海站大会现场,QECon2022年度顶级合作伙伴,EolinkCEO刘昊臻接受了质效前沿的采访。刘昊臻在主会场发表了《API全......
  • IO模型
    IO模型介绍为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞   同步(synchronous)IO和异步(asynchronous)IO,阻塞(blocking)IO和非阻塞(non-block......
  • Pytorch入门(3)—— 构造网络模型
    参考:动手学深度学习注意:由于本文是jupyter文档转换来的,代码不一定可以直接运行,有些注释是jupyter给出的交互结果,而非运行结果!!文章目录​​1.模型构造​​​​1.1继承`M......
  • 机器学习基础(4)—— 模型选择之评估方法
    参考:西瓜书第二章李航《统计学习方法(第二版)》第一章现实任务中,往往有多种学习方法可供选择,对于同一个方法,使用不同的参数配置,也可以产生不同的模型。选择哪个模型(算法)、......