我们如何减少产品配置管理SDK的峰值内存和CPU使用
GrabX is Grab’s central platform for product configuration management. It has the capacity to control any component within Grab’s backend systems through configurations that are hosted directly on GrabX.
GrabX是Grab的产品配置管理中心平台。它有能力通过直接托管在GrabX上的配置来控制Grab后端系统中的任何组件。
GrabX clients read these configurations through an SDK, which reads the configurations in a way that’s asynchronous and eventually consistent. As a result, it takes about a minute for any updates to the configurations to reach the client SDKs.
GrabX 客户端通过 SDK 读取这些配置,SDK 以异步和最终一致的方式读取配置。因此,任何配置更新大约需要一分钟才能到达客户端 SDK。
In this article, we discuss our analysis and the steps we took to reduce the peak memory and CPU usage of the SDK.
在本文中,我们讨论了我们的分析以及我们采取的步骤,以减少SDK的峰值内存和CPU使用量。
Observations on potential SDK improvements
关于SDK改进的观察
Our GrabX clients noticed that the GrabX SDK tended to require high memory and CPU usage. From this, we saw opportunities for further improvements that could:
我们的GrabX客户注意到GrabX SDK往往需要高内存和CPU使用率。由此,我们看到了进一步改进的机会,这些改进可以:
- Optimise the tail latencies of client services.
- 优化客户端服务的尾部延迟。
- Enable our clients to use their resources more effectively.
- 使我们的客户能够更有效地使用他们的资源。
- Reduce operation costs and improve the efficiency of using the GrabX SDK.
- 降低运营成本并提高使用GrabX SDK的效率。
- Accelerate the adoption of GrabX by Grab’s internal services.
- 加速Grab内部服务对GrabX的采用。
SDK design
SDK 设计
At a high-level, creating, updating, and serving configuration values via the GrabX SDK involved the following process:
在高层次上,通过GrabX SDK创建、更新和提供配置值涉及以下过程:
Figure 1. Previous GrabX SDK design.
图1. 之前的GrabX SDK设计。
-
The process begins when GrabX clients either create or update configurations. This is done through the GrabX web portal or by making an API call.
该过程始于GrabX客户创建或更新配置。这是通过GrabX网络门户或通过API调用完成的。
-
Once the configurations are created or updated, the GrabX backend module takes over. It stores the new configuration into an SQL database table.
一旦配置被创建或更新,GrabX后端模块就会接管。它将新配置存储到一个SQL数据库表中。
-
The GrabX backend ensures that the latest configuration data is available to client SDKs.
GrabX后端...