ZeroC Ice权威指南

ZeroC Ice权威指南 pdf epub mobi txt 电子书 下载 2025

Leader-us 著
图书标签:
  • ZeroC Ice
  • RPC
  • 分布式系统
  • 中间件
  • 网络编程
  • C++
  • Java
  • Python
  • 高性能
  • 架构
  • 开发指南
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121262449
版次:1
商品编码:11714602
品牌:Broadview
包装:平装
开本:16开
出版时间:2015-06-01
用纸:胶版纸
页数:212
正文语种:中文

具体描述

产品特色

编辑推荐

适读人群 :软件工程师,架构师,CTO等
  

  1、ZeroC Ice具有如下看点:

  |下一代互联网中间件 | 跨平台 | 跨语言 | 分布式 | 安全 | 透明 | 面向对象 | 性能优越 | 防火期穿透 | 通信屏蔽|电商系统基础架构Paas平台基础设施| Rest杀手|RPC之王 |互联网架构师必备工程利器 |

  2、本书具有如下看点:

  ——全面介绍ZeroC Ice所涉及的技术细节,“源码分析 + 案例实践”尽量让每一个关键技术点落到实处。

  ——本书内容围绕生产实际要解决的问题而展开,所涵盖的高质量代码可直接应用于生产。

  ——透彻分析分布式系统技术难点及架构,帮助互联网架构师解析所需具备的关键知识及提升目标。

  3、本书作者Leader-us具有如下看点:

  拥有超过15年的软件研发经验,参与过众多与分布式、云计算相关的大型项目的架构设计和编程,具备丰富的大型项目架构设计经验,是业界少有的具备很强编程能力的S级资深架构师,更是国内知名开源分布式数据库中间件MyCat的发起人。

海报:
  

内容简介

  《ZeroC Ice指南》是关于Ice这个知名开源分布式RPC中间件的纸质书籍,全书内容涵盖了分布式系统架构概述、RPC原理、Ice基础源码研读、高级进阶、多语言调用、性能调优、SSL安全调用、IceGrid运维与开发、分布式部署、移动应用开发实战等精彩内容。《ZeroC Ice指南》从浅到深、从原理到背后地进行源码分析,从讲解Demo到解决实际项目开发中的具体技术问题,带领读者一路探究Ice那些不为人知的奥秘,扫清Ice用于企业系统开发的技术困难;并带领读者从零开始开发一个在线订票系统的Android应用,可直接调用后端运行于IceGrid上的订票服务,订票服务则采用常规的Spring+Hibernate+Ice架构实现具体的业务逻辑,从而让读者体验基于Ice的移动应用的全栈开发过程;最后,关于互联网架构师深造的内容,有助于读者更深刻地理解分布式系统的原理和架构,并规划自我提升的目标和方向。
  与很多技术类书籍不同的是,《ZeroC Ice指南》不是简单地罗列知识点和简单代码,而是在指导学习的过程中,不断抛出一些高质量代码,如客户端封装、服务端框架、服务调用拦截监控等可立即应用于生产的代码,而且全书的大部分内容都是密切围绕生产实践中要解决的技术问题而展开的。无论是用于自我提升技术水平和拓展视野,还是用于具体指导当前的大型(互联网)项目开发,本书都是非常值得研读的精品,可以说,每一个有志于成长为互联网架构师的IT人及希望转型互联网开发的工程师和技术经理都值拥有《ZeroC Ice指南》。

作者简介

  Leader-us,本名为吴治辉,拥有超过15年的软件研发经验,精通Java编程,专注于电信软件和云计算方面的软件研发,参与过众多与分布式、云计算相关的大型项目的架构设计和编程,具备丰富的大型项目架构设计经验,是业界少有的具备很强编程能力的S级资深架构师,目前就职于惠普。此外,他还是国内知名开源分布式数据库中间件MyCat的发起人。目前MyCat项目已经有超过15名活跃志愿者在参与和推进,其社区QQ群人数超过2000人,是当下热门的移动互联网和云计算项目必备基础中间件之一。

  由于具备很强的技术功底和丰富的项目开发经验,并且文笔幽默,他的文章具备很强的实践性,可直接用于解决项目开发中的实际问题,而且阅读起来轻松有趣,让人有耳目一新的感觉,比如网上流传很广的一篇文章《分布式数据库MyCat之前世今生》,就是他的典型文笔风格。

精彩书评

  

  ★在App产品中,有一个非常重要的技术难点,那就是消息推送。首先你得考虑用短连接还是长连接,还得考虑手机耗电,重要的是服务端是否能支撑几万到上百万的移动客户端,服务器的硬件成本也是你必须面对的问题。如果你的技术很牛,则可以使用Netty、NIO来开发服务端,但是在这方面若没有一定的时间及网络通信技术的浸润,稳定性会是一个大问题,时间对创业团队来说,更耽搁不起。为此,我建议你读一读Leader-us所著的《ZeroC Ice指南》,它可以帮你解决问题,让你的移动互联网创业进程加速。Leader-us是MyCat项目的发起人,是业界少有的具备很强Coding能力的S级资深架构师,其在代码和架构方面的功力让我们惊叹,还是那句话:相信Leader,没错的!
  ——金域集团架构师,瑞金泰基金公司投资人&首席架构师 冰风影
  
  
