IT牛人博客聚合网站 - RSS Feed

发现IT技术最优秀的内容, 寻找IT技术的价值

Latest articles

什么是分布式一致性

在工程实践上, 分布式一致性和多副本有关系, 如果没有多副本, 就没有分布式一致性的问题. 多副本的定义: 多副本可以放在多台机器上, 也可以放在同一个进程内的不同内存地址内, 或者一个副本在内存, 一个副本在硬盘. 只要同一个对象出现在多处, 或者在多处被引用, 就是多副本. 各个副本的写入操作序列必须先经过共识, 按同样的顺序写入, 因此所有副本的状态将是最终一致的(相同). 但是, 有可能单独地读取某个副本, 这就导致读操作在不同副本上发生的顺序并不相同, 这显然会导致最终结果不一致(符合预期), 因为我们本能地知道, 顺序决定结果. 例如, 先写后读与先读后写, 显然读出来的结果不一样, 这个很显然 . 因为日志序列的复制和执行必然是异步的, 绝对不可能所有副本在同一个时间点同时写入,...

记一次关于系统性能的有趣讨论

有个同事问我:"你开发的分布式数据库系统, 如何避免 scan 扫描操作返回了 pending 事务状态的数据?" 我说:"把数据扫描出来, 然后逐个判断过滤掉 pending 状态的数据." 我感到奇怪, 对于他的问题, 解决方案非常显然啊. 解决方案非常直观, 兵来将挡水来土掩, 我相信他也能想到, 不想要的数据当然要剔除掉, 否则呢? 那么, 他的问题的点在哪? 没错, 他接着问了:"我 scan 的时候只想返回 key, 但是, 要判断状态, 是不是还得去读取 value 解析出状态信息?" 我当时是黑人问号脸:"当然要知道状态信息才能根据状态过滤呀, 不然呢?" 他终于祭出了那个经典的让人哭笑不得的问题:"读取 value, 是不是性能会下降啊?" 且不说无缘无故在没有任何场景支撑的情况下就提出性能问题让人莫名其妙,...

Some hints on Dataproc

When running a job in the cluster of Dataproc, it reported: java.util.concurrent.ExecutionException: java.lang.ClassNotFoundException: Failed to find data source: BIGQUERY. The reason is I haven’t added the Jar file for BigQuery. After adding the new Jar file intopropertiesto the template of creating a cluster: properties: spark:spark.jars:...

科技爱好者周刊(第 174 期):全能程序员 vs 特长程序员

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub:ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容。 周刊讨论区的帖子《谁在招人?》,提供大量程序员就业信息,欢迎访问或发布工作/实习岗位。 封面图 浙江普陀山客运中心最近获得2021年度凡尔赛建筑奖。(via) 本周话题:全能程序员 vs 特长程序员 我读过一些篮球报道,里面说 NBA 球队不喜欢"全能型球员",更喜欢"特长型球员"。 所谓"特长型球员",指的是其他方面可能都不行,但是某一方面特别突出,比如防守特别好、三分特别准,或者篮板很强等等。球队愿意签这样的球员,关键时刻派上场,没准就能立下奇功。 反过来,"全能型球员"各项技术都很均衡,防守、进攻、投篮都还可以,能达到平均水平,但是每个方面都不突出,没有明显的过人之处。球队看不上这样的球员,觉得让你上场,赢不了球。...

Binlog 和 Redolog 的区别

在开发分布式数据库的过程中, Binlog 和 Redolog 是非常重要的两个概念, 两者的作用似乎相同, 但实际上各有各的使用场景. 从多副本复制一致性的角度看, Binlog 用于强一致性, Redolog 用于最终一致性. Binlog 可包含非幂等的指令, 例如 incr 指令. Redolog 只能包含幂等的指令, 例如 set 指令. 全球跨地域同步最终一致, 能不能复制 Binlog 呢? 绝对不行! 使用 incr 和 set 指令的组合, 在不同的地域写入数据, 很容易就能发现可造成数据不一致(相同)的场景, 而且几乎无法避免(除非副本带有回滚功能). 而如果同步的是 Redolog 的话, 通过复合时间戳, 是可以实现多副本的最终一致的. 对于强一致的多副本, 能不能复制...

