需求分析

互联网服务往往要处理来自全世界的流量,但是,一个服务器只能够同时服务有限数量的请求。因此,通常我们会有一个服务器集群来共同处理这些流量。那么问题来了,怎样才能够让这些流量均匀地分布到不同的服务器上呢?

从用户到服务器,会经过很多的节点和不同层级的负载均衡器。具体来讲,我们这次设计的需求是:

  • 设计第7层的负载均衡器,位于数据中心的内部。
  • 利用来自后端实时的负载信息。
  • 服务每秒千万级的流量以及10 TB每秒级别的吞吐量。

补充:如果服务 A 依赖服务 B,那我们称 A 是 B 的下游服务,而 B 是 A 的上游服务。

挑战

为什么负载均衡会很难做?答案是很难收集准确的负载分布数据。

按照数量分布 ≠ 按照负载分布

最简单的做法是根据请求的数量,随机地或者循环地分布流量。然而,实际的负载并不是根据请求的数量来算的,比如有些请求很重很耗CPU,有些请求很轻量级。

为了更加准确地衡量负载,负载均衡器得保持一些本地状态 —— 比如,存当前的请求数、连接数、请求处理的延迟。基于这些状态,我们能够使用相应的负载均衡的算法 —— 最少连接、最少延迟、随机 N 取一。

最少连接:请求会被导向当前连接数最小的服务器。

最少延迟:请求会被导向最少平均反应时长且最少连接数的服务器。还可以给服务器加权重。

随机 N 取一 (N 通常是 2,所以我们也可以称之为二选一的力量):随机的选两个服务器,取两者之中最好的,能够避免最坏的情况。

分布式的环境

在分布式的环境中,本地的负载均衡器难移了解上下游服务完整的状态,包括

  • 上游服务的负载
  • 上游服务可能超级大,因此很难选择一个合适的子集接入负载均衡器
  • 下游服务的负载
  • 不同种类的请求的具体处理时间很难预测

解决方案

有三种方案能够准确地搜集负载的具体情况并相应地处理:

  • 中心化的一个均衡器,根据情况动态地处理
  • 分布式但是各个均衡器之间要共享状态
  • 服务器返回请求的时候捎带上负载信息,或者是均衡器主动询问服务器

Dropbox 在做 Bandai 的时候选择了第三种方案,因为这很好地适应了现行的随机 N 选一的算法。

然而,与原配的随机 N 选一的算法所不同的是,不是使用本地的状态,而是选择服务器实时返回的结果。

服务器使用率:后端服务器设置了最大负载,数当前的连接,然后计算出使用率,范围是从 0.0 到 1.0.

有两个问题需要考虑:

  1. 处理错误: 如果 fail fast ,由于处理得很快,反而会吸引更多的流量产生更多的错误。
  2. 数据要衰减: 如果服务器的负载太高,没有请求会发到那里。因此,使用一个类似于反 S 曲线的衰减函数来保证老数据会被清理掉。

结果: 服务器接收的请求更加的均衡了

影响供应链的两种力量:科技与政治

有两种全球化,一种是工业革命带来的大发散。一种是信息革命带来的大收敛,发达国家提供资本和高科技、去工业化,欠发达国家提供廉价劳动力、工业化。后一种全球化造就了供应链的黄金时代,但是它对世界的影响更加地突然而且难以控制。

而现在的我们处于后一种全球化的末尾,增长变慢,经济学人发明了一个词叫全球化趋势放缓 slowbalisation,比如英国脱欧、中美贸易战。

技术上的, AI、机器人、3D 打印、无人车、5G 等让供应链面对前所未有的大变革,这些变革让全球化更可控。然而,这种变革却受到了技术冷战的阻碍。

产业的变化

超过半数的公司认为应该在他们的公司引入供应链方面的 major change,十分之一的企业认为应该彻底推倒重来。这里有两个主要的考虑点:

一个是降低供应链成本带来的风险 - 你只是处在供应链网络的一部分节点上,难移控制网络上相邻节点的相邻节点。11年的日本台风,让一个半导体巨头花了100个 executive 超过一年的时间搞清楚他的供应链的拓展出来的网络具体有哪些公司。

