跳到主要内容

数据分区与路由

· 阅读需 2 分钟

为什么要进行数据分区与路由?

大数据集 ⟶ 扩展 ⟶ 数据分片 / 分区 ⟶ 1) 数据访问的路由 2) 可用性的副本

  • 优点
    • 可用性
    • 读取(并行化,单次读取效率)
  • 缺点
    • 一致性

如何进行数据分区与路由?

路由抽象模型本质上只有两张地图:1) 键-分区图 2) 分区-机器图

哈希分区

  1. 哈希和取模

    • (+) 简单
    • (-) 灵活性(紧耦合两张地图:添加和移除节点(分区-机器图)会破坏现有的键-分区图)
  2. 虚拟桶:键--(哈希)-->虚拟桶,虚拟桶--(表查找)-->服务器

    • 使用案例:Membase 也称为 Couchbase,Riak
    • (+) 灵活性,解耦两张地图
    • (-) 集中式查找表
  3. 一致性哈希和 DHT

    • [Chord] 实现
    • 虚拟节点:用于异构数据中心的负载均衡
    • 使用案例:Dynamo,Cassandra
    • (+) 灵活性,哈希空间解耦两张地图。两张地图使用相同的哈希,但添加和移除节点==只影响后续节点==。
    • (-) 网络复杂性,难以维护

范围分区

按主键排序,按主键范围分片

范围-服务器查找表(例如 HBase .META. 表)+ 本地基于树的索引(例如 LSM,B+)

(+) 搜索范围 (-) log(n)

使用案例:Yahoo PNUTS,Azure,Bigtable

好战略的能量来自哪?

· 阅读需 1 分钟

好战略卓有成效的关键在于把有限的能量投到最能产生成效的点上。好钢用在刀刃上。

那我们不禁要问,这些能量来自哪里?这里有一些常见的来源:

  • leverage 杠杆
  • proximate objectives 抓手
  • chain-link systems 木桶效应。没有短板的系统是极其难以复制的,比如宜家。
  • design 设计
  • focus 聚焦战略,对于特定的群体,提供特定的服务
  • growth 团队规模的增长不应该是刻意的,而应该是公司产品增长的自然的结果
  • advantage 比较优势是分领域的,赛跑冠军不一定跳高强。
  • dynamics 外部变革 exploit a wave of exogenous change
  • inertia and entropy 惯性

好战略的核心之三:连贯的行动

· 阅读需 2 分钟
  • “连贯的互补的行动”意味着这些行动直接互相有帮助形成合力。比如,我作为管理者,引入加在别人身上的流程的原则是,==“我绝对不会让你做对你的本职工作没有帮助的事儿”==。
  • 战略协作不是即时安排出来的,而是刻意地设计出来的,是中心化地强加在系统上的。
  • 中央集权是个坏东西,但是一盘散沙也不行,因为各个子组织的利害关系不一样。比如,制造业里,销售喜欢用加急的大订单取悦客户,但生产部门喜欢长期地平稳地不受打扰地输出。不可能做到既能够应付加急的大订单,又能够做到平稳的生产。
  • 组织协作是耗时耗力的,没有足够的好处就不要做,聪明的组织不会追求所有的人互相做到100%的沟通,而是做到恰到好处的协调。

好战略的核心

· 阅读需 1 分钟

三个基本元素

  1. 诊断 diagnosis: 简化问题,识别挑战
  2. 指导原则 guiding policies:如何应对挑战?
  3. 连贯的行动 coherent actions:一系列在原则指导下,互相帮助形成合力的行动

举三个例子

In business, the challenge is usually dealing with change and competition.

  1. diagnosing the specific structure of the challenge rather than simply naming performance goals.
  2. choosing an overall guiding policy for dealing with the situation that builds on or creates some type of leverage or advantage.
  3. design of a configuration of actions and resource allocations that implement the chosen guiding policy.

In many large organizations, the challenge is often diagnosed as internal.

  1. organization’s competitive problems may be much lighter than the obstacles imposed by its own outdated routines, bureaucracy, pools of entrenched interests, lack of cooperation across units, and plain-old bad management.
  2. reorganization and renewal.
  3. changes in people, power, and procedures.

Amazon

The Amazon business model as drawn by Jeff Bezos on a napkin

why-so-much-bad-strategy

· 阅读需 4 分钟

id: 2018-07-16-why-so-much-bad-strategy slug: 2018-07-16-why-so-much-bad-strategy

