

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据密钥缓存示例
<a name="sample-cache-example"></a>

该示例将[数据密钥缓存](data-key-caching.md)与[本地缓存](data-caching-details.md#simplecache)一起使用以加快应用程序速度，其中，加密多个设备生成的数据并存储在不同的区域中。

在这种情况下，多个数据生成器生成数据，对其进行加密，然后写入到每个区域中的 [Kinesis 流](https://aws.amazon.com/kinesis/streams/)。[AWS Lambda](https://aws.amazon.com/lambda/) 函数（消费端）对流进行解密，然后将明文数据写入到区域中的 DynamoDB 表。数据生成器和消费端使用 AWS Encryption SDK 和 [AWS KMS 密钥提供程序](concepts.md#master-key-provider)。要减少对 KMS 的调用，每个生成器和消费端具有自己的本地缓存。

您可以在 [Java and Python](sample-cache-example-code.md) 中找到这些示例的源代码。该示例还包括一个定义样本资源的 CloudFormation 模板。

![此图表显示了数据生产者和使用者如何使用 Amazon Kinesis Data Streams 和 Amazon DynamoDB。 AWS KMS](http://docs.aws.amazon.com/zh_cn/encryption-sdk/latest/developer-guide/images/simplecache-example.png)


## 本地缓存结果
<a name="caching-example-impact"></a>

下表演示了本地缓存将该示例中的总 KMS 调用次数（每个区域每秒）减少到原始值的 1%。


**生成器请求**  

<table>
<tbody>
  <tr><td rowspan="2"></td><td colspan="3">每个客户端每秒的请求数</td><td rowspan="2">每个区域的客户端数</td><td rowspan="2">每个区域每秒的平均请求数</td></tr>
  <tr><td>生成数据密钥 (us-west-2)</td><td>加密数据密钥 (eu-central-1)</td><td>总计（每个区域）</td></tr>
  <tr><td>无缓存</td><td>1</td><td>1</td><td>1</td><td>500</td><td>500</td></tr>
  <tr><td>本地缓存</td><td>1 rps/100 次使用</td><td>1 rps/100 次使用</td><td>1 rps/100 次使用</td><td>500</td><td>5</td></tr>
</tbody>
</table>



**使用者请求**  

<table>
<tbody>
  <tr><td rowspan="2"></td><td colspan="3">每个客户端每秒的请求数</td><td rowspan="2">每个区域的客户端数</td><td rowspan="2">每个区域每秒的平均请求数</td></tr>
  <tr><td>解密数据密钥</td><td>创建者</td><td>Total</td></tr>
  <tr><td>无缓存</td><td>每个创建者 1 rps</td><td>500</td><td>500</td><td>2</td><td>1000</td></tr>
  <tr><td>本地缓存</td><td>每个创建者 1 rps/100 次使用</td><td>500</td><td>5</td><td>2</td><td>10</td></tr>
</tbody>
</table>
