在 TAO 之前,Facebook 使用缓存旁路模式来扩展其社交图谱存储。存在三个问题:列表更新操作效率低;客户端必须管理缓存,且很难提供读后写一致性。通过 TAO,这些问题得以解决。
在Memcached中更新社交图谱的边列表操作效率太低, 客户端管理缓存的逻辑很复杂,很难维持数据库读在写之后这种一致性。如何解决这三个问题:加快读操作,高效处理大规模的读;及时完成写操作;提高读操作的可用性。
所有成功的公司是不一样的:每个成功的公司通过解决一个特定的问题来获得一个领域的垄断。所有失败的公司则是相同的:他们没有摆脱市场竞争。如果只模仿行业领袖公司产品和服务,没有创新并且定位同样的市场,那么人们不会买他的帐。
如果两个人出于相同的原因购买相同的产品,但没有办法相互参考,他们就不属于同一个市场。
高科技市场的定义:现有的和潜在的用户;对某类产品或者服务;有需求;而且这些人在决定购买的产品的时候会互相参考。互相参考是市场成功的关键。
创新是否具有颠覆性?
高科技公司经常引入一些破坏性创新。这些产品的用户增长成S曲线。发展一个高科技市场,就是让这个周期顺利的从左到右进行,一个一个用户群体,逐个突破。借着左边的用户群体的浪潮更容易向右边的用户群体推销产品。观察科技应用的生命周期,可以看到两处裂缝和一个断层。
动机
API 可能不够健壮且不可预测。为了解决这个问题,应遵循三个原则。客户端重试以确保一致性。使用幂等性、指数退避和随机抖动进行重试。
为什么API会不可靠?网络会出错,服务器会出错。解决这个问题的三个原则:客户端用“重试”来保证状态的一致性;重试的请求里要有幂等的唯一性ID;重试要负责任,比如遵循指数退避算法,因为不希望一大波客户端同时重试。