编辑推荐
适读人群 :《程序员2014精华本》适合开发者、项目经理、CTO&CIO、编程爱好者阅读和收藏。 1、《程序员(2014精华本)》紧紧围绕大数据、电商架构、智能硬件、移动开发、团队管理等热门话题,进行了全面而深入的解读。
2、《程序员(2014精华本)》由程序员编辑部精心打造,对《程序员》杂志2014年的内容再次进行了优化整合,内容更加聚焦,是一份浓缩的饕餮盛宴,值得阅读。
海报:
内容简介
《程序员2014精华本》紧紧围绕大数据、电商架构、智能硬件、移动开发、团队管理等热门话题,进行了全面而深入的解读。于原有栏目和本年度热点,《程序员2014精华本》的结构分为以下七个篇章。 专题篇:综合了2014年1-12月封面报道,内容包括双11背后的技术、大数据实时处理、编程语言、我们是MAKER、云计算理想与现实、移动开发工具、打造高效团队、安全新知、微信开发、移动5年、电商峰值系统架构设计、2014TOP50具价值CTO等12个主题。 对话篇:由程序员记者直接采访大师级人物和知名技术人,在思想、实践等方面进行深刻碰撞。 管理篇:主要是来自软件方法、个人成长、一分钟先生等栏目的真知灼见。 产品篇:主要分享产品设计方面的方法、理念和实践。 移动篇:汇聚移动开发领域的观点、工具和技术。 云计算篇:云计算和大数据领域的热门技术和实践,特别是2014年大红大紫的Docker和Spark。 技术篇:包括语言与工具、技术实践等方面内容。
目录
专题篇双11背后的技术 1网购狂欢节背后的技术阅兵 1双 11 的前端实践3天猫浏览型应用的 CDN 静态化架构演变8个性化技术在双 11 的应用12聚石塔 :电子商务云平台 2013 年双 11 历程15支付宝的架构变迁18中间件技术的双 11 实践25软负载 :分布式系统的引路人25分布式服务框架 :分布式服务的组织者27消息中间件 :分布式消息的广播员27EagleEye :分布式调用的跟踪者30数据层 :分布式数据存储的桥梁32应用服务器 :系统运行的托管员34稳定性平台 :系统稳定运行的保障者36双 11 数据库技术38大规模离线计算集群故障管理实践40千万 QPS 能力的高性能 DNS 防护系统41阿里的 SDN 实践42阿里整机架服务器解决方案44大数据实时处理46实时和交互 :技术与现实的纠缠46大数据时代之实时数据传输47HBase 在内容推荐引擎系统中的应用50实时处理之流式计算平台的实践53Storm 在腾讯的应用55京东基于 Samza 的流式计算实践58Spark Streaming:大规模流式数据处理的新贵61Presto实现解析63基于Impala构建实时大数据查询系统实践66百度实时计算系统69百分点实时计算实践:架构和算法72编程语言76新系统语言Rust―Rust 项目技术负责人 Brian Anderson 专访76Rust语言:安全地并发77让高性能科学计算为人人所用―科学计算语言 Julia 发明团队专访78Julia语言初探81全栈语言的力量―Red 语言设计者 Nenad Rakocevic 专访84Red语言:向编程复杂性反击85Go语言技巧88Node.js背后的V8引擎优化技术91向小众学习95浅谈Common Lisp的宏编程97中间语言和虚拟机漫谈100未来工具与未来语言―JetBrains CEO 专访103我们是MAKER105理解创客105我们正经历一场真正的革命―3D Robotics CEO、美国《连线》杂志前总编 Chris Anderson 专访107想改变世界,先改变自己―知名 Hacker、发明家 Mitch Altman 专访 109创客天下《Make》及 Maker Faire 创办人、―O'Reilly Media 创始人 Dale Dougherty 专访 110别怀疑,每个人都是创客―美国 16 岁创客 Joey Hudy 专访111开发板,开源和创客113充满乐趣的创客之路115高中生创客的自我养成117机器人领域创业那五年―RoboPeak 创始人陈士凯专访119云计算,理想与现实123我所经历的“余额宝”的那些故事123电信行业云计算实施经验谈―浙江电信业务云资源池核心技术解析127广电行业云基础平台构建实践―细解北京网络广播电视台云基础支撑平台项目 129港华燃气核心业务云端之路132轨道交通行业的企业云计算―广州地铁的企业云平台构建135移动开发工具139次时代交互原型神器Origami档案139Facebook POP,迈向大师操作之路143New Relic漫谈―Mobile APM 给我们带来什么?145那些好用的 iOS 开发工具149这些年用的iOS UI自动化测试工具152打造高效团队155打造高效开发团队155精益化的团队高效协作157小站会, 大智慧158自组织团队建设的 “催化剂”从组织到团队163知识管理应该围绕学习展开165高效能技术团队的协同工具箱167安全新知171普通开发者的网络安全必读171挑战与机遇:新型网络中的安全困局172构建更加安全的智能移动平台174移动支付安全的挑战与对策175Android安全研究经验谈176解密Android短信木马为何屡杀不尽179微信开发182微信生态的渗透与价值182以招行为例,微信公众账号开发高级篇184妆媒体微信公众号背后的酸甜苦辣186微气象,大民生188高性能微信公众平台开发189微信支付开发关键点技术解析191如何使用微信设计二次认证194移动5年197大话移动5年―移动互联网发展历程与回顾197从SDK回顾iOS系统发展199移动5年,Android生态系统的演进202移动安全这五年204HTML5回首,在你的时代到来前208盘点移动互联网入口争战2112010-2014:App Store中那些遗失的游戏现象214移动互联网:五年洗礼,造就产业新变局―《唱吧》CEO 陈华专访217扁平化和参与感―小米联合创始人、副总裁黎万强专访219从TalkBox看IM即时通信工具的演变―TalkBox 团队被微信颠覆后的创业思考220移动五年,创业者眼中的变迁222电商峰值系统架构设计224快稳炫 :电商峰值系统架构三字诀224传统企业电商峰值系统应对实践225当当网系统分级与海量信息动态发布实践227京东峰值系统设计230“米粉节”背后的故事―小米网抢购系统开发实践232海尔电商峰值系统架构设计最佳实践235唯品会峰值系统架构演变2381号店电商峰值与流式计算241如何在双11中创造99.99%的可用性―蘑菇街在大型促销活动中的稳定性实践242履单流程的弹性架构―麦包包峰值架构实践2452014 TOP50最具价值CTO248从呼叫中心到移动互联网的演进―携程高级技术副总裁叶亚明专访248要学会面对黎明前的黑暗乐视网 CTO 杨永强专访250能做存储的超级计算机―XtremIO CTO 任宇翔和以色列团队的创业故事251技术女神的自我奋斗―MediaV CTO 胡宁专访253做个不一样的“分享”平台―途家网联合创始人兼 CTO Melissa Yang(杨孟彤)专访254以软件革新硬件体验―极路由 CTO 康晓宁专访256开发+技术驱动―途牛旅游网 CTO 汤峥嵘专访258一位 DBA 老兵心中的国产数据库之梦―南大通用高级副总裁兼 CTO 武新专访261建立技术体系, 保障公司业务―赶集网 CTO 罗剑专访263
对话篇C++ 之父 Bjarne Stroustrup 访谈录265C++与编程人生―《C++ Primer》作者 Stanley B.Lippman 专访 270我的目标永远是让人开怀―Perl 之父 Larry Wall 访谈录273与时钟的对抗―访图灵奖得主 Ivan Sutherland2762013年图灵奖得主Leslie Lamport278反馈即一切―实时计算系统 Storm 创始人Nathan Marz 访谈录279Andrew Ng谈Deep Learning282永远追求下一个Big Thing―LSI 院士兼首席架构师 Robert Ober 专访283
管理篇软件方法286探索式测试解密―探索,不测试!286探索过程改进最佳实践288Competence:技术粗放型向管理精细型的转变 291刀锋管理体系―创业公司流程改进纪实294个人成长297给技术人上的管理课 :控制和计划297给技术人上的管理课:平衡和集中299给技术人上的管理课:激励与授权301软件测试人员的基本修养303向上管理:管理自己的老板304创业团队的招聘与留人306做一个“高大上”的架构师―蔡氏架构设计方法论之初体验308一分钟先生312小技术团队管理工具大比拼312技术人员如何参与产品设计讨论?316技术团队如何留住人才321技术走向管理要实现哪些转变325
产品篇火锅与煎饼331引导的设计331躺枪的互联网思维332不靠谱的“用户体验”332用户的鞋子333对不起333产品文化334设计流程335辩胜335高级山寨336为了体验336低能的“智能”337聊聊阿里的内部创新机制―赛马33870后大叔的90后产品炼成之路―田行智谈《碰碰》和他的创业故事339互联网思维与硬件创新―印美图在软硬整合产品中的实践341ANTVT KIT,不做中国的 Oculus343
移动篇游戏346从顶级游戏开发者倒下看产品型行业的危机感346刷任务:在聊与微奖励中摇摆348不良游戏体验对玩家的负面限制351以开发者角度看其游戏体验心态353手游中Boss异能和巨型形态的设定355免费体验增值模式改变游戏的五种形态357消费引导与游戏内容供给不足的悖论360从恐怖与惊悚元素谈玩家的情感代入362开发365iOS 应用安全开发你不知道的那些事365解析Swift函数式编程367Material Design :过去、现在和未来371Gradle:更智能的Android构建系统373迈步进入跨平台开发时代375
云计算篇Docker377Docker 的生态系统和未来377基于Docker的Auto Scaling实践380基于Docker的通用计算平台实践384网易Docker部署运维实践387Spark 392Spark 与 MLlib:当机器学习遇见分布式系统392Spark MLlib:矩阵参数的模式394使用Spark+MLlib构建用户标签系统397快刀初试:Spark GraphX在淘宝的实践400大数据405Kafka 在唯品会的应用实践405大众点评的数据架构之道407腾讯CKV海量分布式存储系统―日访问过万亿次背后的技术挑战409腾讯CKV海量分布式存储运营实践411百度实时计算应用实践414基于Storm的美团实时计算应用实践417服务化Cache系统―小米网 Redis 实践421虾米在个性化音乐推荐领域的实践424大规模微博用户兴趣图谱挖掘427Summingbird Twitter实时消息处理基础平台429
技术篇语言与工具434逆世界:让 C++走进 Python434你应该更新的 Java 知识437PostScript语言里的珠玑439node-webkit:HTML5桌面应用运行环境441Ruby并发框架纵横谈443JVM 中的全异步框架 Vert.x446技术实践449机器人与关键技术解析449图书评论排序对于用户购买的影响452门户级 UGC 系统的技术进化路线―新浪新闻评论系统的架构演进和经验总结455
精彩书摘
《程序员(2014精华本)》:
网购狂欢节背后的技术阅兵
文/庄卓然
从光棍节到网购狂欢节
2013年是双11的第五个年头,从2009年的“光棍节”到现在的“网购狂欢节”,单单是名字上的变化,大家就能从中感受到业务规模发生的转变。
2013年双11,天猫和淘宝单日成交额达到350.19亿元,网站PV过百亿,成就了14个销售过亿的商家。
其中,有76%的商家处理工作是在聚石塔云计算平台上完成的,并且无一漏单、无一故障。
支付宝实现成功支付1.88亿笔交易,再次刷新了2012年同期1.0580亿笔交易的全球纪录,最高每分钟支付79万笔交易。
手机淘宝整体支付宝成交额为53.5亿元是2012年的5.6倍(9.6亿元);单日活跃用户达1.27亿;手机淘宝单日交易成交笔数达3590万笔,交易笔数占整体的21%。
天猫双11共产生快递包裹1.52亿件,仅双11当天,国各大快递企业共处理6000多万件包裹,是2012年双11最高峰的1.7倍。
在疯狂的业务数据背后,是阿里技术团队的一次整体大阅兵,从天猫、淘宝到支付宝,从PC到无线,从研发到运维保障,各个环节都面临着巨大的挑战。
双11业务
生态在开始介绍这些挑战之前,我们先用一张图来看一看,作为消费者,你在2013年的双11大促中都会经历哪些业务过程,如图1所示。
首先,你会通过各种终端(PC、手机、平板)访问淘宝、天猫、聚划算的导购市场,丰富多样的导购产品会帮助你发现和挑选自己心仪的商品。大数据的基础平台支撑了大量有价值的数据应用,以保证你在这个环节的购物体验。稳定的交易平台确保了优惠价格的准确计算、库存的及时扣减和担保交易的订单有效生成。这时,你就可以通过支付宝安全放心地进行支付宝余额或者网上银行支付,满心欢喜地等待包裹的送达。
这时就开始轮到面向商家的系统忙碌起来了。聚石塔提供的云推送功能在第一时间将交易订单同步到部署在聚石塔云工作平台上的商家ERP、WMS、CRM软件中,并且为这部分软件提供了动态弹性扩容的能力和安全方面的有效保护,以便大商家在大量订单面前,可以像日常情况一样,快速组织商品出库和发货,而不用额外担心自己软件的处理能力。
最后出场的是菜鸟网络打造的雷达预警系统,通过大数据的力量,对商家的备货、消费者购买行为、物流服务能力进行预测,并与国家气象局、交通部实时发布的天气、道路情况进行同步运算,将未来半天至七天的预测结果反馈到13家快递公司,以便快递公司提前调配运力。最终,所有的包裹得以第一时间送到消费者的手中。
挑战和技术准备
业务跨数量级的快速发展对整体架构带来了新挑战经历了过去几年“去IOE”(IBM小型机、Oracle、EMC高端存储)整体架构改造,整个阿里集团建立了基于中间件、PCServer的轻量级分布式SOA架构,保证了服务器、数据库、网络、
机房各个层面无单点,可以以较小的成本支持水平扩展,提升网站的负载能力。但随着这几年双11业务的飞速增长,PV、同时在线用户数、峰值交易和峰值支付等核心指标都开始跨越到新的数量级,架构在更高负载能力要求下的一些缺陷开始暴露出来。
第一,大规模访问请求带来的机房网络瓶颈。
双11当天有数亿用户访问天猫和淘宝的系统,高峰期甚至有数千万人同时在线。以天猫的“商品详情”页面为例,集群峰值QPS达到了十万以上的量级,是平时峰值QPS的数十倍。这样的突发性流量增长,使得机房的网络容量面临着巨大压力。如何能够利用合理的成本应对瞬间飙高所带来的网络压力,确保活动完整周期内用户响应时间的稳定性,以及局部出现问题时的高可用性,成了首先需要面对的问题。着眼于未来,从2011年起,我们就开始了对浏览型的应用
进行新的架构改造。历经页面细粒度的动静分离、统一缓存接入、CDN静态化三个阶段。最终,将更新频率不高的内容伪静态化直接缓存到CDN,通过统一的秒级失效机制控制缓存的更新操作,让绝大多数内容请求不需要回流到主机房,直接在用户最近的CDN节点就能够完成。这种方式一方面极大地缓解了主机
房网络的压力,另一方面也优化了用户页面的响应时间。徐昭的《天猫浏览型应用的CDN静态化架构演变》将带大家更深入地了解我们是如何经历这一过程的。
第二,超大规模系统如何继续保持在不同层面上的水平伸缩性。
首先,服务器需求的增多,导致未来单一地区的IDC资源已无法满足容量增长的需求,机房供电能力成为短期内无法逾越的瓶颈。其次,简单地横向扩展IDC机房,机房之间的网络流量又成为了新的瓶颈。多机房的应用、缓存、数据库等访问的相互穿透,也加剧着跨机房的流量增长。最后,核心服务集群的应用服务器的规模增长,使对应的数据库连接数成为了瓶颈。每增加一台数据库服务器,对应的应用服务器都需要连接上来,数据库的连接数马上就不够分配了。也就是说,在今天的业务规模下,我们无法继续针对核心服务的数据库层再做横
向水平扩展了。为了解决以上问题,2013年双11我们尝试了新的逻辑机房
的架构方案,将数据水平拆分(Sharding)的思路向上提到接入层。以支付宝为例,先将完成某一特定业务需要的系统、核心服务、数据库组合抽象成一个业务单元(Zone)的概念,业务单元从应用服务器、缓存到数据库可以独立封闭运行。然后,从入口处根据用户请求路由到不同的逻辑业务单元,实现了单元级别
的可伸缩性。不再依赖同城IDC,让交易、支付这样复杂的业务单元具备了大规模跨地域部署的能力。胡喜的《支付宝的架构变迁》会有更加深入和全面的介绍。
第三,如何更大程度地“压榨”单服务器的系统资源。
虚拟化技术已作为各大网站提升物理机资源利用率的基础技术。以天猫和淘宝网为例,2010年我们引入Xen虚拟化技术,1台物理机装3个虚拟机,一定程度上降低了成本。但随着机器规模的快速增长,我们发现其中1/3的虚拟机的Peakload<0.5,这意味着我们的运维成本还是不够低。主要有以下几方面原因:
■单台物理机上跑的应用不够多;
■分给应用的机型及机器数是静态的;
■集群的资源利用率不均衡。
为了最大化物理机的资源性能,从2012年开始,我们大规模地应用了新的基于LXC的虚拟化方案,成功地在每台物理机(16Core/48GB)运行了12个应用实例,物理机的load提升到2~10。这对大促时期的成本控制非常有帮助,也为内部私有云的完整构建,摸索了一条可行的路径。
消费者对用户体验有了更高的要求千人千面的购物体验
有一个很现实的问题摆在了我们面前:大促当天有几亿消费者会来到我们的网站,在上百万商家和过亿商品里面挑选自己心仪的宝贝。光靠运营人肉制作的活动页面和消费者的主动搜索已远远不可能满足需求。因此,需要在产品上转变思路,营造从以业务为中心到以用户为中心的大促体验。双11应该是面向消费者的“我的双11”,而不是“天猫的双11”。基于此,2013年的双11大促中大面积应用了个性化算法,从PC到无线,从“会场”到“详情”,真正意义上为消费者打造了一个“我的双11”。从最终效果来看,2013年双11的用户购买转化率提高了10个百分点。张奇会在《个性化技术在双11的应用》中介绍在个性化推荐系统架构、机器学习算法应用和算法的快速评测方面的思考。
多终端的业务一致性
移动智能终端的快速崛起,让更多的消费者可以随时随地访问天猫和淘宝,但也让我们开始深入地思考,在业务快速发展的前提下,如何在不同终端上快速提供本质相同的服务。2013年我们首次在预热期的大型活动中尝试了基于Canvas的WebApp解决方案,极大程度地提升了开发效率。天猫前端团队的鄢学鹍会在《双11的前端实践》一文中分享MobileFirst的理念是如何在双11中实践的。
稳定性的极致要求
容量预估、依赖治理、监控
这一环节是历年双11技术成功与否的关键环节。中间件团队的《中间件技术的双11实践》除了会介绍在SOA架构体系中扮演重要角色的中间件产品之外,也会就容量预估、依赖治理和监控的双11实践做精彩介绍。
业务降级、限流预案
从2010年双11开始,每年都会有针对性地准备一些技术预案,在流量超出预期时做好限流保护,在局部系统处理能力出现瓶颈时进行优雅降级,以提升整体的吞吐率,保证核心业务的正常运行。
2013年,我们在技术环节准备了2000多套应急预案,大到遭受骇客攻击、各类业务应急动作,小到服务器机房空调发生故障,均有详细预案。不仅各服务器机房,甚至西溪园区双11大促指挥办公现场都准备了柴油发电机。此外,2013年针对双11进行了上百次的内部演习,其中全网大规模演习就进行了10余次,以确保每一个预案的有效性。
全链路压测
压力测试对于评估网站性能的重要性是不言而喻的,但无论是线下模拟的单一集群压测,还是线上引流压测,都只能暴露一些基本的单点问题。对于双11当天高峰期的真实压力模拟,这两种传统的压力测试方式还存在着巨大偏差。
首先是业务处理链路的复杂性,对于像天猫这样一个分布式处理平台,一笔交易的创建会涉及多个应用集群的处理
程序员(2014精华本) 电子书 下载 mobi epub pdf txt