dubbo+etcd搭配(代码片段)

sp42a sp42a     2023-04-05     439

关键词:

选型

确定 Dubbo 3 + ectd 3 的方案了。先单机部署,再集群。

下载 etcd 二进制可执行文件

release 查找自己需要的版本。

# 下载
cd /data/etcd/
wget https://github.com/coreos/etcd/releases/download/v$ETCD_VERSION/etcd-v$ETCD_VERSION-linux-amd64.tar.gz

# 解压
tar xvf etcd-v$ETCD_VERSION-linux-amd64.tar.gz
# 复制到/usr/local/bin/下,默认已经有可执行权限了,无需在使用chmod +x。
mv etcd-v$VER-linux-amd64/etcd* /usr/local/bin/

# 或者通过 yum 安装也行
yum install -y etcd

如果是上传 etcd 可执行文件,提示“权限不够”?改下:chmod 777 etcd

使用 etcd

测试下:./etcd --version,没问题后运行。

etcdctl 是官方提供的客户端程序,我们测试下(最好可以在别的机器上测试)。

# 验证服务状态
./etcdctl --endpoints=http://$YOUR ETCD IP:2379 endpoint health

输出结果:

写入键值对:

./etcdctl --endpoints=localhost:2379 put foo "Hello World!"

如果出现 bash: !": event not found,可执行:set +H

配置

开放防火墙端口

CentOS 6.7 下修改 /etc/sysconfig/iptables 文件,加入 2379 端口和 2380 端口(用于集群通讯)。全部修改完之后重启 iptables:service iptables restart 。你可以验证一下是否规则都已经生效:iptables -L

开启远程访问

etcd 安装完成后,默认只能本地访问,如果需要开启远程访问,还需要修改配置文件。我使用的当前文件夹下的配置文件 etcd.conf,内容如下。

"listen-client-urls":"http://0.0.0.0:2379"

带配置文件启动 etcd:

./etcd --config-file=etcd.conf
nohup ./etcd --config-file=etcd.conf &

与 Dubbo 搭配

笔者开始使用 Dubbo 最新版本 3.0.9,但官方的 etcd 注册中心的驱动一直没有升级,仍在 2.x 时代,于是我只好降级使用 2.7.16。

<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo</artifactId>
	<version>2.7.16</version>
</dependency>

尽管上述 dubbo 依赖已经包含了 etcd 驱动的类,但缺少 etcd 与 Java 通讯的包,增加下面依赖:

<!-- etcd 注册中心驱动 -->
<dependency>
	<groupId>io.etcd</groupId>
	<artifactId>jetcd-core</artifactId>
	<version>0.7.1</version>
</dependency>

<!-- etcd 注册中心驱动依赖 -->
<dependency>
	<groupId>com.google.protobuf</groupId>
	<artifactId>protobuf-java</artifactId>
	<version>3.5.1</version>
</dependency>

连不上 etcd 怎办办?检查防火墙、是否开启远程等的操作,试试把官方 github 的单测EtcdServiceDiscoveryTest在本地改你 etcd 地址试试。Web 程序启动的时候同时启动 Dubbo 服务端,会比平时启动的时间久一点。

etcd Web GUI

就是管理界面了。有以下选择:

  • ETCD Keeper,推荐,有 exe 提供,开箱即用
  • etcdv3-browser,要配置 Go 和 nodejs,好像比较麻烦,但好处是前端用 Vue 写,适合我
  • etcd-browser,支持后悔药的 etcd ui ——我不懂 后悔药是什么意思
  • boot4go-etcdv3-browser,作者宣传得很厉害,好像很不错样子,还有 Docker 的。
  • etcd browser,最老的 GUI,直接提供 html,这点很好,立刻可用。后端居然是 nodejs,而且非常简单。不过这项目已经不再更新了,只支持 etcd v2

小结

下面是关于 Dubbo + etcd 重量级的文章,之所以说“重量级”,是因为内容太深了,看不懂,只能于此备份一下。

dubbo+etcd搭配(代码片段)

选型确定Dubbo3+ectd3的方案了。先单机部署,再集群。下载etcd二进制可执行文件到release查找自己需要的版本。#下载cd/data/etcd/wgethttps://github.com/coreos/etcd/releases/download/v$ETCD_VERSION/etcd-v$ETCD_VERSION-linux-amd64.tar.gz#解压tarxvfetcd-v$ET... 查看详情

dubbo与springboot的搭配使用

1.版本匹配问题dubbo官网上是有说明的,也有具体的例子。https://github.com/apache/incubator-dubbo-spring-boot-project1.x版本的springboot需要对应0.1版本的dubbo-spring-boot-starter跟较低版本的dubbo。2.x版本的springboot对应0.2版本的dubbo-spring-boot-star 查看详情

