etcd是k8s集群管理状态的标配,它存储集群内所有与状态相关数据,比如服务发现与注册,共享配置等,它通过Raft一致性算法以保证强一致性。 分布式系统中的数据分为控制数据和应用数据,etcd处理的数据类型为控制数据,对于很少量的应用数据也可以进行处理。 目前etcd已经被CNCF(Cloud Native Computing Foundtion)收录。
近期接触的一个项目中使用了基于的 gRPC 服务发现和连接,项目本身代码比较庞杂,所以写个 demo 研究下基于 ETCD 的 gRPC 服务发现和连接。之前只是知道 ETCD 可以用来做服务发现和负载均衡,但由于 gRPC 写的不多,所以对服务发现也就知之甚少。借此机会,补上这块的知识。 本文会假设读者知道基本的 gRPC 以及 ETCD ...
etcd grpc-proxy start --endpoints=http://10.228.23.144:20002,http://10.228.23.144:20004,http://10.228.23.144:20000--listen-addr=127.0.0.1:23790--advertise-client-url=127.0.0.1:23790--resolver-prefix="___grpc_proxy_endpoint"--resolver-ttl=60 etcd grpc-proxy start --endpoints=http://10.228....
type Resolver struct { cc resolver.ClientConn serviceName string grpcClientConn *grpc.ClientConn cli *clientv3.Client schema string etcdAddr string watchStartRevision int64 } var ( nameResolver = make(map[string]*Resolver) rwNameResolverMutex sync.RWMutex ) func NewResolver(schema, etcdAddr, servi...
gRPC Server 则是 etcd 与其他 etcd 节点之间的通信和信息同步; MVCC,即多版本控制,etcd 的存储模块,键值对的每一次操作行为都会被记录存储,这些数据底层存储在 BoltDB 数据库中; WAL,预写式日志,etcd 中的数据提交前都会记录到日志; Snapshot 快照,以防 WAL 日志过多,用于存储某一时刻 etcd 的所有数据; ...
前面我们已经简单了解并安装了etcd,由于etcd的应用场景较多,我这里只针对我目前使用的场景进行深入学习和总结,我们的使用场景之前已经说过了,主要是使用etcd的服务注册发现功能,这里我们先利用官网的开发者指南搭建本地集群用于后续测试,然后看下如何将gRPC和etcd结合用于发现gRPC服务。
etcd是一个高可用的KV分布式存储系统,主要用于共享配置和服务发现。etcd使用go语言编写,并通过Raft一致性算法来处理日志复制以保证强一致性,k8s的底层也在...
Type (mismatched types "go.etcd.io/etcd/mvcc/mvccpb".Event_EventType and "github.com/coreos/etcd/mvcc/mvccp b".Event_EventType)原因:此时设备上的 proto-gen-go 是 v1.4.0 版本,它要求 grpc 的版本是 v1.27.0 往后的,而刚才 etcd 要求 grpc 是 v.1.26.0 ! 无奈了,柿子挑软的捏吧,把 ...
开源IM项目OpenIM发布v3.0 | (1)消息写扩散模型改为读扩散模型,无论是单聊还是群聊都统一采用读扩散模型;(2)通过反射和泛型,精简rpc和api代码,代码优雅、简洁;(3)规范错误码,方便定位问题;(4)zookeeper与grpc集成实现服务注册与发现,不再使用etcd组件;(5)优化websocket长链接管理;(6)服务端增加会话模型,解决...
使用etcd作为服务注册中心 https://github.com/etcd-io/etcd 非生产环境在本地单机部署或者使用docker运行即可 docker-compose.yml https://github.com/Me1onRind/my_docker/blob/master/etcd/docker-compose.yml 编写go服务端代码 项目目录 ./ ├── cmd │ └── grpc │ ├── client_test.go # 测试...