Go泛型是怎么实现的?

Go 1.17中你就可以使用泛型了,可以参考我3月份的文章:Go 泛型尝鲜, 编译的时候需要加-gcflags=-G=3参数,而当前master分支,默认已经支持泛型,不需要加-G=3参数了。 你可以通过下面的步骤尝试go最新分支: 12 go get golang.org/dl/gotipgotip download 编译代码的时候使用gotip替换go命令即可。 随着Go 1.17的发布,最近也涌现了很多的介绍Go泛型的文章,基本上都是简单介绍的文章。 最近Go泛型的变化是增加了两个操作符:~和|: an approximation element~Trestricts to all types whose underlying type is T: 代表底层类型是T...

什么是分布式一致性

在工程实践上, 分布式一致性和多副本有关系, 如果没有多副本, 就没有分布式一致性的问题. 多副本的定义: 多副本可以放在多台机器上, 也可以放在同一个进程内的不同内存地址内, 或者一个副本在内存, 一个副本在硬盘. 只要同一个对象出现在多处, 或者在多处被引用, 就是多副本. 各个副本的写入操作序列必须先经过共识, 按同样的顺序写入, 因此所有副本的状态将是最终一致的(相同). 但是, 有可能单独地读取某个副本, 这就导致读操作在不同副本上发生的顺序并不相同, 这显然会导致最终结果不一致(符合预期), 因为我们本能地知道, 顺序决定结果. 例如, 先写后读与先读后写, 显然读出来的结果不一样, 这个很显然 . 因为日志序列的复制和执行必然是异步的, 绝对不可能所有副本在同一个时间点同时写入,...

记一次关于系统性能的有趣讨论

有个同事问我:"你开发的分布式数据库系统, 如何避免 scan 扫描操作返回了 pending 事务状态的数据?" 我说:"把数据扫描出来, 然后逐个判断过滤掉 pending 状态的数据." 我感到奇怪, 对于他的问题, 解决方案非常显然啊. 解决方案非常直观, 兵来将挡水来土掩, 我相信他也能想到, 不想要的数据当然要剔除掉, 否则呢? 那么, 他的问题的点在哪? 没错, 他接着问了:"我 scan 的时候只想返回 key, 但是, 要判断状态, 是不是还得去读取 value 解析出状态信息?" 我当时是黑人问号脸:"当然要知道状态信息才能根据状态过滤呀, 不然呢?" 他终于祭出了那个经典的让人哭笑不得的问题:"读取 value, 是不是性能会下降啊?" 且不说无缘无故在没有任何场景支撑的情况下就提出性能问题让人莫名其妙,...

Some hints on Dataproc

When running a job in the cluster of Dataproc, it reported: java.util.concurrent.ExecutionException: java.lang.ClassNotFoundException: Failed to find data source: BIGQUERY. The reason is I haven’t added the Jar file for BigQuery. After adding the new Jar file intopropertiesto the template of creating a cluster: properties: spark:spark.jars:...

科技爱好者周刊(第 174 期):全能程序员 vs 特长程序员

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub:ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容。 周刊讨论区的帖子《谁在招人?》,提供大量程序员就业信息,欢迎访问或发布工作/实习岗位。 封面图 浙江普陀山客运中心最近获得2021年度凡尔赛建筑奖。(via) 本周话题:全能程序员 vs 特长程序员 我读过一些篮球报道,里面说 NBA 球队不喜欢"全能型球员",更喜欢"特长型球员"。 所谓"特长型球员",指的是其他方面可能都不行,但是某一方面特别突出,比如防守特别好、三分特别准,或者篮板很强等等。球队愿意签这样的球员,关键时刻派上场,没准就能立下奇功。 反过来,"全能型球员"各项技术都很均衡,防守、进攻、投篮都还可以,能达到平均水平,但是每个方面都不突出,没有明显的过人之处。球队看不上这样的球员,觉得让你上场,赢不了球。...

Discover, share and read the best on the web

Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!