<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    分布式系統中的信息對象

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

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

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

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

        背景

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

        需求問題

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

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

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

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

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

        本地對象的遷移和委托

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

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

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

        全局對象

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

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

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

        數據中心

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

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

        工具

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

        總結

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

    評論

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

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

    象電驢、BT這種算是大型分布式系統嗎?

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

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

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

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

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

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

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

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

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

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

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

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

    你又鉆牛角尖了。

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

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

    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系統,純屬猜測,請勿認真。

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

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

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

    這是能夠接觸到分布式系統。商業環境中沒用過:(
    主站蜘蛛池模板: 亚洲人成在线影院| 久久精品夜色噜噜亚洲A∨| 久久久久亚洲AV成人无码| 成人免费网站久久久| 免费人成视网站在线观看不卡| 亚洲AV成人噜噜无码网站| 免费在线观看h片| 亚洲在成人网在线看| 四虎永久在线精品免费观看视频| 亚洲欧洲日韩国产综合在线二区| 亚洲视频在线观看免费| 亚洲永久中文字幕在线| 午夜免费1000部| 中文字幕精品三区无码亚洲| 成人午夜视频免费| 精品一区二区三区免费毛片| 国产精品亚洲精品日韩已方| 97国免费在线视频| 亚洲国产精品久久久久久| 2021在线永久免费视频| 亚洲中文字幕无码av永久| 欧洲美熟女乱又伦免费视频| 日本视频免费观看| 亚洲av日韩综合一区在线观看| 真实国产乱子伦精品免费| 亚洲1区1区3区4区产品乱码芒果 | 亚洲国产av无码精品| 一级毛片视频免费| 亚洲精品高清久久| 最近中文字幕无吗免费高清| 国产亚洲午夜精品| 亚洲av无码成h人动漫无遮挡| 又粗又大又黑又长的免费视频| 国产成人人综合亚洲欧美丁香花| 国产精品V亚洲精品V日韩精品| 久久精品免费一区二区| 久久久久亚洲国产AV麻豆 | 亚洲第一页日韩专区| 免费人成网站在线观看不卡| 亚洲第一男人天堂| 亚洲日韩精品A∨片无码|