API低代码开发平台实践。
一、前言
API低代码平台是面向业务人员和IT人员双向驱动管理的能力平台,拥有通用场景的可视化配置能力,满足运营创新场景需求实现,还具有优异的开放性和扩展性,能够通过二次开发实现企业规划设计时的各类个性化场景需求,扩展方式不仅限于是代码开发,插件扩展,以及社会化插件引用等。
API低代码平台的技术门槛低、交付周期短、开发效率高、敏捷创新快等特点,能够帮助企业在数字化转型中快速实现“业务数字化”到“数字业务化”,完全符合数字化转型趋势的场景化,扁平化和在线化,是数字化转型中必不可少的数字技术工具平台。
二、API生命周期管理
上图是完整的API低代码平台,整个API低代码平台简单来讲分为四个子系统,即API服务网关、API开发子系统、API运维子系统、API引擎子系统。API服务网关提供API注册和发现功能。PI开发子系统开发API服务接口。API引擎子系统暴露标准的API服务接口。API运维子系统负责从从引擎采集日志信息以及进行API性能监控和日志监控分析。API治理子系统实现API接口从设计、开发、测试、部署上线的全生命周期管理,也可以理解为API开发、API引擎、API 运维、API服务网关你的的一个统一管理门户,实现和各的子系统集成,可以支持自动部署配置完成的API到微服务运行平台。API运行环境则为API低代码平台提供可扩展、动态伸缩的运行环境。
三、API网关
API网关更多的是解决运行态的问题,API网关本身应该轻量化设计,主要实现API注册、限流、熔断、鉴权、反向代理等,不做太多的协议转换、适配、数据映射等工作,这些工作应该放到API开发平台来完成。在笔者的实践中,采用了Kong API网关来担当API低代码平台的服务网关,充分利用Kong强大的API实现API接口的注册与发现、健康检查、OAuth协议认证等。Kong作为API网关提供了API管理功能,及围绕API管理实现了一些默认的插件,另外还具备集群水平扩展能力,从而提升整体吞吐量。Kong本身是基于OpenResty,可以在现有Kong的基础上进行一些扩展,从而实现更复杂的特性。
在权限控制方面,通过服务网关OAuth2.0 authentication和安全控制插件ACL或Basic等插件,实现系统级权限认证和接口级权限认证,保证权限的安全。在流量控制方面,通过Rate-Limiting实现Consumer、Credential、IP、Service级别的限流,实现Second、Minute、Hour、Day、Month粒度的流控。
四、API开发子系统
API开发子系统最终就是开发完成并暴露一个标准的HTTP API接口,并将接口注册和接入到API网关。API设计和开发的核心思想仍然应该是基于领域对象建模驱动,通过领域对象建模很好的实现接口和底层数据库,数据库表之间的解耦,也方便实现底层多数据库,多表的支持能力。当前很多API快速开发平台都是基于数据库对象或表,直接发布类似CRUD的API接口服务,但是基于是数据库表的直接发布,我们仍然建议逆向对象这层,方便后续在对象层进行相关的组合,规则扩展等操作。
API开发子系统通过可视化页面生成接口逻辑,并用脚本语言来描述API的业务逻辑和处理返回的数据结构体,比如采用JavaScript。在接口设计过程中,常常预留可编程接口,比如本例中的API查询脚本和API预后处理。下图是API业务逻辑的例子。
在API开发子系统创建对象,并对数据项进行定义,对象是一个多层的树状结构实体。一个对象可以向数据库生成多张表。对于已经存在的数据对象,也可以进行组合,将多个组合为一个复合对象结构。对象的好处即是一个完整的对象属于同一生命周期,可以一起进行事务控制。一个设计好的对象可以默认生成标准的POST,GET,DELETE等接口操作方法,类似下图,整个对象接口契约的生成也应该是自动的。
五、API引擎子系统
API引擎子系统利用API开发平台生成的接口配置信息,生成可利用的API接口,并通过API服务网关对外提供标准协议的API服务。API查询脚本和API预后处理通常采用脚本语言来描述API的业务逻辑,比如采用JavaScript。API脚本常常采用JavaScript语言来表达,利用JS强大的语言特性,生成API的业务逻辑。通过脚本解释器生成可执行的脚本,然后发送到数据库,并将执行的结构封装成JSON结构体。API预后处理采用预留接口来处理返回的数据,比如采用JavaScript来处理查询引擎返回JSON结构体,然后返回给服务调用者。
六、API运维子系统
API运维子系统主要包括监控和日志两方面。监控主要包括调用量、调用失败次数、响应时间、调用数据量等。日志主要包括平台自身日志和API日志,在本例中采用ES存储日志。
七、API治理
API接口发布:对于完成的对象定义,可以选择具体发布哪些API接口服务能力。比如可以只选择发布查询接口,也可以只选择发布数据导入的POST接口等。注意API接口的发布,具体可以基于全局的对象建模,配置具体需要发布到接口的数据项信息。很多时候我们对数据对象的操作,并不是操作整个对象全集,而仅仅是部分数据项。
API接口模拟测试和验证:可以对发布的API接口进行模拟测试和验证,因此需要提供在线的API测试工具,能够方便在线进行API接口的测试工作。同时可以对测试过的用例和测试数据进行保存。
API接口文档生成:支持自动生成API接口文档的能力。这个地方可以直接对接类似开源Swagger等工具来实现API接口文档的自动生成功能。
八、总结
API低代码平台可以快速生成API接口,可以将多个对象或多个API接口服务打包到一个微服务应用再进行部署和发布,对微服务API进行打包处理。打包完成的微服务可以导出为独立的JAR包进行部署,也可以直接在API开发平台进行托管部署。对于API开发平台本身应该对接到微服务运行平台。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。