★作为一线技术人员,老吴让我点评一下他的著作,出于技术人员的务实本性,一开始我是拒绝的,要求他发几章过来阅读,当时还带着看“宝典”“深入浅出”等书的心态。然后,Duang!我沉默了!从他的书中,我看到了老吴作为技术人员的务实性,从云技术到分布式架构,以及目前主流开源技术框架的介绍与使用,到作为架构师所应具备的能力与眼界,每一章都是干货。如果你有幸拿到本书,请认真阅读,相信你的收获会比我的更多!
  ——开源项目MyCat-Web 作者,国药物流IT部技术经理 黄鑫
  
  ★老吴是我在软件研发方面的恩师,对系统架构和分布式有着极深的理解。从老吴身上学习到的东西,无论是之前在阿里巴巴工作期间,还是如今在互联网领域创业期间,一直让我受益匪浅。本书深入浅出,非常值得一读。
    ——80后互联网创业精英,上海微悉 董小国
  
  ★Ice是优秀的通信中间件,是用于建立高性能、高伸缩性通信基础设施的平台框架。本书是业内本关于Ice的纸质书籍,作者深入浅出地展示了如何基于Ice进行通信端的架构设计与开发。无论你有志于移动端的开发,还是想成为互联网架构师,本书都是很好的选择。
    ——80后架构师,上海嘉道 meteor
  
  ★伴随着“互联网+”的火爆热度,企业对IT的需求更加强烈,打造一套属于企业自己的高性能、高可用、可扩展的系统更是迫在眉睫。Leader-us所著的《ZeroC Ice指南》以项目案例驱动的方式,将分布式系统平台建设中遇到的种种问题进行了抽丝破茧式地解析与精讲,所谓一书在手,加薪无忧!
    ——炼数成金总监 黄围围
  
  ★Leader-us,是我曾经的同事,也是我的师傅,一名摩羯座IT男,很有才华,对技术很执着;任何事情,或者他不做,如果做了,就会尽力做到。作为一名半路出家的程序员,老吴在我技术成长的道路上给予我非常大的帮助和宝贵的建议,他非常乐于帮助他人提升技能,更喜欢技术交流。本书内容由浅入深、通俗易懂,非常适合技术人员阅读,如果你想向架构师乃至更高的技术方向发展,就更不能错过它。
  ——上海浙大网新易得研发总监 孙娟
  
  ★Leader-us对IT行业总是充满热情,他是技术的先行军,也是众多软件开发人员的良师益友。他的文和书,总是专业而又幽默,再晦涩难懂的技术也会在他的妙笔下开出花儿,本书也不例外,精彩无限,值得你拥有!
    —— 80后IT美女,新锐派IT讲师,IT技术书籍原创作者 阿蜜果

目录

第1章 分布式系统的那些事儿
1.1 分布式计算的三要素
1.2 分布式架构昔日的王者
1.3 作为架构师你需要懂更多
1.4 一切从重新认识RPC开始
1.5 反叛之冰——Ice
第2章 Ice启程
2.1 Ice平台介绍
2.2 Ice的概念和原理
2.2.1 Ice Object
2.2.2 Ice Proxy
2.2.3 Location Service
2.2.4 总结
2.3 搭建Ice环境
2.4 掌握Slice
2.5 Hello World
2.6 多语言支持的魅力
第3章 Ice探险之旅
3.1 Ice RPC调用详解
3.2 使用IceBox
3.3 Ice Registry
3.4 IceGrid Node
3.5 IceGrid实战
3.6 IceGrid部署和运维工具
第4章 玩转Ice
4.1 从改造Ice日志开始
4.2 封装Ice客户端
4.3 集成Ice与Spring框架
4.4 实现Ice服务质量监控
4.5 用Maven标准化Ice项目
第5章 99%的人所不懂的Ice技能
5.1 深入解析Ice异步调用
5.2 Ice负载均衡机制研究
5.3 Ice SSL实践
5.4 PHP优化建议
5.5 Ice性能调优
5.6 Ice部署方案
第6章 互联网应用开发实战
6.1 Ice For JavaScript
6.2 Ice对移动设备的支持
6.3 在线订票系统(上)
6.4 在线订票系统(中)
6.5 在线订票系统(下)
第7章 互联网架构师深造之路
7.1 成功转型互联网架构师
7.2 J2EE的体系架构
7.3 重新认识分布式系统的中间件
7.3.1 Apache ZooKeeper
7.3.2 Apache Kafka
7.3.3 Facebook Thrift
7.3.4 Apache Storm、Spark Streaming、Samza
7.3.5 LevelDB
7.3.6 MyCat
7.4 不要只局限于一门编程语言
7.5 拓展新的知识和技能





















