当前位置: 首页 > wzjs >正文

社团建设制作网站费用会计科目门户网站如何做谷歌seo

社团建设制作网站费用会计科目,门户网站如何做谷歌seo,视频投票网站怎么做,网站建设专员求职简历引言 etcd是基于go语言开发的一款kv存储引擎,基于raft一致性算法实现的一种存储 一.etcd的底层原理 1.etcd的特点 高可用性与一致性:etcd 使用 Raft 算法保证集群中数据的强一致性,即使在节点故障的情况下也能保持数据完整性。 分布式存储&a…

引言

etcd是基于go语言开发的一款kv存储引擎,基于raft一致性算法实现的一种存储

 一.etcd的底层原理

1.etcd的特点

高可用性与一致性:etcd 使用 Raft 算法保证集群中数据的强一致性,即使在节点故障的情况下也能保持数据完整性。

分布式存储:数据以键值对的形式存储,支持分布式读写,适用于大规模服务发现和配置共享的场景。

易于集成:etcd 提供了 HTTP/gRPC 接口,方便各种编程语言和平台集成。

应用场景:Kubernetes 等容器编排平台使用 etcd 作为核心组件,实现状态管理和服务协调。

 2.什么是raft一致性算法

领导者选举(Leader Election)
集群中的所有节点通过选举过程选出一个领导者,负责处理客户端请求以及日志复制工作;如果当前领导者发生故障,其余节点会重新选举出新的领导者。

日志复制(Log Replication)
领导者接收到客户端请求后,会将这条命令追加到自己的日志中,然后通过日志复制机制将该命令复制到所有追随者节点,确保所有节点都以相同的顺序应用这些命令,从而保持一致的状态机。

安全性(Safety)
为防止不同节点之间的日志产生分歧,Raft设计了一套严格的规则。例如,只有领导者拥有提交日志的权利,并且只有当多数节点确认日志条目之后才允许将其提交,保证了在大多数节点正常工作的情况下,系统始终保持一致。

raft一致性算法可视化图形 链接  Raft 

 3.etcd 架构(体系结构)

 

boltdb 是一个单机的支持事务的 kv 存储, etcd 的事务是基于 boltdb 的事务实现的; boltdb 为每
一个 key 都创建一个索引( B+ 树);该 B+ 树存储了 key 所对应的版本数据;
wal(write ahead log) 预写式日志实现事务日志的标准方法;执行写操作前先写日志,跟 mysql 中 redo 类似, wal 实现的是顺序写,而若按照 B+ 树写,则涉及到多次 io 以及 随机写;
snapshot 快照数据 ,用于其他节点同步主节点数据从而达到一致性地状态;类似 redis 中主从复 制中 rdb 数据恢复;流程: 1. leader 生成 snapshot 2. leader follower snapshot 3. follower接收并应用 snapshot
gRPC server ectd 集群 间以及 client etcd 节点间都是通过 gRPC 进行通讯;
4.etcd的事务 (举一个简单的例子)

key的value是不是lion

是key的value改为tiger

不是的话获取key的value 

 二.etcd的常用命令 和 go对etcd操作代码案例

启动etc 

1.常用命令

put   get   del

etcdctl put /foo bar //将键 “/foo” 对应的值设置为 “bar”
etcdctl get /foo  //查询键 “/foo” 的值
etcdctl del /foo   //删除指定键 “/foo”

 

 watch 

etcdctl watch /foo  //监视键 “/foo” 及其后续变化(实时输出修改日志)

 

 lease

etcdctl lease grant 10 //为键设置租约,有效期 10 秒
etcdctl lease keep-alive 1234567890 //保持已有租约(例如 lease id 为 1234567890)
etcdctl lease revoke 1234567890 //撤销租约以自动删除其绑定的键
 2.go对etcd操作代码

①basic

