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在代碼生成、部署、監控以及版本管理等方麵的實踐。我希望這本書能夠詳細介紹如何利用Ice的工具鏈來自動化代碼生成過程,如何設計一套健壯的服務部署策略,以及在生産環境中如何有效地監控Ice服務的運行狀態。此外,對於分布式係統的演進,版本的兼容性是一個不可忽視的問題。我期望這本書能夠提供關於如何處理Ice服務版本升級的指導,例如如何設計嚮後兼容的接口,以及如何在不中斷服務的情況下進行滾動更新。能夠提供一些在大型、復雜分布式係統中成功應用Ice的案例分析,並從中提煉齣寶貴的經驗教訓,將是我非常期待的內容。

評分

對於初學者而言,學習任何一個新技術都需要一個清晰的學習路徑和大量的實踐機會。ZeroC Ice的強大功能和靈活性固然吸引人,但其豐富的概念和API可能會讓新手望而卻步。我期望這本書能夠提供一個非常友好的入門體驗,從最基礎的概念講起,比如如何定義接口、如何生成代碼、如何在客戶端和服務端之間建立連接,然後逐步深入到更復雜的主題,如異常處理、安全認證、異步調用等。關鍵在於,每一個概念的引入都應該伴隨著清晰易懂的示例代碼,並且最好能提供一些小的練習項目,讓讀者能夠動手實踐,鞏固所學知識。一本真正“權威”的指南,不應該僅僅是理論的堆砌,而是一個能夠陪伴讀者從零開始,最終能夠獨立運用Ice構建復雜係統的全方位助手。

評分

作為一個多年從事後端開發的工程師,對於RPC框架並不陌生,但ZeroC Ice獨特的模型和設計理念總是讓我感到一絲神秘。我一直認為,理解一個框架的“為什麼”比“怎麼做”更重要。因此,我非常期待這本書能夠深入探討Ice的設計哲學,例如它為何選擇Adapter模式,對象定位器(Locator)和命名服務(Naming Service)在整個體係中扮演的角色,以及它在綫程模型和連接管理方麵的考量。如果書中能夠提供一些關於Ice內部工作原理的細節,比如序列化和反序列化過程是如何進行的,或者在網絡通信層麵有哪些優化措施,那將極大地幫助我理解其性能優勢。同時,我也希望這本書能夠為我提供一些關於如何進行性能調優和故障排查的實用技巧,以便在實際項目中能夠更有效地利用Ice。

評分

這本書對於我這樣一個正在探索微服務架構的開發者來說,無疑具有極大的吸引力。在當前的服務化浪潮中,如何構建可靠、高效、易於擴展的分布式係統是核心挑戰。ZeroC Ice作為一種成熟的RPC(遠程過程調用)框架,在解決跨語言通信、服務發現以及負載均衡等方麵有著天然的優勢。我非常希望這本書能夠深入講解Ice是如何在實際項目中實現這些功能的,例如,如何利用Ice Grid來管理和部署服務,如何使用IceStorm進行發布-訂閱模式的通信,以及如何整閤現有的服務。更重要的是,我希望它能提供一些關於如何將Ice與其他流行的微服務技術(如REST API、消息隊列等)相結閤的實際案例,幫助我構建一個更具彈性和可維護性的分布式生態係統。一本真正“權威”的書,應該能夠讓我看到Ice在不同場景下的適用性和局限性,並提供相應的解決方案。

評分

從技術書籍的角度來說,一本好的“權威指南”意味著它能夠深入淺齣地解釋一個復雜的技術,並為讀者提供清晰、可操作的指導。對於像 ZeroC Ice 這樣的分布式計算框架,其學習麯綫本身就存在一定的挑戰,尤其是在需要理解底層通信機製、代理模式、序列化以及各種語言綁定的情況下。一本真正“權威”的書籍,應該能夠將這些復雜的概念拆解成易於消化的小塊,並循序漸進地引導讀者掌握。我期待這本書能夠提供詳實的代碼示例,覆蓋從入門到高級的應用場景,並且在性能優化、安全性和故障排除等方麵給予充分的關注。想象一下,當我在開發過程中遇到瓶頸,或者需要實現一個高性能的分布式服務時,能夠翻開這本書,找到直接有效的解決方案,甚至是能夠啓發我思考更優設計思路的內容,這無疑是巨大的價值。它不應該僅僅是API的羅列,而是對Ice背後設計哲學和最佳實踐的深入剖析,幫助讀者建立起紮實的理論基礎,從而在實際項目中能夠遊刃有餘。

評分

入門經典,必須買的好書!

評分

一直在京東購物,變成習慣瞭

評分

一直在京東購物,變成習慣瞭

評分

很不錯!!!!!!!!!!

評分

書已看完,介紹的比較全麵,可以理論指導實踐

評分

此前沒有關於ICE的中文書籍,這本書填補瞭空白

評分

還不錯,看瞭有用

評分

送貨快,我很滿意

評分

書還沒看,質量挺不錯的

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有