精彩书摘

  2.1 Ice平台介绍
  Ice师出名门,是由前CORBA专家Marc Laukien、Michi Henning及Matthew Newhook等人开发的新一代的面向对象的分布式系统中间件。因为是业界知名的分布式标准的缔造者们所打造的新一代分布式中间件,所以Ice既继承了CORBA的一些血统,也精简了CORBA的很多过于复杂而又缺乏实用性的功能,使得平台变得简捷而又高效,并且在IT,也上第一次真正实现了CORBA当初的宏大目标:语言和平台中立、高效通信,却没有CORBA的复杂和各种兼容性问题(这也是最终导致CORBA死亡的两个最重要因素)。除此之外,Ice又增加了一些创新性的特征:比如采用了统一的通信协议和底层框架,增加了UDP传输调用的支持,同时支持异步调用和SSL安全调用,并且随着IT技术的变化和发展,Ice在不断地推陈出新,每年都有新版本问世,从诞生到当下,十几年的历史,其王者地位无人撼动。
  Ice采用了与CORBA同样的原理,通过与具体编程语言无关的中立语言Slice(Specification Language for Ice)来描述服务的接口,从而达到对象接口与其实现相分离的目的。Slice是建立在客户与服务器之间的合约,用以描述应用所使用的类型和对象接口。它独立于实现语言,所以客户采用的语言与编写服务器所用的语言没有任何关系。
  为了做到在各个语言和平台上都能100%正确实现Slice的语义和Ice平台的承诺功能,ZeroC公司花费了大量人力,逐个实现了各个主流编程语言与操作系统上的Ice运行库及运行环境。目前Ice平台支持的语言有C++、NET、Java、Python、Objective-C、Ruby、PHP、JavaScript等,而Ice的运行库和运行环境则涵盖了PC平台和移动设备,PC平台支持Windows和主流的Linux发行版,移动设备目前支持Windows Mobile、Android及iOS。此外,由于其杰出的高性能和多语言多平台支持,Ice经常被各公司用在一些关键项目的开发中,其官网给出的客户名单有Wave Fax、PC Soft、Skype、宝钢、宝信软件等超过30家公司。
  Ice关注于一个技术核心问题——RPC通信,经历了十几年的发展,在很多细节方面都有一些值得称道的做法,下面是其中一些关键特性。
  ◎ 支持多语言之间的RPC互通。与众多平台不同,在它的服务端也可以用几种语言开发,比如C、.NET、JAVA、Python等,不同语言开发的服务端与客户端可以完全互通,对于支持多语言的服务来说,是很难得的一个特性,省去了大量的开发成本和开发周期。
  ◎ 高性能RPC调用。这点是业界公认的,一些大型联网游戏及Skype等对实时性要求很高的系统都采用了Ice平台,这足以说明这一点。笔者也曾做过简单对比,也验证了其高性能,而且在不同语言的客户端调用时,其性能仍然很好。
  ◎ 支持传统的RPC调用、异步调用、One-Way调用、批量发起请求,支持TCP通信、UDP通信,适用于不同的业务场景。
  ◎ 支持安全通信,Ice框架里提供了支持业界标准的SSL安全加密的可拔插插件。并且多种编程语言都支持该特性。
  ◎ 多平台支持。包括X86系统、ARM、移动设备等。
  ◎ 提供了强大的IceGrid。支持注册表主从备份,无单点故障,服务按需启动,随时扩容和迁移,完备的负载均衡机制无须客户端重启,自动感应服务位置的变化。
  ◎ 不断更新,与时俱进。对近些年流行的JavaScript语言及新的移动平台的支持都能及时跟上。
  这里,笔者仅就多语言开发支持这一特性来分析Ice平台所能带给你的额外价值,当你采用Ice框架开发一个服务后所能直接变现的承诺,在图2.1中可以得到完美诠释。
  对于一个规模较大的平台来说,开发一个服务并不很难,但如何让多种语言都能很一致地调用你的服务并联调通过,则很不容易,即使对于SOAP这种看似很标准的接口来说,依然存在很多编程语言和SOAP框架的版本兼容性不好的问题。而HTTP Rest的接口在联调时还会碰到各种参数问题。从经验来看,除非把一个现成的编译好的客户端代码发给对方,否则会开发一次,到处联调,形成平台开发的梦魇。
  下面我们来看看Ice平台的组成,Ice平台从功能可以划分为以下几部分。
  ◎ Slice工具。将Slice语言定义的服务接口编译成各种具体语言的实现代码,属于开发环境的一部分。
  ◎ Ice容器和命令。包括IceGrid、Ice Registry、Ice Node、Ice Admin、IcePatch等命令,用于启动、管理IceGrid,需要在运行Ice服务的机器上选择性地部署其中的某一个或几个组件。
  ◎ Ice运行库。为一组API库,不同的语言有不同的实现,如Java对应JAR文件,C语言对应.so文件(在Windows下对应.dll文件),这些运行库需要被Ice服务端程序和客户端程序所调用,以实现Ice内部的底层通信。
  下面我们看看采用Ice平台开发一个具体项目时所要遵循的一般流程,如图2.2所示。
  这个开发流程示意图告诉我们,怎样从零开始开展Ice跨平台的项目开发活动,简单地说,就是首先用Slice语言定义中立的服务接口文件,然后采用相应语言的命令行编译生成对应的程序骨架源文件,最后实现服务端业务代码开发,部署服务,然后客户端利用Ice提供的运行期客户端Library(JAR文件)实现远程服务方法调用,详细流程如下。
  ◎ 分析和设计系统的服务:采用面向服务架构或者“微服务”的设计理念进行系统分析和设计,确定系统中的“服务”单元、每个服务的接口及服务之间的依赖关系。
  ◎ 服务接口定义:采用Ice Slice语言对服务接口进行定义,并用Slice工具编译成你所熟悉的开发语言(本书以Java为例)的实现代码,这些实现代码包括服务端和客户端骨架代码,可以认为是项目中的“公共”包。
  ◎ 服务端业务逻辑实现:在Slice生成的服务端代码上进行业务逻辑代码的编写,在这个过程中除了在服务之间相互调用时用到Ice的一些API外,在绝大多数情况下,不会用到Ice的代码。
  ◎ 编写IceGrid的服务描述文档:xxxgrid.xml,此文档类似于J2EE的web.xml或 EJB的服务描述文件,定义了每个服务的访问地址(Endpoint)、部署的节点(Ice Node)、负载均衡策略(replica-group)等关键信息。
  ◎ 打包代码并部署到各个Ice Node上,启动IceGrid,借助Ice工具发布xxxgrid.xml,服务端工作至此基本完成。很重要的一点是,借助Ice平台提供的工具,你可以很方便地将xxxgrid.xml中的服务重新规划和部署到新的节点上,而客户端无须重启和改变任何代码。
  ◎ 编写客户端软件,访问部署好的服务,并有针对性地做性能测试和调优。
  初步了解了Ice的特性、组成部分及开发流程之后,让我们休息一会,因为接下来需要学习和理解Ice平台的几个重要术语和概念,这个是需要动脑筋的,随便看看绝对无法过关。
  2.2 Ice的概念和原理
  2.2.1 Ice Object
  任何系统都会使用一些专有名词来阐明其原理和实现机制,最终,往往几个名词就概括了其背后庞大复杂的技术体系,比如现在流行的Hadoop、NoSQL、NewSQL、BigData等。对于一个复杂的系统来说,准确理解和掌握其专有术语非常重要,不仅仅因为在相关的技术文档里大量使用了这些概念和术语,而且因为在编程实践和问题排查过程中,这些概念和术语有助于我们推理、分析问题产生的根源和发现可能的解决方案。
  作为一个复杂的RPC平台,Ice也创造了很多概念和术语,其中一个名词就是Slice,Slice模仿CORBA的IDL(Interface Definition Language)而来,与IDL相似,Ice采用编程语言中立的Slice这种接口描述语言来定义一个RPC服务接口,然后提供了指向具体编程语言的“翻译工具”——slice2XXX,该工具将Slice文件编译成相应语言的源码,这些源码中包括了客户端运行时期的Stub代码,以及服务器端的Skeleton框架代码。要理解这一切背后的秘密,则需要从Ice最根本的概念——Ice Object说起。
  Ice Object具有以下特征。
  ◎ 拥有一个对象标识符Object Identity来区别于其他类型对象,Ice的对象模型中要求对象标识符是全局唯一的,即没有任何对象的标识符相同。
  ◎ 一个Ice Object是一个可以对客户端请求进行应答的对象,这个对象可以位于“本地进程的地址空间”,也可以位于“远程地址空间”。
  ◎ 一个Ice Object拥有一个或多个接口,其中一个接口是其主要接口,是此对象区别于其他对象的主要特征,其余接口则被称为Facet。
  一个Ice Object在服务端具体化为一个Servant实例,即我们用某种具体编程语言实现的一个Slice接口并新建的某个对象就是一个Servant。而将Ice Object与Servant进行关联的“桥”则是我们接下来要理解的概念—— Object Adapter,它是Ice运行时框架与用户应用程序代码之间的边界点,Object Adapter具有以下功能。
  ◎ 提供一个或多个通信端点(Transport Endpoint),客户端通过这些端点中的某个端点连接到一个具体的Ice Object对象,一个Endpoint由服务端所使用的通信协议、IP地址、端口等信息所组成,如default -h 192.168.0.1 -p 1000,表明是采用默认的协议(TCP),绑定在192.168.0.1的端口1000上的一个通信端口。
  ◎ 绑定一个或多个Servant,每个Servant与一个Ice Object映射,将客户端针对某个Ice Object的请求派发映射到对应的Servant上,并完成整个请求流程的处理过程,包括底层通信。
  ◎ 协助生命周期管理,消除Ice Object与Servant在启动和销毁的过程中所可能存在的竞争问题。
  从上面的Object Adapter的功能来看,很多时候我们可以把Object Adapter与在它之上绑定的Ice Object等价,因为Object Adapter是Ice Object的“宿主”,不但提供了Ice Object的访问地址(Endpoint),而且负责完成请求处理转发的流程。因此,你会看到很多时候有这样的写法:。
  2.2.2 Ice Proxy
  接下来让我们看看Ice Object在客户端的代表——Proxy,简单地说,Proxy是客户端用来访问远程某个Ice Object的本地“代理”,Proxy存在于客户端的进程地址空间中,“代表”一个远程对象,当客户端调用远程对象的某个方法时,Ice运行时期的客户端代码库(Ice Runtime)会完成如下具体工作。
  ◎ 定位远程对象Ice Object。
  ◎ 如果Ice Object所在的Server处于关闭状态,则自动激活此Server,并激活远程对象。
  ◎ 将方法的入参(传入到远程对象的参数)通过Socket传输到远程对象。
  ◎ 等待调用完成。
  ◎ 将方法的出参(返回给调用者的参数)返回给客户端,若发生异常则抛出调用异常。
  作为远程Ice Object的本地“代理”,Proxy还持有如下重要信息。
  ◎ 远程Server的地址信息,用来初始化通信。
  ◎ 用来定位Ice Object的对象标识符:object identity。
  ◎ 可选的Facet标识符,用来确定引用Ice Object的哪个接口。
  ◎ 一个具体的Proxy可以用一个包括Endpoint信息的字符串描述,比如SimplePrinter:default -p 10000,表示在远端的TCP端口10000上绑定的一个SimplePrinter对象的Proxy,代码中我们可以用这样的特定格式的字符串,来构造一个Proxy对象。
  Endpoint通常可以理解为一个访问地址,在WebService中也有这个词:“当我们Host一个Web Service时,我们必须为其定义一个或多个Endpoint,然后Service通过这个定义的Endpoint监听来自Client端的请求”。在Ice中,Endpoint有UDP或TCP两种,但基本上很少用UDP,因为在现在的高速网络带宽采用TCP长连接的情况下,UDP基本上没有什么优势了。
  Proxy有Direct Proxy与Indirect Proxy两种,前者直接绑定某个远端Object的访问地址,如SimplePrinter:default -p 10000;后者则不绑定远程Object的某个具体的通信地址,而且有两种写法,其中第一种写法是直接引用远程对象的标识符,如SimplePrinter,这种对象需要被定义为Well Know Object,第二种写法是,即访问绑定到某个ObjectAdapter之上的某个对象,此时不需要Ice Object为Well know Object。对Indirect Proxy来说,由于没有远程对象的具体地址信息,因此,需要借助寻址服务——Location Service来获取对应Ice Object的通信地址。
  ……