一个是全球贸易不仅是带来了更多的产品,还带来了更多的服务。服务占贸易产值的三分之一,而且服务的增长比产品快 60%,在电信和信息产业能够快到 2 到 3 倍。

具体从三个产业看:

  1. 服装:有一些从中国移向东南亚、越南、孟加拉国、埃塞俄比亚。中国尽管成本有所提高但是熟练工仍然非常有竞争力。

  2. 汽车:区域化和枢纽化:墨西哥辐射北美、东欧和摩洛哥辐射西欧、东南亚和中国辐射亚洲。区域化的一个主要原因是消费习惯的不同,比如皮卡只有在美国很畅销;其他原因还有比如贸易战、汽车的电气化(部件要少很多很多)。

  3. 计算机:有一些公司搬离中国去越南、柬埔寨和墨西哥,甚至搬回美国。有很多公司发现搬离美国很难。深圳还是最牛逼,因为其自动化的能力和高附加值。

亚马逊和阿里巴巴仍然是下一场变革的标杆

亚马逊用数据、算法、机器人做到物流比大部分的竞争对手还要快三分之一。

数字化:新技术如何改造老行业?

  1. 可预测性
    1. 公司有用历史记录预测销售的传统,并相应调整制造和库存等等。AI 能够根据社交媒体用更多的数据、更精准地调和供应链上每个节点的参数。
    2. 调研发现,公司高管认为最应采用的技术是 congnitive analytics 和 AI ,区块链和无人机的排名有所下降。
    3. JDA 用 Blue Yonder 的深度学习的算法,让售空下架的情况减少了 30%,压货时间减少好几天。
    4. ORSAY 用 JDA 的自动定价系统来减少库存。
    5. 英特尔用预测模型省钱省了 $58m
  2. 透明性
    1. 对跨国企业而言,“东西在哪里?”仍然是一个巨大的未解难题。为什么?因为他们对于产品的控制不是最最直接的,他们不造、不运、不存、不卖产品。
      1. 举个例子,17 年德国货运业罢工,把 IBM 昂贵的主机晾在了停机坪上的冰雪里长达一个月,而因为无法精确定位货物,公司还以为被安全地存放在机场的仓库里。
    2. 物联网能够解决这个问题。传感器不仅能够汇报位置,还有方向、温度、适度等等参数。
    3. 新加坡用无人车自动化港口运输。
    4. IBM 和 Maersk 用区块链让运输无纸化和透明化,
  3. 速度
    1. 在硅谷 Tom Linton 的 Pulse command centre,看上去像是五角大楼的指挥中心,能够实时看到供应链上的92个变量,与客户通过手机和电脑共享数据和决策,让库存减少 11 天,释放出 $580m 的现金流。
    2. Li & Fung 让产品设计到上架,从原来的 40 周,减少到了现在的一半。
    3. 3D 打印独角兽 Carbon 帮助福特和阿迪达斯开发和生产产品。
    4. Uber or Airbnb for warehousing

安全上的挑战

供应链管理正在经历从直觉和经验驱动过渡到数据驱动,主要有三大安全方面的挑战:

  1. 华为。替换掉华为的产品会提高成本,而 5G 采取不同的不兼容的技术标准会逼着不同国家站队,而 5G 技术对 IoT 至关重要 。
  2. 黑客攻击。新式的 IoT 设备急于投入使用,没有完备地考虑安全,然而“没有人会愿意开着坦克上班”,因为这实在是太慢了。比较好的应对方法是见招拆招、快速反应。
  3. 贸易战。政策可以一天一个样子,但是工厂可不是想搬就搬。

获客效率问题:广告投放如何花更少的钱用更少的人得到更高回报?

具体来讲,Lyft 的广告投放要服务如下特点

  1. 管理基于地域的 campaign
  2. 数据驱动的增长:增长必须是规模化的、可测量的、可预测的
  3. 支撑起 Lyft 独特的增长模型,如图:

lyft growth model

主要的挑战是:难以规模化管理跨地域营销中的各个环节,广告竞标、预算、素材、激励、选择受众、测试等等。下图是营销者的一天:

营销者的一天

我们可以发现“执行”占去了大部分的时间,而更少的时间花在了更重要的“分析和决策”上。规模化意味着减少繁复的操作,让营销人员专注于分析与决策。

解决方案:自动化

