七叶笔记 » golang编程 » 「译」 Java 和 etcd: 因为 jetcd 最终走到了一起

「译」 Java 和 etcd: 因为 jetcd 最终走到了一起

简介: 可靠的键值存储为 分布式系统 提供了一致性配置和协调的公共基础。etcd 项目就是一个这样的系统,这是一个由 CoreOS 创建的开源键值存储系统。它是许多生产级分布式系统的核心组件和 Kubernetes 等项目的数据存储中心。

原文地址:Java and etcd: together at last, with jetcd

原文作者:Fanmin Shi

译文出自:掘金翻译计划

本文永久链接: Git hub.com/xitu/gold-m…

译者:mingxing

校对者:xiantang

(因为内容较多,进行了文章删减,阅读全文可以通过点击下方“了解更多”进行浏览)

文章摘自: 阿里云 开发者社区


可靠的键值存储为分布式系统提供了一致性配置和协调的公共基础。etcd 项目就是一个这样的系统,这是一个由 CoreOS 创建的开源键值存储系统。它是许多生产级分布式系统的核心组件和 Kubernetes 等项目的数据存储中心。

Java 已经通过在包括 Hadoop 生态系统、 Cassandra 数据存储和云基础设施技术栈中的使用而证明了自己是一种流行的分布式系统语言。此外,它仍然是一种非常流行的语言。可以看看在谷歌趋势的统计数据中,Java 仍然占据主导地位:

就谷歌搜索结果而言,Java 仍然比 Microsoft 的 .Net 甚至 JavaScript 语言更受欢迎

面对着 Java 的流行及其在分布式系统中的普遍使用,我们认为对于 Java 开发来说,etcd 也应该作为后端基础被使用到。jetcd 这个新的 etcd 客户端的出现,将 etcd v3 API 带到了 Java 中。

通过使用 jetcd,Java 应用程序可以使用包装了 etcd 的原生 gRPC 协议的智能 API 来与 etcd 进行纯粹的交互。该 API 提供了仅在 etcd 上可用的表达性分布式特性。更重要的是,通过直接支持更多的语言,使用新的使用模式更容易为 etcd 编写新的应用程序,从而帮助 etcd 变得更加稳定和可靠。

初级入门

你可以通过构建并运行一个名为 jetcdctl 的小例子程序来试用 jetcd,该程序使用了 jetcd 去访问 etcd。对于更进一步的 jetcd 项目来说,jetcdctl 示例也是一个很好的起点。要继续学习,你还需要同时安装 Git 和 Java。

首先,克隆 jetcd 库来获取 jetcd 源码,然后使用 Maven 来构建 jetcd-simple-ctl 吧:

$ git clone 
$ cd jetcd/jetcd-examples/jetcd-simple-ctl
$ ./mvnw clean package
 

构建并准备好运行 jetcdctl 之后,下载一个 etcd 发行版并在本地启动一个 etcd 服务。(译者注:若以下 “go get” 命令无法正常运行,可以参考这里的资料):

# build with “go get github.com/coreos/etcd/cmd/etcd”
$ etcd &
 

接下来,使用 jetcdctl 将 123 写入 abc,与本地 etcd 服务器进行通信:

$ java -jar target/jetcdctl.jar put abc 123
21:39:06.126|INFO |CommandPut - OK
 

你可以通过读取 abc 来确认写入 etcd 的 put 命令的正确性:

$ java -jar target/jetcdctl.jar get abc 21:41:00.265|INFO |CommandGet - abc 21:41:00.267|INFO |CommandGet - 123
 

我们已经通过 get 和 put keys 演示了 jetcd 的基本功能。现在,让我们进一步研究如何在代码中使用 jetcd 吧。

更好的 watches(观察)特性

jetcd API 可以方便地管理 etcd 的底层 gRPC 协议。一个例子是 streaming key 事件,其中客户端观察 key,etcd 服务端不断地往客户端发回更新信息。jetcd 客户端管理着一个低级别的 gRPC 流,用来优雅地处理断开连接,并向用户呈现一个无缝的事件流。

相关文章