前言/序言

  推荐序
  本书先用简短的篇幅温习了分布式系统的技术常识,以此作为本书将要重点介绍的遵循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日
  于武汉光谷


《冰封万里:零度之界》 引言 在浩瀚的数字宇宙中,信息洪流席卷,数据交互如同呼吸般无处不在。然而,要驾驭这股力量,实现跨越不同平台、不同语言、不同网络的无缝通信,却是一项充满挑战的任务。传统的通信方式往往受限于特定的技术栈,如同孤立的岛屿,难以连接起广阔的大陆。正是在这样的背景下,一种名为“ZeroC ICE”的通信中间件应运而生,它以其卓越的灵活性、高效性、安全性和广泛的适用性,为构建分布式系统提供了坚实的基础。 本书《冰封万里:零度之界》并非一本技术手册,更非枯燥的API文档堆砌。它是一场关于分布式系统构建理念的深度探索,是一次关于如何打破技术壁垒、实现信息自由流动的思想盛宴。我们将暂且将目光从ZeroC ICE的具体实现细节中移开,深入探讨其背后所蕴含的哲学,以及它如何巧妙地解决分布式通信中的核心痛点。本书旨在为那些渴望构建更强大、更具弹性的软件系统的开发者、架构师以及技术领导者提供一种全新的视角,帮助他们理解分布式计算的本质,并从中汲取灵感,创造出更具前瞻性的解决方案。 第一章:混沌中的低语——分布式系统的挑战 想象一下,一个庞大的帝国,由无数分散的城市组成。每个城市都有自己的语言、自己的交易方式、自己的管理体系。如果这些城市之间需要进行贸易、交流信息,甚至联合抵御外敌,该如何实现?这就是分布式系统面临的根本性难题。 语言不通的困境: 不同开发者、不同团队,可能会选择不同的编程语言。Java、C++、Python、C……它们各有千秋,却也各自为营。如何让用Java编写的服务与用Python编写的服务顺畅对话?传统的RPC(远程过程调用)往往是语言绑定的,一旦选择了某一种语言,就很难跨越界限。 网络的不确定性: 网络是分布式系统的神经系统,但它从来都不是完美的。延迟、丢包、带宽限制、甚至网络的完全中断,都是家常便饭。如何设计一个系统,能够容忍这些不确定性,并尽可能地保证通信的可靠性? 兼容性与演进的难题: 软件系统并非一成不变,它需要不断更新、迭代、演进。当一个服务更新了其接口,或者底层的基础设施发生变化时,如何保证与老版本服务之间的兼容性?如何避免一次小的改动引发整个系统的雪崩? 安全与认证的盾牌: 在开放的网络环境中,数据的安全和身份的认证至关重要。如何防止未经授权的访问?如何确保数据在传输过程中不被窃听或篡改?传统的认证方式可能繁琐且难以统一管理。 性能与资源的优化: 分布式系统往往需要处理海量的数据和高并发的请求。如何在保证通信效率的同时,最大化利用有限的网络和计算资源?如何避免不必要的开销,提高整体系统的吞吐量? 透明性的追求: 理想的分布式系统,应该尽可能地对开发者隐藏底层的复杂性。用户应该能够像调用本地方法一样调用远程服务,而无需关心网络细节、数据序列化等繁琐的过程。如何实现这种“位置透明性”和“接口透明性”? 本章将深入剖析这些分布式系统固有的挑战,从宏观层面揭示其复杂性,为后续章节的学习奠定坚实的思想基础。我们将以生动的比喻和形象的案例,帮助读者建立对分布式系统挑战的直观认识。 第二章:打破藩篱的信使——通用通信协议的理念 想象一下,古代的城邦之间,如果每个城邦都有自己独特的贸易契约和协商方式,那么贸易将寸步难行。只有建立一套通用的语言和规则,才能促进繁荣与交流。在分布式系统中,通信协议扮演的正是这样的角色。 为何需要通用协议? 为什么我们不能仅仅依赖HTTP?HTTP虽然普及,但它主要是为Web应用设计的,在很多分布式场景下,它在性能、协议的灵活性、以及对二进制数据的高效处理方面存在局限。我们需要一种更低层、更高效、更具表达力的通信机制。 接口定义语言(IDL)的力量: 如何让不同语言的代码能够理解彼此的数据结构和方法调用?IDL(Interface Definition Language)应运而生。它提供了一种独立于具体编程语言的描述方式,来定义服务接口、数据类型和通信协议。这就像为不同语言建立了一个通用的“翻译官”,确保了双方都能准确理解对方的意图。 传输的抽象: 数据如何在网络上传输?是字节流?还是某种格式化的消息?一个优秀的通信中间件,应该将具体的网络传输细节抽象出来,让开发者能够专注于业务逻辑,而无需关心TCP、UDP、Socket等底层协议的繁琐实现。 序列化与反序列化的艺术: 在网络传输之前,对象需要被“扁平化”成可以传输的字节流(序列化),而在接收端,这些字节流又需要被重新还原成对象(反序列化)。这是一个至关重要的过程,直接影响到通信的效率和兼容性。如何选择高效、灵活、且易于扩展的序列化格式,是设计优秀通信协议的关键。 面向服务的架构(SOA)与微服务时代的驱动: 随着SOA和微服务架构的兴起,服务之间的交互变得更加频繁和复杂。对高效、可靠、易于管理的通信机制的需求也日益迫切。通用通信协议正是支撑这些现代架构模式的关键技术之一。 本章将探讨通用通信协议的设计理念,重点阐述IDL、传输抽象、序列化等核心概念。我们将通过类比和逻辑推理,帮助读者理解为何需要一种比现有标准更强大的通信解决方案,并为理解ZeroC ICE的优势打下理论基础。 第三章:零度之寒,万物生长——构建可靠与灵活的分布式基础设施 在冰冷的“零度”之下,万物却能以意想不到的方式生长和连接。ZeroC ICE正是这样的存在,它以其严谨的设计和强大的功能,为分布式系统的构建提供了可靠且灵活的基础设施。 通信的“冰层”——通信适配器(Communicator): 想象一下,在一片冰封的湖面上,需要有各个入口(适配器)来连接湖面上的各个活动点。通信适配器正是ZeroC ICE中扮演这个角色的核心组件。它负责管理网络连接、监听端口、处理传入和传出请求,并将其路由到正确的服务对象。不同的适配器可以支持不同的传输协议(如TCP、UDP、SSL),为系统提供了极大的灵活性。 数据的“冰晶”——对象请求代理(Object Request Broker, ORB): 当客户端需要调用远程服务时,它并不直接与远程服务建立连接。而是通过ORB来代理这个过程。ORB负责查找服务对象、序列化客户端的请求、将请求发送到服务器,并在服务器处理完成后,接收响应并将其反序列化回客户端可用的对象。这层抽象使得客户端无需关心服务的具体位置和实现细节。 接口的“雕塑”——接口定义语言(IDL)的实践: 我们在第二章中提到的IDL,在ZeroC ICE中得到了具体的实现。通过ZeroC ICE的IDL,可以清晰地定义接口、数据类型、操作以及异常。这些定义随后可以被ZeroC ICE的工具链转化为不同编程语言的代码骨架,大大简化了开发工作,并保证了不同语言实现之间的一致性。 连接的“脉络”——通信层面的抽象: ZeroC ICE在通信层面提供了高度的抽象。客户端和服务器之间,并不需要直接暴露底层的Socket连接。取而代之的是,开发者通过ZeroC ICE提供的API进行通信,而ZeroC ICE会自动处理底层的网络协议、连接管理、数据传输等细节。 服务的“容器”——代理与服务对象的交互: 在服务器端,ZeroC ICE提供了将业务逻辑实现与通信层分离的机制。服务对象实现具体的业务逻辑,而ZeroC ICE的通信适配器和ORB则负责将其暴露给远程客户端。客户端通过代理对象(Proxy)来调用远程服务,就像调用本地对象一样。 跨越语言的桥梁——多语言支持的深度解析: ZeroC ICE最为显著的优势之一,便是其对多种主流编程语言的强大支持。本书将深入探讨,ZeroC ICE是如何通过其IDL和代码生成器,实现跨语言的无缝互操作。这不仅仅是简单的API封装,更是对不同语言特性深刻理解和巧妙融合的体现。 本章将聚焦于ZeroC ICE的核心组件和通信机制,以“零度”象征的严谨和“生长”象征的活力,来阐述其如何构建起一个稳定、高效、且富有弹性的分布式通信基础设施。我们将深入解析其内部工作原理,帮助读者理解其强大的底层支撑。 第四章:冰河世纪的守护者——安全、可靠与高性能的追求 在广阔的分布式世界中,安全、可靠和高性能是每一个系统的生命线。ZeroC ICE并非只关注通信的通畅,更致力于为系统提供坚实的守护,使其能够抵御威胁,保持稳定,并以极致的效率运行。 SSL/TLS的强大加密: 在数据的传输过程中,加密是保护信息安全的第一道防线。ZeroC ICE原生支持SSL/TLS加密,能够为客户端和服务器之间的通信提供端到端的安全保障,有效防止数据被窃听或篡改。我们将探讨如何配置和利用SSL/TLS,为分布式系统构建一道坚不可摧的安全壁垒。 双向认证的信任机制: 除了数据加密,身份认证也至关重要。ZeroC ICE支持双向认证,即客户端和服务器都能够验证对方的身份。这种机制能够有效防止仿冒攻击,确保只有合法的实体能够接入系统,从而进一步增强系统的安全性。 健壮的连接管理与容错机制: 网络连接的不可靠性是分布式系统的常态。ZeroC ICE提供了健壮的连接管理机制,包括自动重连、超时设置、连接池管理等,能够有效地处理网络波动和临时中断。我们将深入分析这些容错机制,理解它们如何协同工作,保证系统的持续可用性。 高效的序列化算法与通信优化: 性能是衡量分布式系统优劣的关键指标之一。ZeroC ICE在序列化和传输层面进行了大量的优化,采用了高效的编码格式,并提供了多种传输模式,以满足不同场景下的性能需求。我们将探讨其序列化机制的优势,以及如何通过合理的配置,最大化通信效率。 负载均衡与可伸缩性的基础: 随着业务的增长,分布式系统需要具备良好的可伸缩性。ZeroC ICE的通信机制为实现负载均衡和横向扩展奠定了坚实的基础。通过合理的架构设计,可以将请求分发到多个服务实例,从而提升系统的整体处理能力。 事务一致性的思考: 在分布式系统中,保证多个服务之间操作的原子性和一致性是一项复杂的挑战。虽然ZeroC ICE本身并非一个分布式事务管理器,但其提供的可靠通信机制,为构建分布式事务解决方案提供了重要的支撑。我们将探讨其在保障事务一致性方面所起到的作用。 本章将从安全、可靠和高性能三个维度,深入剖析ZeroC ICE为分布式系统提供的关键能力。我们将不仅仅停留在概念层面,更会探讨其实现细节和实际应用中的考量,帮助读者理解为何ZeroC ICE是构建高可用、高安全、高性能分布式系统的理想选择。 第五章:冰雪初融,春意盎然——ZeroC ICE的哲学与未来 技术的演进并非一蹴而就,它往往源于对根本问题的深刻洞察和对未来趋势的预判。ZeroC ICE的设计理念,其背后所蕴含的哲学,以及它如何引领分布式系统设计的未来,值得我们深入思考。 “零度”的寓意——简约、纯粹与通用: ZeroC ICE的核心设计理念,体现在其“零度”的名称之中。它追求的是一种简约、纯粹、且高度通用的通信解决方案。它不被任何特定的编程语言或平台所束缚,旨在成为所有分布式系统之间的通用连接器。 面向接口的编程(Interface-Oriented Programming): ZeroC ICE强调通过IDL来定义服务接口,这种方式鼓励开发者采用面向接口的编程范式。这意味着开发者可以专注于定义“做什么”,而将“如何做”留给实现者。这种分离有助于提高代码的模块化程度,增强系统的灵活性和可维护性。 解耦与独立性: ZeroC ICE通过将通信基础设施与业务逻辑解耦,极大地提高了系统的独立性。服务之间不再需要关心对方的具体实现细节,只需要遵循共同的接口定义。这使得独立开发、独立部署、独立升级成为可能,是构建敏捷、高效团队的关键。 跨越鸿沟的技术愿景: 在一个技术日新月异的时代,如何避免技术的“围墙”,实现真正的互联互通?ZeroC ICE的愿景,正是要成为一座连接不同技术生态的桥梁。它鼓励开发者拥抱多样性,并在多样性中找到统一和协作的可能性。 分布式系统的演进方向: 随着云计算、物联网、大数据等技术的飞速发展,分布式系统的重要性日益凸显。ZeroC ICE作为一种强大的通信中间件,为构建下一代分布式系统提供了关键的技术支撑。它将继续在以下方面发挥重要作用: 服务网格(Service Mesh)的基石: 服务网格技术旨在更精细地管理服务之间的通信,而ZeroC ICE的通信能力,可以成为服务网格底层的重要组成部分。 云原生应用的支撑: 在云原生架构中,服务的动态伸缩、自动化部署和弹性伸缩是核心要求。ZeroC ICE的灵活性和可靠性,使其能够很好地适应云原生环境的特点。 物联网(IoT)的互联互通: 异构设备、不同通信协议的IoT场景,对通用、高效的通信中间件有着强烈的需求。ZeroC ICE有望在IoT领域发挥重要作用。 边缘计算的赋能: 随着计算能力向边缘迁移,如何在边缘设备之间实现高效、安全的通信,成为新的挑战。ZeroC ICE的轻量级和灵活性,使其能够适用于边缘计算场景。 持续演进的社区与生态: 技术的生命力在于其持续的演进和活跃的社区。ZeroC ICE拥有一个积极的开发者社区,不断推动其功能的完善和应用场景的拓展。 本章将从哲学高度,升华对ZeroC ICE的理解。我们将探讨其设计的深层逻辑,以及它如何与当前和未来的技术趋势相结合,为分布式系统构建提供持续的动力。本书旨在启发读者,在理解ZeroC ICE强大功能的同时,更要领悟其背后的设计智慧,并将其应用于自身的实践中,共同开创分布式系统的新篇章。 结语 《冰封万里:零度之界》并非止于对某一款特定技术的介绍,它是一场关于分布式系统思维的启蒙。我们希望通过本书,能够激发读者对分布式系统更深层次的思考,理解其核心挑战,掌握构建强大系统的关键理念,并从中汲取灵感,创造出更加智能、高效、且富有韧性的数字世界。当冰雪消融,春意盎然之时,我们期待着每一个由读者手中诞生的,基于强大通信基础而生长的,精彩纷呈的分布式应用。

