作者回复: 赞jeffery一直坚持不懈的学习,感谢认可,专栏虽即将结束,但学习与探索未知领域从未有终点,后面有什么有趣的案例、新的体会,我也会通过专栏、微信公众号、博客等各种渠道与大家一起分享交流!
作者回复: 赞,我补充一点,多个client通过写同key抢同把锁,主要有惊群效应,同时获取锁性能也低点,毕竟是需要实时写入相关key的,而后者,revision是按时间全局递增的,因此新的client 写入的key revision会比较大,拿锁的顺序可以理解为按时间顺序排队。
作者回复: 有的,etcd提供了如下两个参数可以控制事务提交的行为。 --backend-batch-interval '' BackendBatchInterval is the maximum time before commit the backend transaction. --backend-batch-limit '0' BackendBatchLimit is the maximum operations before commit the backend transaction. 在etcd v3.4.9中,backend-batch-interval如果你没指定,默认是100ms,对应的异步goroutine将批量、每隔100ms,将boltdb事务进行提交。 backend-batch-limit默认是10000,当堆积的put/del等操作若超过10000个,则会同步触发boltdb事务提交 ,若boltdb事务持久化失败,则会异常退出,重启时会重放最新WAL日志中已提交的日志条目,再次执行。
作者回复: 嗯,最主要是惊群效应,所有client都会收到相应key被删除消息,都会尝试发起事务,写入key,性能会比较差
作者回复: 感谢分享,最近我在极客时间直播中也分享了更多k8s最佳实践案例, 后面也将整理到专栏中。
作者回复: 嗯,性能也要考虑下