为了降低成本,提高做实验的效率,需要

  1. 预测新用户是否对产品感兴趣
  2. 多渠道优化,有效评估和分配预算
  3. 方便地管理上千个 campaigns

数据由 Lyft 的 Amundsen 系统做增强学习。

自动化的部分包括:

  1. 更新 bid 的关键词
  2. 关掉效果不好的素材
  3. 根据市场改变 referrals values
  4. 找到高价值的用户 segment
  5. 在多个 campaign 中共享策略

构架

Lyft Symphony Architecture

技术栈:Apache Hive, Presto, ML platform, Airflow, 3rd-party APIs, UI.

具体的组成模块

LTV 预测模块

用户的终身价值是衡量渠道的重要标准,预算由 LTV 和我们愿意为该地区的获客付出的价格共同决定。

我们对新用户的认知有限,随着交互的增多,所提供的历史记录会更准确地预测。

一开始的特征值:

特征值

随着历史上的交互记录的积累,做出的判断就会越准确:

根据历史记录判断 LTV

预算分配模块

搞定了 LTV,接下来是根据价格定预算。拟合出 LTV = a * (spend)^b 形式的曲线以及周围的区间里类似参数的曲线。为了找到全局最优,需要付出一些随机性的代价。

预算计算

投放模块

分为两部分,一部分是调参者,一部分是执行者。调参者根据定价,设定基于渠道的具体的参数;执行者把这些参数执行到具体的渠道上。

有很多流行的投放策略,在各色的渠道中,是共通的:

投放策略

总结

要注意人的经验在系统中的重要性,否则会 garbage in, garbage out. 当人从繁琐的投放任务解放出来,专注于理解用户、理解渠道、理解自身要传达给受众的信息之后,就能够获得更好的投放效果——花更少的时间达到更高的 ROI。

Spotify 的设计主管从15岁辍学开始做各种 side project,几十年的经验让他认为,成功的 side project 必须是“傻傻的”,这样探索的时候就不会有包袱而更大胆更有乐趣。所有的大事一开始都是小事,谷歌 50% 的新项目诞生于著名的 20% 的业余项目。规模化、融资、竞品分析各种繁杂的问题会拖累你的进度。做事情比学习重要,因为别人不会比你更聪明,别人的经历你很难感同身受。很多成功的创业不是计划出来的。项目会吸引志同道合的人。

Side project 还有一个心里上的好处就是“很爽”,你是你的老板,你决定做什么都可以,没有人能够阻止你 :)

产品的衡量指标

12342 2019-09-18 02:36

指标让含糊的点子变成好点子

  • 大致估算即可
  • 专注于如何评估一个伟大的产品
  • 注意,不要担心总的市场大小
    • 单纯问“最终会很大吗?”就足够了

关于产品,我们该衡量什么?

  • 用户是否得到了价值?
    • 活跃用户
    • 利润
    • 交易量
    • 留存

留存很重要

下图显示的是每年的时间群组下在一段时间之后的留存率

如果群组留存率一直在跌没有下限的话,你的增长就好像田里的火环一样没法持续燃烧,因为

  • 老用户都会被烧光
  • 新用户会越来越少

你应该保持留存率处在某条线之上

相反,如果群组留存率随着时间增加了,那说明你的产品很牛逼。举个例子:

  1. Whatsapp
  2. Uber
  3. Facebook

Tom Tunguz: 留存高意味着高估值

增长

如果你要求很高,想要达到指数级的增长,那么,评估你每周的增长率。努力让这个每周的增长率平平的,你就会拥有指数级的增长。

迭代速度

  • 越小的公司迭代速度越有优势
  • 衡量指标是指导迭代方向的关键
  • 衡量迭代本身的速度

你应该多么重视衡量指标呢?

  1. 不够重视
    • 容易糊弄自己和鬼打墙
  2. 非常重视
    • 你的决策会是审慎的
  3. 过于重视
    • 你增加了数值,但没有增加价值

现实会是痛苦的

  • 衡量指标会打破幻觉,有时候会有点痛
  • 大多数的领导靠幻觉吸引下属
  • 你应该
    • 学习过去
    • 厘清现在
    • 笑对未来

硅谷io

创业工程学
© 2018 硅谷io
Built with ❤️ in San Francisco