用户评价

评分

从技术书籍的角度来说,一本好的“权威指南”意味着它能够深入浅出地解释一个复杂的技术,并为读者提供清晰、可操作的指导。对于像 ZeroC Ice 这样的分布式计算框架,其学习曲线本身就存在一定的挑战,尤其是在需要理解底层通信机制、代理模式、序列化以及各种语言绑定的情况下。一本真正“权威”的书籍,应该能够将这些复杂的概念拆解成易于消化的小块,并循序渐进地引导读者掌握。我期待这本书能够提供详实的代码示例,覆盖从入门到高级的应用场景,并且在性能优化、安全性和故障排除等方面给予充分的关注。想象一下,当我在开发过程中遇到瓶颈,或者需要实现一个高性能的分布式服务时,能够翻开这本书,找到直接有效的解决方案,甚至是能够启发我思考更优设计思路的内容,这无疑是巨大的价值。它不应该仅仅是API的罗列,而是对Ice背后设计哲学和最佳实践的深入剖析,帮助读者建立起扎实的理论基础,从而在实际项目中能够游刃有余。

评分

对于初学者而言,学习任何一个新技术都需要一个清晰的学习路径和大量的实践机会。ZeroC Ice的强大功能和灵活性固然吸引人,但其丰富的概念和API可能会让新手望而却步。我期望这本书能够提供一个非常友好的入门体验,从最基础的概念讲起,比如如何定义接口、如何生成代码、如何在客户端和服务端之间建立连接,然后逐步深入到更复杂的主题,如异常处理、安全认证、异步调用等。关键在于,每一个概念的引入都应该伴随着清晰易懂的示例代码,并且最好能提供一些小的练习项目,让读者能够动手实践,巩固所学知识。一本真正“权威”的指南,不应该仅仅是理论的堆砌,而是一个能够陪伴读者从零开始,最终能够独立运用Ice构建复杂系统的全方位助手。

