跳到主要内容

50 篇博文 含有标签「system-design」

查看所有标签

键值缓存有哪些用法?

· 阅读需 3 分钟

KV Cache的本质是为了减少访问数据的延迟。比如,把存在又贵又慢的媒体上的数据库的O(logN)的读写和复杂的查询,变成存在又快又贵的媒体上的 O(1)的读写。cache 的设计有很多策略,常见的有 read-through/write-through(or write-back) 和 cache aside.

常见的互联网服务读写比是 100:1 到 1000:1,我们常常对读做优化。

在分布式系统中,这些 pattern 的组合都是 consistency, availability, partition tolerance 之间的 trade-off,要根据你的业务需求具体 选择。

一般的策略

    • Read-through: clients 和 databases 之间加一层 cache layer,clients 不直接访问数据库,clients 通过 cache 间接访问数据库。 读的时候 cache 里面没有东西则从database更新再返回,有则直接返回。
    • Write-through: clients 先写数据到 cache,cache 更新 database,只有 database 最终更新了,操作才算完成。
    • write-behind/Write-back: clients 先写数据到 cache,先返回。回头将 cache 异步更新到 database. 一般来讲 write-back 是最快的
    • Write-around: client 写的时候绕过 cache 直接写数据库。

cache aside pattern

Cache 不支持 read-through 和 write-through/write-behind 的时候用 Cache aside pattern

读数据? 命中 cache 读 cache,没命中 cache 读 database 存 cache 改数据? 先改 database,后删除 cache entry

为什么不是写完数据库后更新缓存?主要是怕两个并发的 database 写操作导致两个并发的 cache 更新导致脏数据。

是不是Cache Aside这个就不会有并发问题了?还是有很低的概率有可能发生脏数据,就是一边读 database 并更新 cache 的时候,一边更新 database 并删除 cache entry

缓存放在哪?

  • client side,
  • distinct layer
  • server side

缓存大小不够用的话怎么办?缓存回收策略(cache replacement policies)

  • LRU - least-recently used 看时间,只保留最近时间使用的,回收最近时间没使用的
  • LFU - least-frequently used 看次数,只保留使用次数最多的,回收使用次数最少的
  • ARC 性能比LRU好,大致做法是既保持 RU,又保持 FU,还记录了最近回收的历史。

缓存用起来谁家强?

Facebook TAO

软技能面试可以谈点什么?

· 阅读需 3 分钟

为什么要重视软技能?

因为你的工作会被软技能强的人抢走。

美国人的讲话能力非常强,从小学校教育就重视表达,一说话都是一套一套的。那么在同等情况下,哪怕中国人的技术更好,工作机会也被美国人抢走了。这个其实不是种族歧视,是自我表达能力的问题。

像印度人,在美国的势力非常强大,尤其是在高科技公司管理层这一块,中国人的势力远远不如印度人。这也是因为印度人讲故事的能力特别强。印度人的英语发音并不标准,但是他们敢说,而且往往能说到点子上。所以我们经常看到的局面就是一个印度经理欺负他手下几个技术比他好的中国员工。我们经常嘲笑印度人是 “PPT 治国”,但是这个讲故事的能力你不可不察。

这也说明“自由技艺”的软技能,是我们当代中国人的一个短板。

面试的本质是回答下面三个问题

  1. 能干不能干
  2. 想干不想干
  3. 合拍不合拍

如何回答这三个问题?

面试的五个谈话点。

1.逆境。强调的可不是困难有多大,而是你是如何战胜这些困难的。你要证明自己不但没被逆境杀死,而且更强大了。最好举重若轻,把明明很大的困难轻描淡写,充满乐观情绪。然后你要顺便感谢一下在困境中曾经帮助过你的人,让人感觉到你是一个懂得感恩的人。

2.影响力。所有的交流问题本质上都是领导力问题,所有的领导力问题本质上就是交流问题。如果你善于说服别人,说明你天生就具备领导力。

3.技术水平。有什么故事能够展现你的技术水平?

4.合拍。美国联邦调查局(FBI)以前面试人的时候,喜欢问应聘者看过什么书。应聘者就会报一大堆书名,但其实 FBI 最想听的是他们看过汤姆.克兰西(Tom Clancy)的间谍小说。有一段时间,凡是说看过克兰西间谍小说的人都容易被录取。后来这个内部信息被传出去了,然后每个来面试的人都这么说,这招就不好使了。

5.成就。和别人相比,你有没有什么出类拔萃的地方。这就是你吹嘘以往成就的机会。成就不一定是实际的工作经验。

再往大了说,连美国总统竞选也是这个套路。奥巴马说,我父亲是一个移民,后来他抛弃了我妈妈,我从小在一个单亲家庭长大我是一个黑人我怎么怎么不容易……但是这些都不叫事儿现在的我就是这么乐观而又强大。特朗普说我做过这个项目这个项目和这个项目,现在我想做造福美国的大项目。

如何准备这五个谈话点?

  • 多尝试,经历失败,丰富你的人生经验;
  • 多跟人交往,练习交流和组织能力;
  • 学点技术,掌握一些实用工具;
  • 要善于做调研,了解你所在的领域正在发生什么事儿;找机会取得能让自己脱颖而出的成绩。