bitapihub/api-optimization-engine

API 优化引擎可以加快开发时间和 API 调用的速度。

0.1.0 2015-07-11 20:00 UTC

This package is auto-updated.

Last update: 2024-09-05 03:40:05 UTC


README

API 优化引擎使您的服务器与其他服务器通信更快,同时简化软件开发,保持代码整洁。此引擎实现了 Rick Mac Gillis 在其著作《The New Frontier in Web API Programming - Your Guide to API Optimization.》中定义的优化。

该引擎支持基于账户的环境,以满足希望为不同账户提供不同 API 以及不同账户包的不同 API 的 SaaS 公司的需求。每个账户可以拥有自己的 API,并且 API 也可以标记为可供最低包级别以上的任何人使用。

注意:此软件适用于处理大量 API 调用的公司,无论是通过多个用户还是单个用户通过多次调用。它旨在通过减少客户端基础设施上昂贵的 API 调用负载来加速您的公司网络。如果您处理的 API 调用量不是很大(大约每分钟 500 个以上)或您的调用不是“重型”调用(1MB+),那么您可能不会从使用此软件中受益。此外,该引擎旨在在云环境中运行,而不是共享托管或 VPS 系统。它应该安装在独立的虚拟或物理系统上。

要求

  • PHP 5.6+
  • MySQL 或 MariaDB 5.5+

可选

框架

该引擎使用最快的全功能 PHP 框架 FuelPHP 构建。检查框架的配置设置以实现完全定制的系统,包括您选择的缓存系统和数据库。

项目状态

状态:已停用

此项目的最后状态是测试版。由于我有太多的客户项目要处理,我目前不再维护此项目。如果它获得足够的关注,我将考虑重写它。

警告 此项目未采用模块化设计,这对于可维护性至关重要!因此,如果您决定全部或部分使用此项目,强烈建议您将其模块化。当我编写此代码时,我还没有发现 Robert C. Martin 的 Clean Code 标准,并且坦率地说,代码库看起来很糟糕。

如果您正在评估我为您下一个项目,请查看我的新项目,例如 Hack Fast AlgosRick Mac Gillis.com 的源代码

限制

  • 该引擎不处理文件上传。
  • 该引擎不处理流式 API 调用。
  • 该引擎永远不会威胁您,实际上,它不能说话。
  • 蛋糕是谎言。

版本控制

该项目实际上有两种类型的版本控制。

Git - Git 版本控制系统使用语义版本控制(SemVer),并确保您的代码始终保持稳定。

API 版本 - 当新的 API 功能与旧的 API 功能不兼容时,API 版本会发生变化。(例如语法更改)当您认为 API 版本是一个“新增功能”时,您仍然始终可以访问 API 的原始版本。只有当 SemVer 版本更改为新的大版本时,当前的一些或所有 API 版本才可能被删除或替换。

设置

  1. 在 shell 中,运行以下命令,安装引擎的位置。
composer require bitapihub/api-optimization-engine
  1. 编辑您的配置文件以满足您的需求,特别是您的数据库配置。同时,请确保更改 .htaccess 文件中的所需环境设置。将 .htaccess 文件转移到 http.conf 以提高其运行速度。
  2. 通过 shell 接口,将目录更改为您的根安装目录。(例如:/var/www/aeo),然后运行以下命令
php oil refine install
php oil refine migrate current

第二个命令需要一个合适的数据库配置。

您的安装已完成,现在您可以手动将 api_data.sql 中的演示数据导入到您的数据库中。请阅读手册以获取进一步说明。

优化

调用处理服务器 - 将您的调用通过单个服务器或一组 API 调用处理服务器路由,以减轻您的 Web 服务器的负载。请记住,所有 TCP 请求至少需要 9 个事务!API 优化引擎是构建调用处理服务器所需缺失的代码。

批量处理 - 通过向调用处理服务器发送多个请求来批量处理您的 API 调用,以避免单次请求浪费资源。

并行调用处理 - 引擎使用 stream_socket_client() 和 stream_select() 以非阻塞模式(并行)处理您的调用,因此您只需等待最长的调用完成即可。请记住,在串行中,调用时间会累积,使三个 5 秒的调用变成 15 秒的调用。

RAML 建模语言 - 停止使用使代码难以阅读的混乱 SDK 来膨胀您的代码。只需通过编写易于学习的 RAML 规范来描述您正在接触的远程 API。

不要等待响应 - 您不需要调用每个 API 的响应,为什么要等待呢?只需指示引擎您不希望收到响应,它将排队调用并用自己的通用消息回复。

预配置您的请求 - 通过使用名为“静态调用”的机制,您可以预配置请求数据保持不变的那些调用。因此,您可以直接在 RAML 文档中维护请求,同时只将基本数据传递给调用处理服务器。

使用一种格式 - 现在,您可以使用 JSON 与 XML 服务器进行通信,或者使用 XML 与 JSON 服务器进行通信,同时保持您的项目没有转换类,代码更加简洁。

缓存 - 引擎通过框架支持缓存选项,因此您可以按自己的方式缓存。使用 Redis、Memcached、文件系统或数据库。引擎将缓存重复数据,如非ces、使用数据和静态调用响应。(您可以在配置选项中关闭静态调用响应缓存。)

进行中

以下功能已计划开发,但尚未实现。

调用调度 - 将优先处理的调用排队,以便稍后处理,并且引擎将根据服务器负载运行调用。设置一个截止时间,以从系统中清除过时的调用。

Webhook响应处理 - 当您需要相对较快的响应时,尽管远程服务器的响应时间可能太慢,可以使用webhook。只需将请求发送到调用处理服务器以获取通用响应。如果客户端有人在等待,运行一个AJAX请求来检查调用处理服务器是否已将响应发送到webhook。如果您在后台进行调用,则可以按需处理响应。

手册

该引擎相当复杂,尽管您与之交互的代码相当简单。请查看手册以了解如何安装该引擎以及如何与之交互。