关于etcd的介绍大家可以看下这篇文章 etcd
开源仓库地址:EtcdKeeperFyne
今天主要是向大家推荐一款使用起来特别方便的Etcd管理工具 EtcdKeeperFyne,具体运行起来的界面如下:

etcd 跨平台管理工具,用于连接etcd,对etcd进行增删改查等…
目前常见的Etcd管理工具都是基于web的,使用时通常还需要自己搭建一个web服务器,而且操作起来很不方便,基于此诞生了这款使用方便,操作简单的Etcd管理工具。
特点:安装简单,使用方便
如果感觉该软件对你有用可以请开发人员喝杯咖啡!!!

后续有什么软件开发建议欢迎提交Issu或者关注公众号:码上有话!后台留言

采用go语言fyne库提供的模块化功能,将etcd中常用的增删改查进行UI化
本软件具有go语言的特点,所有程序都是单独的可执行程序,所见及所得,直接下载对应版本软件然后执行即可,如果出现以下界面说明软件启动成功。

先将源码下载过来
git clone https://gitee.com/andrewgithub/EtcdKeeperFyne.git
然后进入源码目录 EtcdKeeperFyne,执行 go build,执行结束会得到一个EtcdKeeperFyne(linux)的binary可执行文件或者EtcdKeeperFyne.exe(windows)的可执行文件。
如果在windows上执行出现一下问题:

说明你的电脑里面缺少必要的opengl兼容库,可以去 https://fdossena.com/?p=mesa/index.frag 上下载对应版本的兼容dll,然后将下载的openglxx.dll和EtcdKeeperFyne.exe放到同一目录下执行即可
如果是64位windows电脑可以直接下载目录下的opengl32.dll使用
点击etcd->Host

在Index一栏选择当前连接使用的连接号,默认情况下先连接0号客户端再连接1号客户端,如果只需要连接一个客户端Index默认选0即可
然后填入连接etcd需要的用户名,密码以及host(地址和端口),其中用户名和密码默认情况下可以不填写。

填写完之后选择Log In按钮创建连接。
如果连接过程出错会在应用做下角提示最近的出错信息

更换主题就不多说了,就是对软件进行常见的字体大小,颜色以及主题进行设置,根据个人喜好进行设置即可,设置好之后点击Apply设置的参数会立即生效。

点击左上角的刷新按钮,会对kye-value值进行刷新,如果有其它软件同步修改etcd的kv值,需要人工点击下刷新,获取新的kv值

在刷新按钮的左侧提供了创建租约的工具,TTL(单位s)后面填写租约的时间,后面的曲别针按钮即创建租约的按钮,点击之后即可创建对应ttl的租约。

在key中填上对应的key值,value中输入value值,点击add按钮即实现了kv的设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNM9Tkd3-1680229530468)(image/2023-03-13-14-48-10-image.png)]
如果创建kv时需要绑定租约,需要先创建租约,然后在菜单中点击Edit->Lease或者使用快捷键Alt+L调用出租约选择窗口

选择对应的租约(确保当前etcd中存在租约),然后按确认键即可

租约选择好之后,会在右下角提供当前使用的租约

以上操作完之后,再添加kv值就是绑定租约之后的kv值了,如果想创建永久变量,需要重新在租约选择界面 Edit->Lease界面将租约选择为0,然后在添加KV值
点击值列表左侧对应的Delete按钮即可

点击对应key值,并在右侧详细信息列表中选中Value Edit即可查看对应值信息

选中对应的key值,之后在详细信息界面修改对应value值然后点击下方的长条更新按钮即可更新对应的Value值

详细信息中部是租约查看列表,KeeperAlive用来对对应的LeaseID进行续租,Refresh会刷新对应LeaseId的租约信息,主要的是最右侧的剩余时间

如果value中存储的Value值很大,在详细信息界面查看value值查看不全,可以点击ValueShow界面单独查看对应的value值信息

切换到Lease界面,点击对应的租约信息节课即可查看对应Lease租约绑定的key值信息

确保连接两个Etcd服务器
镜像需要在两个Etcd之间进行,如果先前没有连接过Etcd这时需要在菜单中Etcd->Host->Index中从0开始连接,然后在Index选择1连接,两个都连接成功之后,可以在详细信息页面选择切换查看是否两个Host都连接成功

另外,选择按钮下方两个颜色块,正常情况下是灰显的,只有对应客户端连接成功之后才会变成彩色呼吸样式,颜色一直呼吸,说明两个客户端都处于连接成功状态
注:必须保证连接的两个Etcd不是同一个,否则一个Etcd往自己身上镜像时会导致死循环,因为A->A,镜像,那么A->A镜像的过程又会通知A,比如你向A写入一个值,A会通知A(执行镜像的一端)有新值来了,你要不要镜像过去,A说来吧。然后执行镜像,但是执行镜像还是会向A中写入一个值,这个时候A又通知A(执行镜像的一段)又有新值来了,你要不要镜像噻?A说来吧…,就这样陷入了死循环,导致机器要么性能耗尽要么内存耗尽。
调整镜像方向
通过点击呼吸方块上的In/Out按钮,可以调整那个Etcd读那个Etcd写入,Out代表从该Etcd中读入数据,In代表往该Etcd中写入数据
开始镜像
如果以上过程都执行成功,那么就可以开启镜像了,开启镜像比较简单,只需要店家Make Mirror按钮即可,开启镜像之后会有代表镜像运行过程的按钮一直在来回运动,说明镜像在一直执行


开启镜像功能之后数据会从Out->In的方向进行自动复制,你只需向Out的Etcd中写入数据,对应的数据会自动同步到In的Etcd中
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir
我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下