package mainimport ("context" // 上下文包用于控制请求超时、取消等"fmt"     // 格式化输出"time"    // 时间处理clientv3 "go.etcd.io/etcd/client/v3" // etcd 客户端 v3 包
)func main() {// 通过指定 etcd 服务地址和拨号超时时间,创建 etcd 客户端cli, err := clientv3.New(clientv3.Config{Endpoints:   []string{"127.0.0.1:2379"}, // etcd 服务地址DialTimeout: 5 * time.Second,            // 连接超时时间为 5 秒})if err != nil {panic(err) // 连接失败则终止程序}defer cli.Close() // 程序结束前关闭客户端连接// 使用 context 限定操作超时时间,防止一直等待ctx, cancel := context.WithTimeout(context.Background(), time.Second)// 向 etcd 中写入一个 key/value 对_, err = cli.Put(ctx, "key", "lion")cancel() // 取消 context 的使用if err != nil {panic(err) // Put 操作失败则终止程序}// 创建新的 context 来获取 key 值ctx, cancel = context.WithTimeout(context.Background(), time.Second)// 从 etcd 中获取指定 key 值resp, err := cli.Get(ctx, "key")cancel()if err != nil {panic(err) // Get 操作失败则终止程序}// 遍历响应中所有返回的 key/value 对,并打印出来for _, ev := range resp.Kvs {fmt.Printf("%s:%s\n", ev.Key, ev.Value)}
}

  

② watch

 

package mainimport ("context" // 上下文包,用于传递取消信号和超时控制"fmt"     // 格式化输出,用于打印日志信息clientv3 "go.etcd.io/etcd/client/v3" // 导入 etcd 客户端 v3 包
)func main() {// 通过指定 etcd 服务器的 URL 创建一个 etcd 客户端cli, err := clientv3.NewFromURL("127.0.0.1:2379")if err != nil {// 如果连接失败,则终止程序并输出错误信息panic(err)}// 在 main 函数退出前关闭 etcd 客户端连接defer cli.Close()// 调用 Watch 方法,对 key3 及其后续 key 的变化进行监听// WithFromKey() 表示从 key3 开始后面的所有 keywatch := cli.Watch(context.Background(), "key3", clientv3.WithFromKey())// 循环遍历监听返回的数据for resp := range watch {// 对于每次监听返回的响应中的每个事件进行处理for _, ev := range resp.Events {// 打印事件类型、键和值fmt.Printf("Type: %s Key: %s Value: %s\n", ev.Type, ev.Kv.Key, ev.Kv.Value)}}
}

 ③lease

package mainimport ("context" // 上下文包,用于为请求设置超时和取消操作"fmt"     // 格式化输出clientv3 "go.etcd.io/etcd/client/v3" // 导入 etcd client v3 包
)func main() {// 通过指定 etcd 服务器的 URL 创建一个 etcd 客户端cli, err := clientv3.NewFromURL("127.0.0.1:2379")if err != nil {// 如果连接失败,则终止程序并输出错误信息panic(err)}// 在函数退出前确保关闭 etcd 客户端defer cli.Close()// 调用 Grant 方法申请一个租约,设置租约有效期为 5 秒lease, err := cli.Grant(context.Background(), 5)if err != nil {// 如果申请租约失败,则终止程序并输出错误信息panic(err)}// 打印租约 IDfmt.Println("lease id", lease.ID)// 使用租约将 key 与 value 绑定写入到 etcd 中_, err = cli.Put(context.Background(), "key", "lion", clientv3.WithLease(lease.ID))if err != nil {// 如果写入操作失败,则终止程序并输出错误信息panic(err)}// 如果想保持租约活跃,可以通过 KeepAlive 进行续租if true {// 续租操作: 使用 KeepAlive 方法进行长期续租ch, err := cli.KeepAlive(context.Background(), lease.ID)if err != nil {// 如果续租失败,则终止程序并输出错误信息panic(err)}// 循环从返回的通道中读取续租信息for {recv := <-ch// 打印续租后剩余的 TTL(生存时间)fmt.Println("time to live", recv.TTL)}}// 如果只需要进行一次续租,则可以使用 KeepAliveOnce 方法(此处已被禁用)if false {// 单次续租操作:仅获取一次续租信息res, err := cli.KeepAliveOnce(context.Background(), lease.ID)if err != nil {// 如果操作失败,则终止程序并输出错误信息panic(err)}// 打印续租后剩余的 TTL(生存时间)fmt.Println("time to live", res.TTL)}
}

