API是什么?
API是什么
API(Application Programming Interface,应用程序编程接口)是一种允许不同软件系统之间进行交互和通信的规则集合。它定义了软件组件之间如何请求和传输数据,使得开发者能够通过预定义的接口访问特定功能或数据,而无需从头编写代码。API 的存在极大地提高了软件开发的效率,促进了系统的集成和数据共享。例如,Web API 可以让网站通过 HTTP 请求从外部服务获取数据,而系统 API 则允许应用程序访问操作系统的底层功能。无论是用于访问地图服务、支付系统,还是实现跨平台功能,API 都是现代软件架构中不可或缺的一部分,它为开发者提供了强大的工具来构建复杂且灵活的应用程序。
API分层
API大致分为两大类: 一类是控制硬件的;一类是控制软件的。API伴随着计算机的发展而进化,外延逐步发生了一些变化,依据功能的差异,可大致可以分为5层计算接口:
- 硬件层: 中断是最常见的芯片与其它硬件设备的计算接口,可以说整个计算机体系就是由中断来驱动的,硬件编程的关键点就是中断处理与时钟处理。
- 驱动程序层: 驱动程序是让操作系统及应用与设备进行通信的结算接口,在编写某些特殊应用时,操作系统接口不能满足满足需求时,我们会直接调用驱动程序来控制设备,例如AI大模型最常用的Navida CUDA Toolkit。
- 系统层: 操作系统API及各类SDK是给应用程序使用操作系统的资源和功能的计算接口,例如文件系统、网络、内存、进程、图形、音频、计算等。
- 局域网应用层: 远程API技术历史比较久,在网络建立之初即出现。2000年前后,应用层API以分布式系统对象模型(Distributed System Object Model)及个性化RPC调用模型为主,比较常用的布式系统对象有OMG的Corba、微软的COM、 Java的RMI。随着互联网企业崛起及SOA概念的普及、叠加CPU及千兆网的快速发展,扩展性为主的一批 轻量级RPC模型 逐级成为主流,例如:SOAP、Protocol Buffer、Thrift、Avro、Hessian、gRPC、Dubbo、JSON-RPC等。
- 互联网应用层:RESTful API是起源于互联网SAAS、爆发于移动应用,本质是远程API的一种。之所以把它单独分为一层,是因为未来大家沟提到API时,默认语义基本指它。
狭义API架构
(此处的API专指远程API、网络API)
基于网络的API,通用调用模型都包括2个关键环节:协议层(包括序列化与反序列化)、传输层。可通过RPC、RMI、SOAP、gRPC等的调用模型比较比较来进一步了解。
当API跨越网络边界时,则会涉及到安全问题,当下有两种主要解决方案:
方法一: 在协议层增加安全扩展、在调用模型上增加认证/访问控制,例如SOAP调用模式;
方法二: 协议不变,互联网应用的通用做法,在服务端增加API网关,由网关负责身份验证及访问控制,例如:RESTful调用。
几种当下主流的API技术体系
几种当下主流的API认证方式
API生命周期
从API提供者、API使用者两个角度,将其分为API生产阶段、API消费阶段,每个阶段都单独存在,都有独特的技术栈、问题域。
有时候,企业使用三方API构建特色业务,然后将特色业务以API的方式提供给内外部客户,此时两者在业务上是上下游关系。
有时候,企业私域API数量非常多,需要统一的API治理能力,此时两者又形成交集。一般情况下,企业会以iPASS为代表的集成软件来构建API服务中台,优先服务企业内部应用,做好治理工作,然后再通过API网关+API商城实现API的开放、甚至API货币化。
API生产生命周期
以Postman为代表的API生产工具厂商,一般将API生产分为下述4个主要阶段。
API消费生命周期
幂简集成将API消费生命周期划分为两大环节、八个小阶段。这包括API对接的发现、对接、联调阶段,以及API管控的采购、发布、监控、运营、治理阶段。它全面提供了API的规划、共享、治理、安全、合规等方面的业务能力,有助于确保企业数字化业务的高可靠运行。
API集成阶段:服务于项目立项到项目上线之前的阶段,聚焦在’快速原型验证’、’快速变更API’。
- API发现
- API对接
- API联调
API管理阶段:服务于项目上线之后,分为项目0到1验证时期,聚焦在’零开发API运维’、’零开发API运营’;项目1到N高速增长时期,聚焦在’API可用性’、’数据安全’。 - API采购
- API发布
- API监控
- API运营
- API治理
最新API理念
移动互联网的兴盛、SAAS业务被企业所接受等趋势的推动下,一些新的API理念逐步提出且为大众所接受:
- Restful 约定大于一切,复用WEB基础设施,简化RPC过程、降低互操作性
- API First,面向未来的数字底座
- API货币化与API经济,AI互联网时代,一切计算都将API化来适应真正的自然交互模式及元宇宙空间
- API即产品,是B2B模式对不断变化的趋势做出的自然演变
服务注册中心
API可用性
API安全性
- 限流
限流是一种保护错误,避免服务被突发的或者大量的请求所拖垮。 - 身份认证
- 访问授权
API路由
在大型的API系统中,我们会为同一个服务部署多个节点, 以便服务可以支持大并发的访问。它们可能部署在同一个数据中心的多个节点,或者多个数据中心中,此时需要做API路由来提升可用性。
路由方式一般有两种:
- 客户端路由
- 服务端路由
路由策略有:
- 随机
从配置的节点中随机选择一个节点。最简单,但是有时候单个节点的负载比较重。这是因为随机数只能保证在大量的请求下路由的比较均匀,并不能保证在很短的时间内负载是均匀的。 - 轮询
使用轮询的方式,依次调用节点,能保证每个节点都均匀的被访问。在节点的服务能力都差不多的时候适用。 - RoundRobin
最简单的RoundRobin策略是基于策略,复杂一点的策略是基于网络质量等。 - 地理位置优先
如果我们希望的是客户端会优先选择离它最新的节点, 比如在同一个机房。 如果客户端在北京, 服务在上海和美国硅谷,那么我们优先选择上海的机房。
API工具
参考资料
API定义:
IBM API定义
Amazon API定义
Redhat API定义
API架构:
浅谈6种流行的API架构风格
SOAP vs REST vs GraphQL vs RPC