评分

在分布式系统开发中,维护的成本和复杂性往往是衡量一个框架优劣的重要标准。我非常关注ZeroC Ice在代码生成、部署、监控以及版本管理等方面的实践。我希望这本书能够详细介绍如何利用Ice的工具链来自动化代码生成过程,如何设计一套健壮的服务部署策略,以及在生产环境中如何有效地监控Ice服务的运行状态。此外,对于分布式系统的演进,版本的兼容性是一个不可忽视的问题。我期望这本书能够提供关于如何处理Ice服务版本升级的指导,例如如何设计向后兼容的接口,以及如何在不中断服务的情况下进行滚动更新。能够提供一些在大型、复杂分布式系统中成功应用Ice的案例分析,并从中提炼出宝贵的经验教训,将是我非常期待的内容。

评分

作为一个多年从事后端开发的工程师,对于RPC框架并不陌生,但ZeroC Ice独特的模型和设计理念总是让我感到一丝神秘。我一直认为,理解一个框架的“为什么”比“怎么做”更重要。因此,我非常期待这本书能够深入探讨Ice的设计哲学,例如它为何选择Adapter模式,对象定位器(Locator)和命名服务(Naming Service)在整个体系中扮演的角色,以及它在线程模型和连接管理方面的考量。如果书中能够提供一些关于Ice内部工作原理的细节,比如序列化和反序列化过程是如何进行的,或者在网络通信层面有哪些优化措施,那将极大地帮助我理解其性能优势。同时,我也希望这本书能够为我提供一些关于如何进行性能调优和故障排查的实用技巧,以便在实际项目中能够更有效地利用Ice。

