跳到主要内容

如何扩展网络服务?

· 阅读需 2 分钟

AKF 规模立方体将扩展过程可视化为三个维度…

AKF 规模立方体

  1. ==水平复制== 和克隆 (X 轴)。在负载均衡器或反向代理后面拥有一组相同且最好是无状态的实例。因此,每个请求都可以由这些主机中的任何一个来处理,并且不会有单点故障。
  2. ==功能分解== 和分段 - 微服务 (Y 轴)。例如,身份验证服务、用户资料服务、照片服务等。
  3. ==水平数据分区== - 分片 (Z 轴)。将整个堆栈复制到不同的“集群”。每个集群可以针对特定的大用户群。例如,Uber 在中国和美国都有数据中心。每个数据中心可能会有不同区域的“集群”。

想要一个例子吗?去看看 Facebook 如何扩展其社交图谱数据存储

如何构建大规模的网站服务?

· 阅读需 1 分钟

==一个字:拆==

==AKF扩展立方==告诉了我们"拆"的三个纬度:

AKF Scale Cube

  1. ==水平扩展== 把很多无状态的服务器放在负载均衡器或者反向代理的后面,这样每个请求都能被其中任意一个服务器受理,就不会有单点故障了。
  2. ==业务拆分== 典型的按照功能分的微服务,比如 auth service, user profile service, photo service, etc
  3. ==数据分割== 分割出整套技术栈和数据存储专门给特定的一大组用户,比如优步有中国和美国的数据中心,每个数据中心内部有不同的 Pod 给不同的城市或地区。

为什么导师无法帮助你晋升?

· 阅读需 2 分钟

研究发现

  1. 成功的白人男性获得的职业指导比女性和多元文化专业人士更多。
  2. 拥有导师的女性比男性多,但获得晋升的女性却更少。

为什么?==导师无法帮助晋升,而赞助人可以==。

什么是赞助人?

赞助人是

  • ==投资者和受益人==。赞助人是对被赞助者的职业成功有投资的高级员工。
  • ==直接影响你晋升的人==。赞助人直接推动被赞助者的晋升,利用他们的影响力和网络将他们与高管任务、重要人物、薪资增加和晋升联系起来。
  • ==资源分享者==。赞助人将他们的活跃网络连接分享给被赞助者,并为他们建立新的联系。
  • ==放大器==。赞助人为被赞助者的可见性助力,常常利用他们自己的平台和声誉作为曝光的媒介。

谁可以成为赞助人?

  1. 谁做出影响你/你的员工薪资、晋升或项目分配的决定?
  2. 哪些高级领导可以从你/你的员工的职业发展中受益?
  3. 哪位高级领导拥有最能帮助你/你的员工在职业上发展的网络或平台?

为什么职业导师(mentors)没法帮你升职?

· 阅读需 2 分钟

研究发现

  1. 成功的白男们会比女性和来自其他文化背景的专业人士接受更多的职业指导。
  2. 女性比男性有更多的职业导师,但是女性比男性升职的更少。

为什么?==因为职业导师(mentor)没法帮助你升职,而职业赞助人(sponsor)可以==。

什么是职业赞助人?

赞助人是...

  • ==你职业的投资者和受益者==。他是更高级别的雇员,能够投资你的职业发展,并能从中获利。
  • ==你升迁的直接影响者==。他能够直接给你升职,或者动用他影响力直接帮你升职。
  • ==资源的分享者==。他能够分享他的关系网络资源帮助你。
  • ==放大器==。他能够动用他的平台和名声帮你放大你在公司的可见度(visibility)。

谁是你的职业赞助人?

  1. 谁发钱?谁决定升职?谁决定项目怎么分配?
  2. 哪位领导能够从你的职业成就中获利?
  3. 哪位领导的关系网络和平台能够帮你或者你的下属升职?

如何通过 HTTP 为移动设备流式传输视频?HTTP 实时流媒体 (HLS)

· 阅读需 2 分钟

动机

