

# DAX SDK for Go
<a name="DAX.client.run-application-go"></a>

按照此过程操作，在 Amazon EC2 实例上运行 Amazon DynamoDB Accelerator (DAX) SDK for Go 示例应用程序。

**为 DAX 运行 SDK for Go 示例**

1. 在 Amazon EC2 实例设置 SDK for Go：

   1. 安装 Go 编程语言 (`Golang`)。

      ```
      sudo yum install -y golang
      ```

   1. 测试 Golang 是否已安装且运行正常。

      ```
      go version
      ```

      应该显示类似下面的消息。

      ```
      go version go1.15.5 linux/amd64
      ```

      其余指令依赖 Go 版本 1.13 默认的模块支持。

1. 安装 Golang 示例应用程序。

   ```
   go get github.com/aws-samples/aws-dax-go-sample
   ```

1. 运行以下 Golang 程序。第一个程序创建一个名为 `TryDaxGoTable` 的 DynamoDB 表。第二个程序向表中写入数据。

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dynamodb -command create-table
   ```

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dynamodb -command put-item
   ```

1. 运行以下 Golang 程序。

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dynamodb -command get-item
   ```

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dynamodb -command query
   ```

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dynamodb -command scan
   ```

   记下计时信息—`GetItem`、`Query` 和 `Scan` 测试所需的时间（以毫秒为单位）。

1. 在上一步中，您已针对 DynamoDB 端点运行程序。现在，重新运行这些程序，但此次，`GetItem`、`Query` 和 `Scan` 操作将由 DAX 集群处理。

   要确定 DAX 集群的端点，请选择下列选项之一：
   + **使用 DynamoDB 控制台** — 选择 DAX 集群。集群端点显示在控制台中，如下面的示例所示。

     ```
     dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com
     ```
   + **使用 AWS CLI** — 输入下面的命令。

     ```
     aws dax describe-clusters --query "Clusters[*].ClusterDiscoveryEndpoint"
     ```

     集群端点显示在输出中，如下面的示例所示。

     ```
     {
         "Address": "my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com",
         "Port": 8111,
         "URL": "dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com"
     }
     ```

   现在再次运行这些程序，但这次将集群端点指定为命令行参数。

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dax -command get-item -endpoint my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com:8111
   ```

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dax -command query -endpoint my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com:8111
   ```

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dax -command scan -endpoint my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com:8111
   ```

   查看输出的其余内容，并记下计时信息。与 DynamoDB 相比，使用 DAX 时，`GetItem`、`Query` 和 `Scan` 的运行时间应明显更短。

1. 运行以下 Golang 程序以删除 `TryDaxGoTable`。

   ```
   go run ~/go/pkg/mod/github.com/aws-samples/aws-dax-go-sample@v1.0.2/try_dax.go -service dynamodb -command delete-table
   ```