Ice 服務(wù)器開(kāi)發(fā)史:從誕生到成為分布式架構(gòu)的中流砥柱
Ice服務(wù)器是一個(gè)開(kāi)放源代碼的跨平臺(tái)面向?qū)ο蟮腞PC框架,由ZeroC公司開(kāi)發(fā)。自2003年發(fā)布以來(lái),它已經(jīng)成為許多高度分布的、復(fù)雜的分布式系統(tǒng)的核心組件。本文將以Ice服務(wù)器開(kāi)發(fā)史:從誕生到成為分布式架構(gòu)的中流砥柱為中心,分別從誕生背景、版本更新、應(yīng)用領(lǐng)域、未來(lái)展望這四方面詳細(xì)闡述Ice服務(wù)器的發(fā)展歷程。
1、誕生背景
與其他RPC機(jī)制相比,Ice的主要優(yōu)勢(shì)是其靈活的通信層和可插拔的協(xié)議棧。1998年,ZeroC公司的Martin Schultz 和Michi Henning開(kāi)始著手設(shè)計(jì)一款基于對(duì)象模型和BLOB的通信協(xié)議,并在2002年發(fā)布了第一個(gè)公共版本。這個(gè)版本被稱為Slice,它提供了一種向程序員抽象出通信協(xié)議的方法。然而,許多人發(fā)現(xiàn)冰的真正力量在于它的可插拔性。ZeroC公司的創(chuàng)始人意識(shí)到可以為其他語(yǔ)言和操作系統(tǒng)實(shí)現(xiàn)語(yǔ)言和協(xié)議適配器,以增加靈活性。這就是Ice的靈活性所在,也是它較早用于Internet環(huán)境中較大和更復(fù)雜基礎(chǔ)設(shè)施的原因。
在最初的版本中,為了保持程序員的靈活性,Ice采用了這樣一個(gè)重要原則:不要讓任何一種編程語(yǔ)言需要依賴于其他語(yǔ)言來(lái)實(shí)現(xiàn)它自己的功能。Ice的目標(biāo)是:讓所有用戶都能使用他們喜歡的編程語(yǔ)言來(lái)編寫(xiě)其應(yīng)用程序代碼和服務(wù),但這些服務(wù)必須能夠相互通信。隨著版本的不斷更新,Ice逐漸成為了一款完善的分布式系統(tǒng)構(gòu)建工具。
2、版本更新
Ice的版本更新非常頻繁,每個(gè)版本更新都會(huì)加入新的功能。其中,特別是v3.3版本帶來(lái)了重大的變革。Ice v3.3的最大變化是將所有主要的Ice組件都移動(dòng)到了一個(gè)完整的Ice框架中。這些組件是:核心共享庫(kù)ice, C++運(yùn)行時(shí)庫(kù)iceutil, slice編譯器slice, Java運(yùn)行時(shí)和編譯器,.NET運(yùn)行時(shí)和編譯器冰。這就使得Ice成為一個(gè)真正的跨平臺(tái)框架,可以促進(jìn)更多的語(yǔ)言集成,并簡(jiǎn)化操作和升級(jí)過(guò)程。
此外,Ice還實(shí)現(xiàn)了對(duì)泛型編程的支持,包括新的容器類和通用算法庫(kù)。C++11和C++14的新特性,比如智能指針、Lambda表達(dá)式和變長(zhǎng)參數(shù)模板的支持,也被標(biāo)準(zhǔn)C++接受。從Ice v3.7開(kāi)始,共享庫(kù)被用于將Ice編譯成靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù),以滿足不同用戶的不同需求。
3、應(yīng)用領(lǐng)域
Ice已經(jīng)被應(yīng)用于各種分布式系統(tǒng)中,包括銀行和金融交易系統(tǒng),MMS合規(guī)框架,多人在線游戲服務(wù)器,集群任務(wù)調(diào)度器,電信運(yùn)營(yíng)系統(tǒng)等等。其中,以下三個(gè)應(yīng)用領(lǐng)域是Ice最為優(yōu)秀的體現(xiàn)。
3.1 金融交易系統(tǒng)
在金融交易系統(tǒng)中,Ice的運(yùn)用主要體現(xiàn)在以下三個(gè)方面:首先,Ice的高可用性保證了系統(tǒng)的穩(wěn)定性。
其次,Ice的異步框架極大地提高了金融交易的效率。
最后,Ice的跨平臺(tái)特性使其能夠適應(yīng)多種不同的架構(gòu)。
3.2 MMS合規(guī)框架
MMS(Managed Mutual Securities)合規(guī)框架是在美國(guó)金融監(jiān)管機(jī)構(gòu)嚴(yán)格管理要求下開(kāi)發(fā)的。它是一個(gè)面向?qū)ο蟮姆植际郊軜?gòu),由客戶端組件、服務(wù)器組件和后臺(tái)組件組成。Ice在本框架中扮演了一個(gè)核心角色,負(fù)責(zé)連接這些組件和協(xié)調(diào)通信。
3.3 多人在線游戲服務(wù)器
Ice在多人在線游戲服務(wù)器中的運(yùn)用,主要體現(xiàn)在以下兩個(gè)方面:一方面,由于服務(wù)器程序需要經(jīng)常與客戶端通訊,因此Ice提供的高效通信機(jī)制可以極大的提高游戲服務(wù)器性能。
另一方面,Ice提供了一套完整的分布式系統(tǒng)架構(gòu)和一系列高度可擴(kuò)展的工具,可以靈活地構(gòu)建和管理大規(guī)模分布式游戲世界。
4、未來(lái)展望
盡管Ice已成為分布式系統(tǒng)開(kāi)發(fā)中最重要的框架之一,但是它仍然需要不斷演進(jìn)來(lái)滿足新的需求和挑戰(zhàn)。下面將簡(jiǎn)單描述Ice未來(lái)的三個(gè)發(fā)展方向。
4.1 面向微服務(wù)的框架
微服務(wù)是一種高度模塊化、可組合的方式來(lái)構(gòu)建分布式應(yīng)用程序。Ice在未來(lái)的發(fā)展方向中,需要進(jìn)一步加強(qiáng)支持微服務(wù)的能力,這將有助于在移動(dòng)、互聯(lián)網(wǎng)和物聯(lián)網(wǎng)應(yīng)用中更好地使用Ice。
4.2 支持Web應(yīng)用程序程序接口(API)
由于Web API是一種易于橫向擴(kuò)展和分布式系統(tǒng)的構(gòu)建方式,因此在未來(lái),Ice還需要進(jìn)一步支持Web API。Ice可以為開(kāi)發(fā)者提供更高效、更安全、更輕量級(jí)的分布式服務(wù),以滿足未來(lái)的軟件開(kāi)發(fā)需求。
4.3 支持現(xiàn)代語(yǔ)言特性
未來(lái),Ice需要支持更多的面向?qū)ο笳Z(yǔ)言,并適應(yīng)現(xiàn)代的編程風(fēng)格和設(shè)計(jì)模式,為開(kāi)發(fā)者提供更加自由的編程選擇。總結(jié):
總的來(lái)說(shuō),Ice的出現(xiàn)徹底顛覆了傳統(tǒng)的客戶端/服務(wù)器模式,將其變成了一個(gè)真正協(xié)同工作的系統(tǒng),允許多個(gè)系統(tǒng)可以透明、高效地交互。簡(jiǎn)單靈活的Slice描述語(yǔ)言,強(qiáng)大的傳輸架構(gòu)和跨平臺(tái)支持,成為許多復(fù)雜的分布式系統(tǒng)的核心技術(shù)。未來(lái),Ice還將繼續(xù)發(fā)展,以適應(yīng)不斷變化的分布式系統(tǒng)的需求。