维持心跳包 

 

 

心跳包断开 

3.etcd总结 

etcd 是一个高度可靠的分布式键值存储系统,它提供了强一致性、故障恢复和高可用的保证。它主要依靠 Raft 算法来实现集群中数据的复制与一致性,是服务发现、配置管理和分布式协调的理想工具。同时,etcd 提供了简洁的 API(基于 HTTP/gRPC),易于与各种系统和编程语言集成,被 Kubernetes 等众多云原生平台广泛采用。


文章转载自:

http://qQpwFX7r.cnhgc.cn
http://lVjLqndP.cnhgc.cn
http://2yD2H4AE.cnhgc.cn
http://7iZ1i83D.cnhgc.cn
http://6l7awHxq.cnhgc.cn
http://ifcyER04.cnhgc.cn
http://8iEBCliz.cnhgc.cn
http://yQ7AFgmo.cnhgc.cn
http://5sYzXks6.cnhgc.cn
http://Vv4nhh1b.cnhgc.cn
http://7qIjI07N.cnhgc.cn
http://aGaQKISY.cnhgc.cn
http://yXXEnDPf.cnhgc.cn
http://gRi9Whfy.cnhgc.cn
http://J3pG3yVX.cnhgc.cn
http://7ObDJ1xQ.cnhgc.cn
http://xQXjt2ur.cnhgc.cn
http://zQOsi0pS.cnhgc.cn
http://XmrwYUtF.cnhgc.cn
http://xEDEzzQ7.cnhgc.cn
http://IVEdT9Nf.cnhgc.cn
http://OXhCY88h.cnhgc.cn
http://Km0YSqhx.cnhgc.cn
http://gtGQ2hGJ.cnhgc.cn
http://qMnH0Kbh.cnhgc.cn
http://gRxHSLKn.cnhgc.cn
http://3ZAXyGDV.cnhgc.cn
http://iNDgGgze.cnhgc.cn
http://tN5BRkEZ.cnhgc.cn
http://85NW4d1X.cnhgc.cn
http://www.dtcms.com/wzjs/624990.html

相关文章:

  • 兴义市城乡建设局网站深圳旅游
  • 网站服务器搭建XPwordpress优化网站打开速度
  • 做铜字接单网站济南网站制作培训班
  • 专做网站公司网络运营主要工作内容
  • 高大上 网站南宁品牌网站建设
  • 网站链接用处东方市住房和城乡建设局网站
  • 商务网站需求说明书宁波seo外包费用
  • 台州网站建设 推广公司廊坊seo网络推广
  • 文明网站建设情况备份管理wordpress
  • 扬州工程信息网站关于网站建设电话销售的话术
  • 株洲seo网站优化软件网站要挂工商标识怎么做
  • 想做一个自己的网站怎么做的软件技术专升本难吗
  • 在线爱情动做网站手表网站 云
  • 网站建设带后台带微商城国外设计素材网站
  • 手机网站下拉列表网站建设申请表
  • 中国建设银行官网站e路护航网站生成wap
  • 重庆手机网站制作价格创意广告宣传片制作
  • 公司网站建设费用记什么科目江西南昌小程序开发
  • 怎么建设一个电影网站谷歌seo教程
  • 公司网站建设平台wordpress旧编辑器
  • 跟公司产品做网站东莞网站建设0769dt
  • 西安网站制作公司怎么选建设一个网站费用
  • 网站响应式布局wordpress伪静态规则nginx
  • 电商网站 案例网站开发发展方向
  • 招聘网站建设公司网上购物网站建设规划论文
  • app试玩网站制作咋样做网站快照
  • 昆明网站建设去出发科技公司wordpress教程 微信
  • 宁波企业建站程序国内 设计网站的公司
  • 哈尔滨专业的建站报价设计logo的ai软件
  • 物业公司网站建设方案企业信息平台网站官网