title: "为什么会有那么多的坏战略?" date: 2018-07-16 11:54 comments: true tags: [strategy] description: 造成坏战略三个原因:做选择是令人痛苦的事情;人们不喜欢动脑地套模版;人们总以为人定胜天,认为态度决定一切。 references:


主要有三个原因:

  1. 做选择是令人痛苦的事情
    • DEC 做战略选择的时候有三派意见 “Boxes”, “Chips”, “Solution” 投票导致了 Condorcet’s paradox. 投票悖论:民主投票会投出 A > B > C > A 这种非理性的结果。CEO Ken Olsen 让大家做出共识,但是本质上你无法让一个子组织自动放弃它自己的热忱。所以最后大家选了一个折衷的方案:”DEC is committed to providing high-quality products and services and being a leader in data processing”. 这就是空话套话了。
    • Eisenhower 1952 年竞选总统的时候许诺要让苏联撤离东欧,但是在赢得大选做出大量调研之后,做出艰难的决定放弃了这个许诺。
    • Intel CEO Andy Grove moves the company from producing dynamic random access memory (DRAM) to one focused on microprocessors.
  2. 人们喜欢不动脑地套模版
    • 社会学之父 Max Weber 认为,要区分 formal leaders 和 those who led by personal charisma
    • Peter Drucker, one of the foremost thinkers about management, said, “==Effective leadership doesn’t depend on charisma.== Dwight Eisenhower, George Marshall, and Harry Truman were singularly effective leaders, yet none possessed any more charisma than a dead mackerel.… Charisma does not by itself guarantee effectiveness as a leader.”
    • 学院派对领导力的要求大致为
      1. Develops or has a vision
      2. Inspires people to sacrifice (change) for the good of the organization
      3. Empowers people to accomplish the vision
    • 领导力与战略有相通的地方,但是绝不能混淆。比如
      • 领导力让人自我牺牲自我变革而感受良好
      • 战略是演讲怎样的变革可以追求值得追求
    • 类似的混淆是有了一个战略就以为有了一个好战略。无数的书籍和教程给大家一个模版,让大家无脑填,造就了无数的坏战略。
  3. New Thought 人们总以为人定胜天,认为态度决定一切
    • 张德芬的”吸引力法则”, New Thought movement, the law of attraction 对于结果的“正能量”幻想让人懈怠于真正对结果有帮助的努力,是精神鸦片。我们应该多想象做事的过程,相当于是模拟训练。

遥测产品管理框架

· 阅读需 2 分钟

产品管理(PM)的一个关键角色,无论是作为以产品为中心的创始人(CEO,CTO)还是PM领导者,都是确保产品开发工作==集中==。

  • 有限的资源与市场需求在朝着产品市场契合的过程中进行平衡
  • 努力工作以保持竞争优势

流程是坏事吗?我的指导原则或黄金法则是:永远不要向某人要求与他们完成自己工作无关的事情。

遥测中的产品路线图

telemetry

遥测框架

当工具让人感到不堪重负时,它就不会被使用,因此也就无所谓 - 例如,一个巨大的甘特图。遥测电子表格更为有用。

telemetry framework

在我看来,这个工具对于10到5000人的项目来说是合适的复杂程度。

benefits: 它是资源分配的指导方针

  • 任何人都可以查看自己的工作,知道自己在哪里,以及它适合什么
  • 在任何时候,都可以看到总共多少时间(资源)用于支持某个项目或目标
  • 知道哪些任务过于遥远,过于庞大
  • 知道哪些资源被过度约束

设计非常大的(JavaScript)应用程序

· 阅读需 4 分钟

非常大的 JS 应用 = 很多开发者 + 大型代码库

如何处理很多开发者?

同理心

什么是 ==高级工程师==?没有初级工程师的高级工程师团队就是工程师团队

  1. 成为高级工程师意味着我能够解决几乎所有别人可能抛给我的问题。
  2. 让初级工程师最终成为高级工程师。

高级工程师的下一步是什么?

  1. 高级: “我知道我会如何解决这个问题”,因为我知道我会如何解决它,我也可以教别人怎么做。
  2. 下一个层次: “我知道别人会如何解决这个问题”

良好的编程模型