2.etcd集群的安装(cfssl版)(代码片段)

etcd的安装注意两点1.systemd的配置文件  2.证书1.解决systemd的问题,想安装指定版本的etcd可以通过yum方式安装etcd可以获得systemc和etcd.conf的模板。[[email protected]etcd-v3.3.13-linux-amd64]#rpm-qletcd/etc/etcd/etc/etcd/etcd.conf/usr/ 查看详情

搭建etcd集群(代码片段)

  最近分布式项目开发中用到订阅/通知机制,经过选型决定采用etcd,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。本系列总共3篇:《搭建etcd集群》:介绍搭建etcd集群方式... 查看详情

etcd原理(代码片段)

etcd简介ETCD是用于共享配置和服务发现的分布式,一致性的KV存储系统。它是一个优秀的高可用分布式键值对存储数据库。etcd内部采用了Raft协议作为一致性算法,且使用Go实现。ETCD作为一个受到ZooKeeper与docker启发而催生... 查看详情

云原生训练营模块五kubernetes控制平面组件:etcd(代码片段)

etcd----------Part1----------etcd概述etcd功能与场景服务注册与发现,消息发布与订阅Etcd的安装etcd工具练习Raft协议❤etcd基于Raft的一致性选举方法日志复制安全性失效处理wal日志----------Part2----------etcdv3存储,Watch以及过期机制... 查看详情

云原生训练营模块五kubernetes控制平面组件:etcd(代码片段)

etcd----------Part1----------etcd概述etcd功能与场景服务注册与发现,消息发布与订阅Etcd的安装etcd工具练习Raft协议❤etcd基于Raft的一致性选举方法日志复制安全性失效处理wal日志----------Part2----------etcdv3存储,Watch以及过期机制... 查看详情

go任务调度5(go操作etcd)(代码片段)

连接etcd:packagemainimport("fmt""go.etcd.io/etcd/clientv3""time")var(configclientv3.Configclient*clientv3.Clienterrerror)funcmain()//客户端配置config=clientv3.ConfigEndpoints:[]string"0.0.0.0:2379",//集群列 查看详情

golang基于etcd做分布式任务锁(代码片段)

参考:https://www.jianshu.com/p/d7434d916856etcd服务搭建请看上一篇,下面直接上代码:#goget github.com/etcd-io/etcdmain.go内容如下:packagemainimport("context""fmt""time"//"github.com/etcd-io/etcd/clientv3"这个引用会导致启动失败"go.e 查看详情

编译etcd-cpp-apiv3(代码片段)

  最近分布式项目开发中用到订阅/通知机制,经过选型决定采用etcd,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。本系列总共3篇:《搭建etcd集群》:介绍搭建etcd集群方式... 查看详情

k8s部署etcd集群(代码片段)

1、k8s部署高可用etcd集群时遇到了一些麻烦,这个是自己其中一个etcd的配置文件例如:[Unit]Description=EtcdServerAfter=network.targetAfter=network-online.targetWants=network-online.targetDocumentation=https://github.com/coreos[Service]User 查看详情

shinstall-etcd-3.2.9.sh(代码片段)

查看详情

shinstall-etcd-3.2.9.sh(代码片段)

查看详情

搭建etcd集群(代码片段)

  最近分布式项目开发中用到订阅/通知机制,经过选型决定采用etcd,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。本系列总共3篇:《搭建etcd集群》:介绍搭建etcd集群方式... 查看详情

etcd-cpp-apiv3使用示例介绍(代码片段)

  最近分布式项目开发中用到订阅/通知机制,经过选型决定采用etcd,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。本系列总共3篇:《搭建etcd集群》:介绍搭建etcd集群方式... 查看详情

prometheus-prometheus-opterator中添加监控etcd集群(代码片段)

一、环境声明kubeadmkubernetes1.15etcd也是集群内pod部署方式,自带metrics接口Prometheus-Operator二、监控etcd集群2.1、查看接口信息#https #curl--cert/etc/kubernetes/pki/etcd/server.crt--key/etc/kubernetes/pki/etcd/server.keyhttps://127.0 查看详情

读取k8s存储在etcd上的数据(代码片段)

读取k8s存储在etcd上的数据EtcdAssistant是一款Etcd可视化管理工具,便捷高效地操作您的etcd集群;支持多种键的视图;管理租约、用户、角色和权限。etcd是一个分布式KV存储系统,在分布式系统中被广泛使用,Kubernetes就是使用了etcd... 查看详情

sh通过自定义网络的docker运行etcd集群(代码片段)

查看详情