• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    實施SOA的認識與心得

    發布: 2009-8-20 10:49 | 作者: 不詳 | 來源: 領測軟件測試網 | 查看: 14次 | 進入軟件測試論壇討論

    領測軟件測試網

    我們現在做TECH SPEC的時候可能關注內部的實現,如果是SOA的話,我們就需要關注現在在做的這個系統會用到別人的哪些接口,別人可能會用到我什么接口,我需要公開出來?赡苓會考慮,我用了ABC三個系統的接口,是否需要把這個邏輯以粗粒度服務公開出來。每一個公開接口的參數、返回都需要仔細考慮,把這些都列入到架構設計中,和架構師一起完成服務的定義。開發人員可能只對自己系統的接口和邏輯比較熟悉,架構師的作用是給開發人員建議,哪些接口你可能需要,哪些接口你可能需要對外提供,是否需要做緩存。

      我們現在的部署是非常簡單的,如果實施了SOA,很有可能一個系統需要調用十幾個外部子系統的接口,每一個接口都需要制定地址、調用策略以及契約。地址和調用策略需要是可配置的,一般定義在配置文件中或者數據庫中,這樣一個系統的部署可能非常復雜,打個比方就像芯片的引腳一樣,有很多,一個引腳沒有接到合適的地方,系統就不能工作。雖然部署負責了,但是系統之間的耦合非常小的,大家只是依賴于某個網絡環境中的地址,依賴于某個契約。這樣的話,系統的伸縮性就很強,有些服務需要很高的資源,就給獨立的服務器,有些服務占用資源很小,可以合并在一起。當然,也可以根據服務的性質,比如特別需要IO、特別需要CPU來分配到合適的服務器上。服務器并不一定是一樣的,有的服務器內存特別大,有的服務器CPU特別好。

      還會遇到一個問題,就是開發人員不太愿意調用其它的接口。一是對別人的東西往往默認會覺得是實現糟糕的,性能很差的,二是覺得不放心,會不會到時候你沒給我正確的數據,影響我的開發,產生相互推卸責任的問題。其實,這種想法不對,一個人不可能開發系統的全部,作為使用者來說要使用別人的接口信任別人的接口,作為接口提供者來說需要積極對自己的接口負責,進行完善的單元測試,如果調用者有特別的需求在討論后進行改進。這也就是說引入SOA的話,我們需要更多的溝通。

      說的有點亂,接下來想說說我在實施過程中遇到的一些細節問題,很多時候SOA實施的失敗都是因為一些細節。

      SOA的接口設計必須基于業務的。架構師應該是一個總導演,對所有系統的業務都有一個認識,理解業務之間的關系,和開發人員一起定義合理的接口。這包括,接口是否代表了業務、是否是合適的粒度、是否會有性能問題,別小看接口設計,一旦確定以后很難修改,接口的好壞決定成敗,我列為第一要素。

      在實施中,管理很關鍵,有許多要點是需要有強制的。比如除非特殊需要不能直接引用其它數據庫,即使是本系統也應該引用本系統的服務,也就是說網站項目里面沒有連接字符串、沒有數據訪問邏輯,只有端點的配置。還比如是A系統的開發人員有這個責任為A系統對外的所有接口進行后續的維護和功能擴展,不是說A系統結束了,我的數據我也不管,不行,別人如果需要的數據確實是我的數據的話,我就要管。

      從性能角度考慮,一般內網中的服務通訊采用TCP(二進制序列化),公網的走HTTP。還有一種方式是IPC方式,進程間通訊,我們以前也用的挺多的,雖然說緩存應該在一個地方建立。但很多時候,某個方法的調用是每次訪問頁面都需要進行一次或多次的,如果再進行網絡調用的話性能很成問題,比如論壇上的臟話過濾,如果某個臟話服務提供了臟話過濾的接口,如果這個這個接口需要TCP調用的話性能不高,這個時候我們會考慮把這個服務部署在WEB服務器上,而不是APP服務器上,IPC方式進行進程間通訊。

      到最后我們會發現我們有20個子系統,也就至少有20個服務(一般是以Windows服務部署在APP服務器上)。而且如果服務部署多份做負載均衡的話,可能就有上百個網絡地址。一個網站如果引用了5個服務,就需要一個一個IP地址(或者說端點)進行配置,如果將來服務遷移,那么這些網站的配置文件修改是一個大問題。雖然說我們會有一個拓撲圖來描述網站之間服務的依賴情況,但是配置文件的修改工作量不小而且容易出錯。推薦的做法是有一個數據庫來存放所有服務的端點定義、描述,使用一個單獨的服務來提供所有服務的端點信息,在網站中只需要配置這個服務的端點信息,然后引用各種服務的契約就可以了?紤]到效率關系,在每一個WEB服務器上都安裝有這個配置服務,以IPC方式提供所有網站進行調用,當然,其中的端點信息都會做緩存。

      前面說的是網站引用服務的端點信息配置問題,還有一個問題就是服務的健康監視問題,服務是以Windows服務形式運行的,我們需要檢測Windows服務的狀態,占用的CPU和內存信息。我們在每一個APP服務器上又裝有一個AGENT服務,專門用于監視這些服務進程的情況,一旦發現問題會第一時間通知網絡部門甚至是開發人員,當然服務無響應的情況比較少,一般常見的情況是服務沒有正確部署(缺少DLL不能啟動),或者是占用了過多的內存。這個AGENT的另外一個作用就是收集服務器上的錯誤日志,并且負責更新和重啟服務。也就是說所有服務的更新是自動化的更新,我們發布的時候發布到指定的RELEASE服務器,由專門的管理工具進行服務的自動更新,服務如果做負載均衡的話手動更新很麻煩。而且很多情況下相同的服務需要在多個服務器部署,比如IPC服務 。

      

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    42/4<1234>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>