<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    潛魚在淵

    Concentrating on Architectures.

    posts - 77, comments - 309, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    分布式系統(tǒng)中的信息對象

    Posted on 2005-12-21 22:58 非魚 閱讀(2829) 評論(5)  編輯  收藏 所屬分類: 面向對象設計
        術語

        信息對象 - 表示會被持久化的實體對象,一般在信息視圖中描述。下文也把信息對象簡稱為對象。這些對象本身不是分布式對象,但它們可能會被不同的節(jié)點訪問。

        節(jié)點 - 分布式系統(tǒng)中的組成部分。由應用服務器和數據庫及其他服務端組件組成。

        復制 - 指持久化的對象的復制,如數據庫記錄的復制。

        背景

        在MIS、ERP、CRM等分布式系統(tǒng)中,可能存在多個節(jié)點,每個節(jié)點都有自己的應用服務器和數據庫系統(tǒng)。這些節(jié)點產生的信息對象可能被本地節(jié)點或異地節(jié)點所訪問;在整個分布式系統(tǒng)中,也存在一些全局的信息對象,它們被分布式系統(tǒng)中的所有節(jié)點訪問。

        需求問題

        從用戶的角度,他們不關心具體的實現,但他們會要求某些信息對象可以在每個分布式節(jié)點都能被訪問到。從需求一開始被提出時,他們可能并沒有意識到這一點。需求分析人員要在這里做更多的工作,避免遺漏:

    1. 信息對象是在哪些節(jié)點產生的?
    2. 這些信息對象會被其他節(jié)點使用嗎?
    3. 網絡狀況如何?
    4. 這些信息對象會從一個節(jié)點復制到另一個節(jié)點嗎?
    5. 這些對象會從一個節(jié)點遷移到另一個節(jié)點嗎?
        對象在本地節(jié)點產生,被異地節(jié)點訪問

        如果一個信息對象會被其他節(jié)點使用,一般來說是要持久化的,在持久化時,必須保存其節(jié)點信息。持久化的方式有兩種:獨立存放(放在單獨的字段中)或者把節(jié) 點信息存放在對象的識別域(一般是主鍵)中。獨立存放節(jié)點信息比較靈活;把節(jié)點信息存放在識別域中可以獲得有限的位置透明特性,但帶來節(jié)點信息和其他識別 信息的混雜,且不利于信息對象的遷移。另外,用戶方面可能原本定義了對象識別方法,并且這個方法可能和我們即將采取的行動沖突。

        當一個信息對象被其他節(jié)點使用時,一般存在兩種方式:遠程訪問和本地副本。遠程訪問直接通過網絡調用遠程節(jié)點上的過程并返回其關心的信息對象。本地副本則 在本地保存其他節(jié)點的信息對象,在使用時直接在本地加載。遠程訪問適用于網絡狀況良好、需要事務控制的場合;本地副本一般在對信息實時性要求不高、或者網 絡條件差,傳輸得不到保證的環(huán)境下。但在實際應用過程中,這兩種方法經常聯合使用。

        遠程訪問的優(yōu)點和缺點:
    1. 獲得的信息是最新的、實時的。
    2. 方便事務控制。
    3. 實現簡單,整潔。
    4. 可管理性、可維護性好。
    5. 依賴于網絡狀況。
    6. 可靠性和可用性不夠好。
        本地副本的優(yōu)點和缺點:
    1. 高性能。
    2. 不受網絡限制。
    3. 可靠性和可用性高。
    4. 不能實現全局事務。
    5. 一般需要額外的成本實現信息對象的復制。
    6. 在信息對象大量復制的情況下不易管理和維護。
        結合上述兩種方式,并權衡系統(tǒng)的非功能需求和質量要求,可以設計出適合不同應用的方案。

        本地對象的遷移和委托

        本地對象的遷移指在本地節(jié)點產生的信息對象,因為某種原因需要遷移到另外一個節(jié)點。本地對象的委托指本地節(jié)點產生的信息對象委托另外的節(jié)點來管理,即主要 的操作在異地節(jié)點完成,本地只有少量操作甚至沒有任何操作。這是兩個相反的情況。

        一般情況下,我們通過建立信息對象的引用來處理這兩種情況。在對象遷移時,我們把信息對象存儲到新的節(jié)點上,并在原節(jié)點建立到新節(jié)點該對象的引用。在委托 時,正好相反,我們在新的節(jié)點建立對原對象的引用。同時,系統(tǒng)也應該建立處理信息對象引用的機制。

        值得注意的是,對象的遷移和委托可能會和異地節(jié)點訪問信息對象的設計相沖突,這主要是指上文提到的本地副本的使用。可以考慮不使用本地副本機制或遷移、委托對象特別處理的方式解決這個問題。

        全局對象

        除了本地信息對象之外,分布式系統(tǒng)中往往也存在一些全局信息對象。這些全局信息對象在整個系統(tǒng)中的所有節(jié)點使用。

        部分全局信息對象在系統(tǒng)安裝、初始化時刻就產生了;部分全局對象是在系統(tǒng)運行過程中產生的。保證全局信息對象的一致性,是設計過程中需要特別注意的。比如,應該極力避免全局信息對象的復雜存儲設計。

        一般來說,可以考慮對全局信息對象進行集中存儲和分布存儲加集中/分布復制兩種方案。這兩種方案的優(yōu)缺點和我們上文講到的本地對象異地訪問類似。但由于全局對象的往往訪問頻繁,一般采用第二種方式實現。

        數據中心

        對于一個一般性的全局查詢,不可能通過遍歷分布式系統(tǒng)中的所有節(jié)點來完成。所以,在分布式系統(tǒng)中建立一個全局集中的數據中心是必要的。數據中心可以滿足大部分查詢需求,并可以在其基礎上建立高級應用,如數據分析、決策支持等等。

        在數據中心的問題上,應該盡量避免分布式系統(tǒng)本身對數據中心的依賴。數據中心是對分布式系統(tǒng)的有益補充,但它的主要目的并不是分布式系統(tǒng)本身。所以我們應該利用但盡可能不依賴它。

        工具

        一般信息對象的復制可以使用現成的產品,如Sybase Replication Server。當然對于一些特殊要求,可能需要自己實現。這不是做廣告,算是對本文的一個補充吧。

        總結

        在大型分布式系統(tǒng)中,上述問題是基本的也是簡單的。但這樣說的前提是你考慮到了這個問題。如果你正在進行類似的工作,希望本文能夠對你有所啟發(fā)。

    評論

    # re: 分布式系統(tǒng)中的信息對象  回復  更多評論   

    2005-12-22 11:54 by weide
    Sybase Replication Server能夠復制的信息對象有哪些?

    象電驢、BT這種算是大型分布式系統(tǒng)嗎?

    能否試舉一例?比如銀聯,這個是否算是大型分布式了?

    # re: 分布式系統(tǒng)中的信息對象  回復  更多評論   

    2005-12-22 12:26 by 非魚
    @weide
    Sybase Replication Server是用來復制數據庫記錄的。它可以把數據庫記錄從一個數據庫復制到另一個數據庫。可以用在Sybase, Oracle, DB2, SQL Server上,支持異種數據庫之間的復制。

    我說的分布式系統(tǒng)主要是指應用軟件,如MIS,ERP,CRM等。銀聯是一個大型分布式系統(tǒng),而且是關鍵任務型的。我寫的這些對于銀聯的應用,可以有些參考作用吧(沒有做過,僅猜測)。

    EMULE、BT是個人使用的互聯網應用軟件。它不會因為P2P就成為“分布式系統(tǒng)”了,就象IE,FF,它們是分布式系統(tǒng)嗎?

    # re: 分布式系統(tǒng)中的信息對象  回復  更多評論   

    2005-12-22 14:29 by weide
    @非魚

    IE、FF不是:按照分布式系統(tǒng)“每個節(jié)點都有自己的應用服務器和數據庫系統(tǒng)”,它們沒有提供服務的功能

    eMule和BT則不同,每個節(jié)點都有自己的應用服務器和數據庫系統(tǒng)(雖然簡單了點,確實提供了服務;數據庫系統(tǒng)可以認為他們使用的是文件型數據庫);

    分布式系統(tǒng)未嘗不可以采用emule和bt協議來進行信息的訪問和復制吧?分布式系統(tǒng)是P2P的一種,或者P2P也是一種分布式系統(tǒng)?

    # re: 分布式系統(tǒng)中的信息對象  回復  更多評論   

    2005-12-22 20:25 by 非魚
    @weide

    你又鉆牛角尖了。

    首先我這篇文章不是講“什么是分布式系統(tǒng)”,所以我也沒有給出一個定義。其主要內容是講在某些分布式系統(tǒng)下的信息對象,開始沒有界定清楚,現已更改。

    eMule或BT本身不是分布式系統(tǒng)。eMule(BT)(>=2)+eMule(BT) Server才組成一個分布式系統(tǒng)。這是一個部分與整體的關系。下面是一個類比:

    IE(FF) -> JavaAppServer ->DBMS
    EMule(BT) -> Server ->Any Persistence System

    我說的是上面的一種情況,且只關注多App Server:[AppSvr1, AppSvr2,...AppSvrn]這種特例。

    在eMule(BT) Server Side, 同樣由多服務器組成Matrix。它也有這個信息對象問題。即Resource(name, size, etc...)在一個eMule(BT) Server上,當你連接到Matrix中任一服務器時,你可以Search到其他服務器上的一個Resource。基于Internet的特性,和人們對P2P資源的要求,這個Matrix允許部分失效。這不會影響到客戶端使用者(eMule(BT))。在其服務器之間的交互上,可能是采用非位置透明的方法,如管理員維護其他服務器列表。也可能使用位置透明的方法,這讓我想到Jini的技術。

    上述關于P2P系統(tǒng),純屬猜測,請勿認真。

    # re: 分布式系統(tǒng)中的信息對象  回復  更多評論   

    2005-12-23 17:23 by weide
    我說電驢和BT的時候,其實就是指的整個的系統(tǒng)而不是BT客戶端。BT也算是一種網絡傳輸協議了吧?

    Bitcomet的DHT網絡的引入應該降低了對數據中心的依賴;最新的exeem,則干脆不需要數據中心了,只是因此速度很慢,所以不再用了。

    這是能夠接觸到分布式系統(tǒng)。商業(yè)環(huán)境中沒用過:(
    主站蜘蛛池模板: 羞羞视频免费网站在线看| 在线精品自拍亚洲第一区| 久久国产免费观看精品| 亚洲午夜精品久久久久久浪潮| 激情婷婷成人亚洲综合| 国产香蕉九九久久精品免费| 国产成+人+综合+亚洲专| 免费a级毛片高清视频不卡| 亚洲六月丁香六月婷婷蜜芽| 18国产精品白浆在线观看免费| 亚洲视频免费一区| 免费大片黄在线观看yw| 亚洲综合在线一区二区三区| 小小影视日本动漫观看免费| 老牛精品亚洲成av人片| 亚洲Av无码国产情品久久| 一日本道a高清免费播放| 精品亚洲永久免费精品| 日本免费一区二区三区| 亚洲丝袜中文字幕| 国产在线98福利播放视频免费| 人人爽人人爽人人片A免费| 亚洲精品无码久久一线| 95老司机免费福利| 亚洲综合激情五月色一区| 又粗又大又硬又爽的免费视频| 免费无码婬片aaa直播表情| 亚洲av无码成人黄网站在线观看| 99精品一区二区免费视频| 2017亚洲男人天堂一| 俄罗斯极品美女毛片免费播放| 久久久精品视频免费观看| 亚洲精品中文字幕无码AV| 日本免费一区二区三区最新| 精品国产福利尤物免费 | 国产亚洲成人久久| 99国产精品免费观看视频| 亚洲高清乱码午夜电影网| 亚洲精品无码鲁网中文电影| 永久免费av无码不卡在线观看| 免费一级毛片在线播放放视频 |