这些 google KMS 客户端包之间的区别是什么? (CloudKMS 与 KeyManagementServiceClient)

Which is the difference between these google KMS client packages? (CloudKMS vs KeyManagementServiceClient)

我有一个 java 代码库似乎正在使用 "com.google.api.services.cloudkms.v1.CloudKMS" 来调用 KMS。在线文档说使用 "com.google.cloud.kms.v1.KeyManagementServiceClient"

当我查找时,这两个包似乎都已更新,但是参考文档建议使用后者。

https://developers.google.com/resources/api-libraries/documentation/cloudkms/v1/java/latest/com/google/api/services/cloudkms/v1/CloudKMS.html

https://cloud.google.com/kms/docs/reference/libraries

有人能告诉我这两个客户端包之间的区别是什么吗?我是否应该转到参考链接的那个?

一般来说,您应该更喜欢 Reference Libraries page 上引用的库,当前 com.google.cloud.kms。网站上的示例和教程将使用此客户端库。

可能比您需要知道的更多历史,但我们有两个客户端库,因为它们 运行 使用不同的协议。新库(参考页上列出的库)使用 gRPC 进行通信。这意味着更少的带宽和更少的时间花费 serializing/de-serializing JSON。另一方面,gRPC 需要 HTTP/2,而一些组织还不能t/won 不支持 HTTP/2。因此,我们仍然发布和维护基于 HTTP/1 的 REST 遗留库。强烈建议你使用 gRPC 除非你不能使用 HTTP/2.

您可以在 Kickstart your cryptography with new Cloud KMS client libraries and samples 中阅读有关背景和技术细节的更多信息。