人们如何编写软件,例如 react/redux, npm。这里有一个影响所有大型 JS 应用的模型 - 代码分割。

  1. 人们必须考虑打包什么以及何时加载
  2. ==基于路由的代码分割==
  3. 但是,如果这还不够呢?
    1. 懒加载我们网站的每一个组件
    2. Google 是怎么做的?通过渲染逻辑和应用逻辑进行分割。==简单地在服务器端渲染一个页面,然后实际渲染的内容触发下载相关的应用程序包。== Google 不做同构渲染 - 没有双重渲染

如何处理大型代码库?

==代码可移除性/可删除性==

例如,CSS 在代码可移除性方面表现不佳

  1. 一个大的 CSS 文件。里面有这个选择器。谁真的知道它是否仍然与您的应用程序中的任何内容匹配?所以,您最终只是把它留在那里。
  2. 因此,人们创建了 CSS-in-JS

==不惜一切代价避免应用程序的中央配置==

  1. 坏例子
    1. 中央路由配置
    2. 中央 webpack.config.js
  2. 好例子
    1. 去中心化的 package.json

避免中央导入问题:路由器导入组件 A、B 和 C

  1. 为了解决这个问题,做 ==“增强”而不是“导入”==
  2. 然而,开发者仍然必须决定何时增强,何时导入。由于这可能导致非常糟糕的情况,我们使“增强”成为非法,没人可以使用它——只有一个例外:生成的代码。

避免基础包的垃圾堆

  1. 例如,基础包绝不应包含 UI 代码
  2. 通过禁止依赖测试解决此问题
  3. ==最直接的方法必须是正确的方法;否则添加一个测试以确保正确的方法。==

小心抽象

我们必须变得善于找到正确的抽象:同理心和经验 -> 正确的抽象

坏的战略是肤浅的

· 阅读需 2 分钟

坏的策略是形式主义,有四大基本特征

  1. 空话套话 ==故弄玄虚== ==fluff== 战略不应该是一堆高大上的名词的堆砌

    • e.g. a major bank “Our fundamental strategy is one of customer-centric intermediation.” = “Our bank’s fundamental strategy is being a bank.”bing a back.
  2. 无法直面挑战

    • If you fail to identify and analyze the obstacles, you don’t have a strategy. Instead, you have either a stretch goal, a budget, or a list of things you wish would happen.
    • 让我想到了 root level metrics 的选择要非常小心, ==If you can't measure it, you can't improve it==
    • 一个正面的例子是 DARPA
  3. 错把目标当战略

    • e.g. a 20/20 goal - We will grow revenue by at least 20% each year. We will maintain a profit margin of at least 20%.
    • metrics 不是战略
  4. 子目标无关紧要或者不切实际

    • Goal 是总目标, Objective 是子目标
    • Good strategy works by focusing energy and resources on one, or a very few, pivotal objectives whose accomplishment will lead to a cascade of favorable outcomes.
    • 什么样的子目标是不好的子目标呢?
      1. Dog’s Dinner Objectives 事无巨细全放在一起
      2. Blue-Sky Objectives 放卫星

CORS 与 CSP

· 阅读需 1 分钟
  • CORS 允许站点 A(数据提供者)授权站点 B 从站点 A 读取(可能是私有的)数据(使用访问者的浏览器和凭据)。
  • CSP 允许一个站点防止自身(数据消费者)从意外来源加载(可能是恶意的)内容(例如,作为对 XSS 的防御)。

优点和缺点随着观点角度的变化而变化

· 阅读需 2 分钟

There is nothing either good or bad, but thinking makes it so. by Shakespear in Helmet

大卫与歌利亚的传说。从世俗的角度来讲,大卫弱而歌利亚强,大卫是初生牛犊,歌利亚是经验丰富的巨型战士。而大卫却用投石带战胜了歌利亚。

沃尔玛战胜 kmart 的故事。美国零售业的传统智慧是,一个品类丰富的零售超市需要开在有至少10万人口的地方,而沃尔玛能够开在人口更少的地方,为什么? 因为沃尔玛有更高效的供应链管理,店与店之间形成了一个有机的网络;而 kmart 的店与店之间联系没有那么紧密,库存管理成本更高,采购的议价权更小。

冷战军备竞赛时期,安迪马歇尔对付苏联的策略——发展比较优势,利用美国的经济和科技优势,发展那些让对方应对起来很花钱、但是那些应对措施又不会对美国 产生威胁的技术,比如做提升导弹精度、开发无声潜艇之类的事情。最终拖垮苏联。