移动设备上的 HTTP 实时流媒体视频服务,...

  1. ==内存/存储有限==
  2. 遭受不稳定的网络连接和可变带宽的影响,并需要 ==中途质量调整。==

解决方案

  1. 服务器端:在典型配置中,硬件编码器接收音视频输入,将其编码为 H.264 视频和 AAC 音频,并以 MPEG-2 传输流的形式输出。

    1. 然后,流被软件流分段器分解为一系列短媒体文件(.ts 可能为 10 秒)。
    2. 分段器还创建并维护一个索引(.m3u8)文件,其中包含媒体文件的列表。
    3. 媒体文件和索引文件都发布在网络服务器上。
  2. 客户端:客户端读取索引,然后按顺序请求列出的媒体文件,并在段之间无任何暂停或间隙地显示它们。

架构

HLS 架构

键值缓存有哪些用法?

· 阅读需 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

西蒙·西奈克:伟大的领导者如何激励行动?黄金圈

· 阅读需 1 分钟

人们并不是购买你所做的事情。他们购买的是你为什么这样做。因此,西蒙·西奈克创造了一个短语“黄金圈”,它有三个层次,从核心到外部——为什么,如何,以及什么。不幸的是,普通领导者的思维顺序是从什么,如何,到为什么。

例如,苹果公司会说...

  1. 为什么:我们所做的一切,都是因为我们相信挑战现状。我们相信与众不同的思考。
  2. 如何:我们挑战现状的方式是通过设计美观、易于使用且用户友好的产品。
  3. 什么:我们恰好制造出优秀的电脑。
  4. 想买一台吗?

西蒙·斯涅克: 伟大的领袖如何激励行动? 黄金圈法则

· 阅读需 1 分钟

人们不关心你做了什么,他们关心你为什么这么做。西蒙·斯涅克提出了一个黄金圈,由内而外分别是:为什么?怎么做?是什么?不幸的是,平庸的领导者一般从外向内思考问题。

比如苹果公司会说...

  1. 为什么?我们所做的一切是为了挑战常规,我们所追求的信仰的是不同凡响。
  2. 怎么做?我们挑战常规的方法是,让我们的产品至简至美,把用户体验做到极致。
  3. 是什么?我们恰巧做出了一些超级棒的电脑。
  4. 要不要买一个?

胡说侦测器

· 阅读需 1 分钟
  • 为什么人们会胡说?
    • 埃里克·安布勒 — "当你可以胡说时,永远不要说谎。"
    • 哈里·法兰克福 - "我们文化中最显著的特征之一就是有如此多的胡说。" 胡说无处不在。
  • 如何检测胡说?
    • 使用胡说侦测器 - 一种心理工具,代表一个人检测他人欺骗、不诚实、腐败、诈骗、不真诚、虚伪和虚假的能力。
    • ==胡说的一个关键指标是风险的不对称性 - 当一个没有利益关系的人倡导某种事物,如果成功对他有利,但如果失败只对你有害,那么他就是在胡说。==

忽悠(bullshit)探测器

· 阅读需 2 分钟
  • 为什么会有人忽悠(bullshit)你?
    • 因为比起刻意的欺骗,忽悠在隐藏真实意图的同时,被揭穿后付出的成本更低。
    • 哈利·法蘭克福说"忽悠是美国文化的最为显著的特色之一。"忽悠无处不在。为什么美国人尤其喜欢忽悠?
      • 美国人喜欢把明面上的事情做得很漂亮,很注意控制自己的私人情绪,很少跟人撕破脸, 但是又讲究 integrity 不会直接撒谎,所以 bullshit 是最好的选择。
  • 如何感知对方是否在忽悠你?
    • 使用==忽悠探测器==,这是一种假想的、心理上的反欺骗机制。
    • ==反忽悠的关键在于识别风险的非对称性,如果对方没有厉害攸关,却倡导某些东西,在成功的时候他获利,但是失败的时候只有你受损失,那么对方就是在忽悠你。==