zoukankan      html  css  js  c++  java
  • Etcd介绍

    分布式,可靠的,kv分布式系统

    Raft算法

    • 从多个节点选出leader,leader负责数据的同步和分发。

    quorum=(n+1)/2

    • 3个节点容忍1个故障
    • 5个节点容忍2个故障

    API

    • PUT(key,value)/Delete(key)
    • Get(key)/Get(keyFrom,keyEnd) key的范围
    • Watch(key/keyPrefix)
    • Transactions(if/then/else ops).commit() 满足条件,执行操纵
    • Leases:Grant/Revoke/KeepAlive

    etcd的数据版本号机制

    • term:全局单调递增 (整个集群leader的任期,leader进行切换,term加1)
    • revision: 全局单调递增 (代表的kv修改一次,revision加1)
    • KeyValue:
      • create_revision:创建的次数
      • mod_revision:修改的次数
      • version:此次key修改的次数

    一个数据有多个版本,通过定期Compaction来清理历史数据

    lease(租约)

    性能优化

    Ratf层

    • 网络IO
    • 节点之间的RTT/带宽
    • 磁盘IO 写入延迟

    Storage

    • 磁盘IO fdatasync延迟
    • 索引层所的block
    • boltdb Tx的锁
    • boltdb本身的性能

    其他

    • 内核参数
    • grpc api层的延迟

    服务端性能优化 -硬件

    • 升级CPU/memory
    • 选取优秀的ssd
    • 网络带宽优先级
    • 独占部署

    服务端性能优化 - 软件

    • 没存索引层:提升etcd内存索引性能,优化内部锁的使用减少等待时间
    • lsase规模使用:优化lease revoke过期失效的算法,解决了lease规模性的问题
    • 后端boltdb使用优化:端酒batch size limit /interval,根据不同的硬件和工作负载配置(以前是固守保守值)
    • 完全并发读,优化调用boltdb tx读写锁使用,提升读性能
    • 基于segregated hashmap的etcd内部存储freelist分配回收算法

    客户端性能优化

    • put 避免大value,精简再精简
    • 避免创建频繁变化的key/value
    • 避免创建按大量lease,尽量选择复用
  • 相关阅读:
    PHP里文件的查找方式及写法
    上传文件
    用ajax对数据进行查看人员信息
    ajax实现分页
    jquery做个日期选择适用于手机端
    PHP用ajia代码写三级联动下拉
    JSON数据的定义
    jquery做一些小的特效
    对jquery操作复选框
    使用 LUT 模拟光照
  • 原文地址:https://www.cnblogs.com/zhangjxblog/p/12168338.html
Copyright © 2011-2022 走看看