欢迎来到天天文库
浏览记录
ID:8218711
大小:3.94 MB
页数:94页
时间:2018-03-10
《ArchSummit北京2015-《再造轮子之道》-袁泳》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、再造轮子之道袁泳@UBER不容忽视的两难选择反方意见:造轮子=战略错误It'simportanttorememberthatwhenyoustartfromscratchthereisabsolutelynoreasontobelievethatyouaregoingtodoabetterjobthanyoudidthefirsttime.—JoelSpolsky,2001NetscapeBorlandQuattroPro正方意见:再造轮子=学习+革新案例:重写LotusNotes公式引擎案例:重写LotusNotes公式引擎改写前•超过10年
2、的代码库•上百积压bugs•大量优化•资深工程师:“没人能动这套代码”•DamienKatz:多年UI经验,无C++经验改写后•全新C++代码库•0bug•提速300%•全新数据复制组件•CouchDB造轮子的唯一原因核心竞争力Google:基础架构Uber:DispatchNetflix:高质廉价的影视作品UndifferentiatedHeavyLifting无关紧要的重活常见工程师黑话•第三方设计太复杂•第三方代码太丑陋•第三方系统太不稳定都不是理由•降低基建开销200%•系统可用时间从3个9提升到4个9•没有系统能够支持公司的战略功能A
3、utoScalingAutoScalingvsPredictiveAutoScaling造轮子的正确姿势像科学研究一样遍历文献遍历文献=熟悉已知系统熟悉历史沿革熟悉历史沿革=了解技术发展中的取舍案例:Elasticsearch案例:Elasticsearch•自己的LeaderElection算法案例:Elasticsearch•自己的LeaderElection算法•自己的集群管理算法(zendiscovery)案例:Elasticsearch•自己的LeaderElection算法•自己的集群管理算法(zendiscover)•Call-m
4、e-maybeTest:>50%数据丢失案例:FacebookZeus应用场景-服务发现应用场景-服务发现-动态配置管理应用场景-服务发现-动态配置管理-自动分片(shard)管理应用场景-服务发现-动态配置管理-自动分片(shard)管理-分布式锁和分布协调需求-跨区集群.-西岸:两个数据中心。-东岸:三个数据中心需求-跨区集群.-西岸:两个数据中心。-东岸:三个数据中心-至少百万客户端需求-跨区集群.-西岸:两个数据中心。-东岸:三个数据中心-至少百万客户端-DoS保护:流畅处理大量客户端同时上线需求-跨区集群.-西岸:两个数据中心。-东岸
5、:三个数据中心-至少百万客户端-DoS保护:流畅处理大量客户端同时上线-100%上线-任何时候可读怎么入手?遍历文献=考察现有系统•GoogleChubby•ApacheZookeeperApacheZookeeperZookeeper远非完美Zookeeper远非完美•写入吞吐量太低Zookeeper远非完美•写入吞吐量太低•保证写入顺序导致写入延迟Zookeeper远非完美•写入吞吐量太低•保证写入顺序导致写入延迟•客户端短时大量接入导致服务器当掉Zookeeper远非完美•写入吞吐量太低•保证写入顺序导致写入延迟•客户端短时大量接入导致服
6、务器当掉•不能承受上亿监控节点Zookeeper远非完美•写入吞吐量太低•保证写入顺序导致写入延迟•客户端短时大量接入导致服务器当掉•不能承受上亿监控节点•Leader节点挂掉造成长时间服务中断解决方案•确认性能瓶颈-Leader节点的锁争用-Javawait-notify耗时太长解决方案•确认性能瓶颈-Leader节点的锁争用-Javawait-notify耗时太长•采纳精简数据结构-位图表示监控节点-250GBto300MB解决方案•确认性能瓶颈-Leader节点的锁争用-Javawait-notify耗时太长•采纳精简数据结构-位图表示监
7、控节点-250GBto300MB•常用优化手段-流水线-客户端缓存-适当放松协议限制从“小”开始从“小”开始=快速迭代从“小”开始=累进改动从“小”开始=最多考虑10倍增长案例:NetflixAtlasNetflixAtlas•Netflix的监控系统NetflixAtlas•Netflix的监控系统•第一版:Perl写的RRD系统NetflixAtlas•Netflix的监控系统•第一版:Perl写的RRD系统•经验:OLAP是杀手功能NetflixAtlas•Netflix的监控系统•第一版:Perl写的RRD系统•经验:OLAP是杀手功能
8、•经验:查询语言必须灵活完备NetflixAtlas•Netflix的监控系统•第一版:Perl写的RRD系统•经验:OLAP是杀手功能•经验:查询语
此文档下载收益归作者所有