
《ZeroC Ice权威指南》是业界第一本关于Ice这个知名开源分布式RPC中间件的纸质书籍,全书内容涵盖了分布式系统架构概述、RPC原理、Ice基础源码研读、高级进阶、多语言调用、性能调优、SSL安全调用、IceGrid运维与开发、分布式部署、移动应用开发实战等精彩内容。本书从浅到深、从原理到背后地进行源码分析,从讲解Demo到解决实际项目开发中的具体技术问题,带领读者一路探究Ice那些不为人知的奥秘,扫清Ice用于企业系统开发的技术困难;并带领读者从零开始开发一个在线订票系统的Android应用,可直接调用后端运行于IceGrid上的订票服务,订票服务则采用常规的Spring+Hibernate+Ice架构实现具体的业务逻辑,从而让读者体验基于Ice的移动应用的全栈开发过程;最后,关于互联网架构师深造的内容,有助于读者更深刻地理解分布式系统的原理和架构,并规划自我提升的目标和方向。 与很多技术类书籍不同的是,本书不是简单地罗列知识点和简单代码,而是在指导学习的过程中,不断抛出一些高质量代码,如客户端封装、服务端框架、服务调用拦截监控等可立即应用于生产的代码,而且全书的大部分内容都是密切围绕生产实践中要解决的技术问题而展开的。无论是用于自我提升技术水平和拓展视野,还是用于具体指导当前的大型(互联网)项目开发,本书都是非常值得研读的精品,可以说,每一个有志于成长为互联网架构师的IT人及希望转型互联网开发的工程师和技术经理都值拥有本书。
媒体评论 在App产品中,有一个非常重要的技术难点,那就是消息推送。首先你得考虑用短连接还是长连接,还得考虑手机耗电,最重要的是服务端是否能支撑几万到上百万的移动客户端,服务器的硬件成本也是你必须面对的问题。如果你的技术很牛,则可以使用Netty、NIO来开发服务端,但是在这方面若没有一定的时间及网络通信技术的浸润,稳定性会是一个大问题,时间对创业团队来说,更耽搁不起。为此,我建议你读一读Leader-us所著的《ZeroC Ice权威指南》,它可以帮你解决问题,让你的移动互联网创业进程加速。Leader-us是MyCat项目的发起人,是业界少有的具备很强Coding能力的S级资深架构师,其在代码和架构方面的功力让我们惊叹,还是那句话:相信Leader,没错的! 金域集团架构师,瑞金泰基金公司投资人&首席架构师 冰风影 作为一线技术人员,老吴让我点评一下他的著作,出于技术人员的务实本性,一开始我是拒绝的,要求他发几章过来阅读,当时还带着看“宝典”“深入浅出”等书的心态。然后,Duang!我沉默了!从他的书中,我看到了老吴作为技术人员的务实性,从云技术到分布式架构,以及目前主流开源技术框架的介绍与使用,到作为架构师所应具备的能力与眼界,每一章都是干货。如果你有幸拿到本书,请认真阅读,相信你的收获会比我的更多! 开源项目MyCat-Web 作者,国药物流IT部技术经理 黄鑫 老吴是我在软件研发方面的恩师,对系统架构和分布式有着极深的理解。从老吴身上学习到的东西,无论是之前在阿里巴巴工作期间,还是如今在互联网领域创业期间,一直让我受益匪浅。本书深入浅出,非常值得一读。 80后互联网创业精英,上海微悉 董小国 推荐序 本书先用简短的篇幅温习了分布式系统的技术常识,以此作为本书将要重点介绍的遵循GPLv2协议的面向对象的开源分布式中间件平台Ice的背景,讲述了出自名师之手的杰作——Ice的前世今生和价值,紧接着讲述了Ice的基础知识、实现原理与技术架构、如何使用Ice、调优技术,以及互联网应用Ice的项目案例;最后讲述了IT工程师们如何转型为互联网时代的架构师。 我和吴治辉曾在中国联通总部MSS域大型去IOE项目中合作,基于Cobar经验设计和研发数据即服务平台;后来,吴治辉约我发起MyCat开源项目,从其不知疲倦地贡献源码和推动产品更新,到其推动建立由技术工程师们投资的亲亲山庄等,处处能体会到吴治辉是一位既浪漫而又拥有技术情怀的优秀架构师。阅读本书内容犹如听作者讲述一个甜美的爱情故事,在有意或无意中透露出作者精湛的技术功底。其对技术深入浅出的理解,行云流水的写作节奏,幽默风趣的表达方式和用词,更增加了技术书籍的可读性,也有助于读者理解、记忆和吸收。 企业的业务开展、生产管理和市场销售等环节越来越依赖于信息化系统,这极大地推动了信息化建设的技术变革,互联网的发展与普及改变着越来越多的人的命运,回馈给技术工作者们的是更好的待遇和英雄用武之地。除此之外,互联网的发展也促使更多开源软件涌现和趋于成熟,例如基础软件类之数据库MySQL、Web服务软件Nginx、操作系统CentOS,这是当今世界普及速度最快和市场占有率数一数二的核心软件。国内的技术工作者和部分开明的企业也尝试开源之路,例如负载均衡软件LVS、分布式数据库中间件Cobar/MyCat/HotDB(HotDB是热璞科技研发的分布式数据库中间件,未来也会加入开源阵容)、分布式文件系统TFS等,有利于企业吸引更多的优秀人才参与软件产品的研发。 经过二十多年的信息化技术发展,国内在基础软件行业进展不大,庆幸的是基础软件领域的开源软件产品与商业产品已能同台竞技,所有技术资料和源代码都是开放的,这将是助力我国信息化建设自主可控的福星,也是当下较可行的战略。 金官丁 MySQL资深研究者、中华数据库行业协会发起人、热璞科技CTO 2015年4月19日 自 序 随着移动互联网的迅猛发展,HTTP REST这种曾经风靡一时的低效的远程通信技术已不再风光,而多语言支持的高性能RPC技术再次王者归来。Facebook Thrift一经开源即引起轰动,Hadoop之父兼Apache主席的Doug Cutting也耐不住诱惑,开放了他在Hadoop里研发的创新性的RPC框架——Avro。而作为唯一平台级的开源产品,本书的主角——ZeroC Ice正在低调地进军互联网领域。 ZeroC Ice究竟是何方神圣? 它曾被创造者们称为“反叛之冰”,这是个很霸气的名字,当年它是为挑战和接替CORBA的位置而被创造出来的。我们知道,CORBA是历史上第一次聚集了众多IT巨头和技术精英们所打造的一个多语言支持的分布式平台中间件。但它最终失败了,其最直接的原因是它过于复杂,几乎没有一个厂商能100%理解并实现CORBA规范里面的那些繁复的技术点,导致各个厂商的CORBA中间件产品均无法对其兼容。当时一些CORBA资深技术专家聚集在一起,充分借鉴了CORBA的经验和教训,打造了一个全新的多语言支持的高性能轻量级分布式平台中间件,这就是ZeroC Ice。 高性能、多语言支持、轻量级、跨平台,这四个关键特性加之专注于这个技术领域并深耕细作,让ZeroC Ice在IT界屹立13年而不倒,想起曾经的Borland及技术无敌的SUN,不能不说这是一个神话。ZeroC Ice最早在电信、在线游戏、即时通信等对实时性要求很高的领域独领风骚,知名的Skype就采用了它,国内也有不少电信领域的资深IT人也使用过它。 笔者也是在一个大项目中做技术选型的时候,无意中发现了ZeroC Ice这个在国内被埋没的宝物,经过大量测试,与其他类似产品做对比,以及进行代码研读,笔者最终选择了ZeroC Ice作为项目的基础框架。笔者在随后的项目实践中发现相关的技术文档很缺乏,网上能找到的文档,绝大多数都是浅尝辄止的技术问题,特别是关于IceGrid这个强大的分布式网格几乎没有任何有价值的实践资料可供参考,而其官方的英文文档又缺乏细节说明,导致项目实施起来被各种“不明真相”的技术问题所困扰,浪费了很多时间去研究解决。后来笔者在跟同行交流的过程中,发现大家也都普遍遇到类似的问题,于是,笔者决心编写一本全面介绍ZeroC Ice的书籍,并紧密围绕项目实施过程中可能用到的各个技术点进行重点讲述。书中所带的大量代码都可立即用于项目开发,以加速项目实施进度。本书带领读者开发一个在线订票系统的应用,这个应用是采用Android开发的,直接调用后端运行于IceGrid上的订票服务,订票服务采用Spring+Hibernate+Ice的方式编写实现。只要具备两年Java开发经验,你即可迅速掌握本书精华,Level提升两级,至于提升之后,是加薪还是跳槽,就不在本书讨论范围之内了。 Leader-us 2015年5月30日 于武汉光谷
目 录 第1章 分布式系统的那些事儿/1 1.1 分布式计算的三要素/1 1.2 分布式架构昔日的王者/4 1.3 作为架构师你需要懂更多/8 1.4 一切从重新认识RPC开始/11 1.5 反叛之冰——Ice/15 第2章 Ice启程/16 2.1 Ice平台介绍/16 2.2 Ice的概念和原理/20 2.2.1 Ice Object/20 2.2.2 Ice Proxy/21 2.2.3 Location Service/23 2.2.4 总结/24 2.3 搭建Ice环境/25 2.4 掌握Slice/29 2.5 Hello World/34 2.6 多语言支持的魅力/40 第3章 Ice探险之旅/45 3.1 Ice RPC调用详解/45 3.2 使用IceBox/55 3.3 Ice Registry/67 3.4 IceGrid Node/71 3.5 IceGrid实战/74 3.6 IceGrid部署和运维工具/82 第4章 玩转Ice/85 4.1 从改造Ice日志开始/85 4.2 封装Ice客户端/91 4.3 集成Ice与Spring框架/95 4.4 实现Ice服务质量监控/98 4.5 用Maven标准化Ice项目/103 第5章 99%的人所不懂的Ice技能/107 5.1 深入解析Ice异步调用/107 5.2 Ice负载均衡机制研究/113 5.3 Ice SSL实践/119 5.4 PHP优化建议/132 5.5 Ice性能调优/134 5.6 Ice部署方案/136 第6章 互联网应用开发实战/139 6.1 Ice For JavaScript/139 6.2 Ice对移动设备的支持/141 6.3 在线订票系统(上)/146 6.4 在线订票系统(中)/156 6.5 在线订票系统(下)/162 第7章 互联网架构师深造之路/176 7.1 成功转型互联网架构师/176 7.2 J2EE的体系架构/177 7.3 重新认识分布式系统的中间件/179 7.3.1 Apache ZooKeeper/180 7.3.2 Apache Kafka/182 7.3.3 Facebook Thrift/183 7.3.4 Apache Storm、Spark Streaming、Samza/184 7.3.5 LevelDB/188 7.3.6 MyCat/189 7.4 不要只局限于一门编程语言/191 7.5 拓展新的知识和技能/196