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...

企业级SSD硬盘fsync速度

小数据测试, 以便对硬盘 fsync 的速度有一个大概的了解. 结果: rate latency 备注 4044/s 0.247ms Intel SATA SSD 19720/s 0.051ms Intel NVMe SSD 结论: SATA 盘的 QPS 是 4000, NVMe 的 QPS 是 20000. 如果要开发一个分布式 KV 数据库, 那么对于每一个客户端请求, 至少进行 1 次日志 fsync. 为了提高吞吐量(QPS), 日志模块必须进行 batch 持久化. 如果 batch 大小是 25 的话, 普通 SATA SSD 盘能达到 10w qps, 而 NVMe SSD 只需要 batch 是 5 即可达到 10w qps. Related...

科技爱好者周刊(第 173 期):网络收音机的设计

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub:ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容。 周刊讨论区的帖子《谁在招人?》,提供大量程序员就业信息,欢迎访问或发布工作/实习岗位。 封面图 上海的很多老小区,由于历史原因,有很多密密麻麻的架空电线,非常影响美观。江阴路今年的社区更新,尝试将架空线包裹进入人造的绿色藤蔓。(via) 本周话题:网络收音机的设计 最近,我为家里的老人买了一台网络收音机。 老人的年纪很大(超过85岁),完全不懂互联网,操作智能手机会经常点错地方,不知道怎么恢复。平时唯一的消遣就是看电视,其实根本不爱看,但没有别的娱乐。这样的老人家在互联网时代非常弱势,但是人数还不少,我们国家搞不好有一两个亿。 我希望,找到一台网络收音机,能够接收网络节目,帮老人丰富生活、了解外界。我的要求是,操作越简单越好,不懂互联网的人也可以毫无困难地上手。...

最适合程序员的笔记软件

程序员的笔记软件,应该满足下面几个条件。 (1)跨平台,同时支持桌面电脑(Windows,Mac,Linux)和手机(Android,iOS)。 (2)随时同步,打开任何一台机器,都能接着上一次的工作继续写。 (3)实时存储,如果软件突然关闭,也不会丢失内容。 (4)支持 Markdown 格式,便于后期直接发布。 (5)支持推送到远程 Git 仓库,产生历史版本,同时作为远程备份。 我一直在寻找符合这些条件的工具,但是市场上大部分的笔记软件,都不支持上面的第5点,Git 集成要么没有,要么很弱。 我用过Stackedit.io和HackMD.io,都不是很理想。 最近,我终于找到了最佳方案,那就是 GitHub 官方推出的github.dev。 只要访问下面的网址,你就能在浏览器里面,使用...

IFITL -- 美国早期光纤接入网的牺牲品

IFITL: Integrated Fiber In The Loop 是 Bell South 的早期产品,大约在 2000 年左右推出,是一种 FTTC 的产品。 技术上,他是多模主动光纤从电话局 CO (Central Office) 直通到路边的信息箱的。信息箱内放置一台 10M 交换机。光口上联,从信息箱到家庭是额外单独布线的户外五类线。端口密度自然是一个光口对应最多 4 个用户。这基本上是类似于 M-Ethernet 的产品。 听起来这是没什么问题,只是端口密度低了一些。可惜,这个产品死掉了。 交换机是北电生产,这种交换机只支持平分带宽,每个板卡上联 10Mbps,四个下联口,每户的最大带宽是 2Mbps,额外 2Mbps 作为控制信令。 系统是半双工的。 电口交换机需要外部供电。在设计时,使用了极细的供电线(据说为...

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!