评分

这本书对于我这样一个正在探索微服务架构的开发者来说,无疑具有极大的吸引力。在当前的服务化浪潮中,如何构建可靠、高效、易于扩展的分布式系统是核心挑战。ZeroC Ice作为一种成熟的RPC(远程过程调用)框架,在解决跨语言通信、服务发现以及负载均衡等方面有着天然的优势。我非常希望这本书能够深入讲解Ice是如何在实际项目中实现这些功能的,例如,如何利用Ice Grid来管理和部署服务,如何使用IceStorm进行发布-订阅模式的通信,以及如何整合现有的服务。更重要的是,我希望它能提供一些关于如何将Ice与其他流行的微服务技术(如REST API、消息队列等)相结合的实际案例,帮助我构建一个更具弹性和可维护性的分布式生态系统。一本真正“权威”的书,应该能够让我看到Ice在不同场景下的适用性和局限性,并提供相应的解决方案。

评分

讲的太肤浅,服了!

评分

ZeroC Ice权威指南,快速的了解一下。要想全面了解,官网有全部资料。

评分

书很薄,内容不多,定价有点高了吧

评分

内容不是很多 很快可以看完

评分

纸张有点旧,而且书皮也有点脏,感觉应该才仓库中放了很久了

评分

不错

评分

与文档相比,代码更完整,所以实战性还是比较强,

评分

这本书还可以,能学到很多知识

评分

看了几章,还可以,就是用的版本不是当前新版

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有