• issac
    2021-02-10
    唐聪老师,能把每节课的思考题解答一下吗?觉得都是重点有意思的地方,非常感谢老师的辛苦付出!

    作者回复: 嗯,一定会的,春节快乐,近期大量时间投入在新稿,思考题后面我会一个个抽空更新,先看看大家自己思考情况,你也可以把你的想法观点在留言里面回复下。

    共 2 条评论
    10
  • Geek_7d539e
    2021-07-25
    事务提交原理 这小节,没有讲清楚单个的客户端事务请求跟批量事务的关系。麻烦老师再放大讲讲下?多谢。老师看着很年轻,造诣确不一般,了不起。

    作者回复: 感谢支持,受限篇幅的确有一些内容没覆盖到或更深入介绍,后面加餐的时候我看看能否覆盖到。

    
    2
  • types
    2021-03-03
    是key-value数据与consistent index在同一个boltdb事务中更新 请问consistent index 在哪边更新的?

    作者回复: 就是你发起一个写请求,MVCC写事物通过boltdb API执行,put写入hello的时候,它也会通过如下的boltdb API, 更新consistent index, 只是bucket名字不一样,最终这两个数据写入,都是在同一个大的boltdb事务中提交的。 如果还有疑问,可以参考下这块代码 https://github.com/etcd-io/etcd/blob/v3.4.9/mvcc/kvstore.go#L546:L556 // put the index into the underlying backend // tx has been locked in TxnBegin, so there is no need to lock it again tx.UnsafePut(metaBucketName, consistentIndexKeyName, bs) atomic.StoreUint64(&s.consistentIndex, ci)

    共 3 条评论
    
  • 写点啥呢
    2021-02-10
    请问下唐老师,文章中“boltdb API”一节的示例代码里,"defer tx.Rollback()"将事务回滚放到defer链里,如果事务正常提交了,这时候defer链再调用Rollback会是什么效果?是不是Rollback报错而我们直接忽略掉?

    作者回复: 事务正常提交后,tx.db等相关字段会设置为空,执行tx.RollBack后发现tx.db为空,就直接返回了哈,相当于空操作

    
    
  • 唐聪
    2021-02-10
    文中提到的bbolt是etcd社区基于boltdb fork的一个版本,etcd社区负责维护此版本,原因是boltdb作者认为boltdb已经足够成熟稳定,经过了大规模生产环境检验,新特性和优化点合入会对boltdb稳定性造成一定的影响,个人没更多时间再投入到boltdb上,因此boltdb项目变成archived状态
    
    16
  • 登顶计划
    2022-08-07 来自广东
    老师您好,请问bbolt工具在哪里下载呢?
    
    1
  • 南北
    2022-12-04 来自上海
    开篇的问题,为什么etcd适合读多写少的场景?boltdb使用b+ tree组织数据,读取数据时,访问磁盘的次数有限,内存还有可能做缓存,而写的commit需要rebalance,对磁盘又大量的写入
    
    
  • asdf100
    2022-12-02 来自上海
    第二行首先含有一个 4 字节的 magic number(0xED0CDAED),这个为什么与图里的显示顺序不一样?
    共 1 条评论
    
  • 黄骏
    2022-11-25 来自湖北
    “下来是两个字节描述 boltdb 的版本号 0x2” ,这里应该是4个字节的版本号吧?
    
    
  • Zed
    2022-09-29 来自北京
    etcd里面是批量攒够一定的操作再commit,其中某一项put如果失败也只是打印falt日志,没有其他处理,这种时候不会出现数据不一致的问题吗?
    
    