paint-brush
使用代理增强 API 性能经过@stdevk
353 讀數
353 讀數

使用代理增强 API 性能

经过 ST Dev 5m2023/06/29
Read on Terminal Reader

太長; 讀書

总之,提高 API 性能可以增强用户体验、提高生产力、提高可扩展性、节省成本和竞争优势,使其成为企业和开发人员的理想目标。因此,我们将解释 API 网关的基本架构,如何设置 Proxy 与 Nginx 路由 RPC 服务,并讨论这样做的优点和缺点。
featured image - 使用代理增强 API 性能
ST Dev  HackerNoon profile picture
0-item
1-item
2-item

人们想要提高 API 性能有几个令人信服的原因:

  1. 增强的用户体验:更快、响应更灵敏的 API 可以为客户或最终用户提供更流畅的用户体验。改进的性能可以减少延迟、更快的响应时间和更快的数据检索,从而带来更高效、更令人满意的用户体验。
  2. 改进的可扩展性:高性能服务器可以处理更多的请求和并发用户,从而使其更具可扩展性。对于随着用户群的扩大而需要处理不断增加的流量和数据的成长型企业来说,可扩展性至关重要。改进的 API 性能可以帮助企业满足不断增长的需求,而不会影响响应时间或服务质量。
  3. 竞争优势:高性能 API 可以为企业带来竞争优势。用户或客户往往更喜欢提供更快响应时间、更好可靠性和卓越整体性能的服务。通过提供卓越的 API 体验,企业可以从竞争对手中脱颖而出并吸引更多用户或客户。

教程学习目标

我们将设置一个代理作为中央管理系统,以提高 API 性能。代理充当客户端和服务器之间的中介。它位于发出 API 请求的客户端和托管 API 的服务器之间。当客户端发出 API 请求时,它首先通过代理,然后将请求转发到服务器。服务器处理请求并将响应发送回代理,然后代理将其转发给客户端。这允许代理根据需要拦截、修改或缓存请求或响应,从而提供优化 API 性能的机会。

先决条件

对于macOS (或Linux ),请在系统上安装Homebrew

在 Mac 上安装 Nginx

在 macOS 上安装 Nginx 的步骤如下:


1️⃣下载自制软件

要在 macOS 上安装 Nginx,必须在系统上安装HomebrewHomebrew是Mac操作系统的包管理器,可以让我们轻松安装各种Unix应用程序。如果您没有Homebrew ,请使用以下链接进行安装: https://brew.sh/

或者只需在终端上输入以下命令:

 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


2️⃣安装Nginx

自制程序包安装程序将帮助在 macOS 上安装Nginx Web 服务器。要安装Nginx ,请使用以下命令:

 brew install nginx


3️⃣编辑配置文件

默认情况下,Nginx 配置文件的位置是:

 /opt/homebrew/etc/nginx/nginx.conf

要编辑 Nginx 配置文件,您可以使用您选择的任何文本编辑器。例如,您可以使用nanovimemacs 。以下是使用 nano 编辑 Nginx 配置文件的示例命令:

 nano /opt/homebrew/etc/nginx/nginx.conf

我们将编辑侦听端口 80 的服务器块。

搜索服务器块


随后,继续包含以下三个以太坊主网 RPC 端点:

 location /nodereal { proxy_pass https://eth-mainnet.nodereal.io/v1/<API KEY>; proxy_set_header Content-Type "application/json"; } location /RPCProviderA { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; } location /RPCProviderB { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; }

可以根据需要包含多个 RPC 端点,然后保留配置文件。

为了确保不存在语法错误,请继续测试 Nginx 配置文件:

 nginx -t

🎊 如果没有错误,将显示以下结果。


nginx:配置文件/opt/homebrew/etc/nginx/nginx.conf语法没问题

nginx:配置文件/opt/homebrew/etc/nginx/nginx.conf 测试成功

要重新启动 Nginx 服务器,请执行以下命令:

 brew services restart nginx


4️⃣通过 Nginx 代理发送 API 方法

为了测试 Nginx 代理,我们通过eth_gasPrice检查以太坊上的 Gas 价格。我们将发送一个curl命令,将HTTP POST请求发送到本地计算机上运行的服务器的“/nodereal”位置(“ http://localhost ”),并使用如下所示的JSON负载:

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/nodereal


✅ {"jsonrpc":"2.0","id":1,"结果":"0xdec36a8d1"}

运行curl命令后收到的响应是来自以太坊节点的JSON-RPC响应。以下是响应的简要说明:

  • "jsonrpc":"2.0":该字段表示响应中使用的 JSON-RPC 协议的版本。
  • "id":1:该字段是该响应对应的请求的标识符。在本例中,请求的“id”为 1。"result":"0xdec36a8d1":该字段是 JSON-RPC 请求的结果。在本例中,请求的结果是以太坊网络上当前的 Gas 价格,该价格以十六进制格式作为字符串返回。

解释“0xdec36a8d1”的十进制值

“0xdec36a8d1”的十进制值为 59797579985。因此,发出请求时以太坊网络上的当前 Gas 价格为 59797579985 wei(以太币的最小面额)或 58 Gwei。

通过在本地计算机(位于“ http://localhost ”)上运行,使用其余服务器 /RPCProviderA 和 /RPCProviderB 对其进行测试:

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/RPCProviderA


🥳 您可以开始测试您自己的代理。


使用Nginx作为API网关代理的优点和缺点


使用 Nginx 作为 API 网关代理的优点:

  1. 负载均衡:Nginx 可以跨多个后端服务器分发传入的 API 请求,确保高效的负载均衡并提高性能。
  2. 缓存:Nginx 可以缓存 API 响应,减少后端服务器的负载并提高 API 响应时间。
  3. 可扩展性:Nginx 可以轻松水平扩展以适应增加的 API 流量并处理大量并发连接。
  4. 安全性:Nginx 提供各种安全功能,例如 SSL 终止、DDoS 保护和请求过滤,有助于保护 API 免受安全威胁。


使用 Nginx 作为 API 网关代理的缺点:

  1. 有限的 API 管理功能:Nginx 主要充当代理,缺乏复杂 API 生态系统中可能需要的一些高级 API 管理功能,例如 API 文档、开发人员门户和 API 版本控制。
  2. 配置复杂性:将Nginx配置为API网关需要对Nginx配置有很好的了解,这对于不熟悉Nginx的用户来说可能会很复杂。
  3. 缺乏高级认证和授权:Nginx提供了基本的认证和授权功能,但可能不具备一些API场景中可能需要的高级功能,例如OAuth、JWT验证和细粒度的访问控制。

结论

总之,提高 API 性能对于企业和开发人员至关重要。使用 Nginx 作为 API 网关的代理具有负载平衡、缓存、可扩展性和安全性等优势。但也存在 API 管理功能有限、配置复杂、缺乏高级认证和授权功能等限制。仔细考虑这些利弊至关重要。总的来说,利用 Nginx 作为代理可以成为提高 API 性能的强大工具。请继续关注下一个教程系列,因为我们将分享有关所面临的常见问题以及如何调试的更多信息。


也发布在这里