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

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

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

    paulwong

    軟件架構那點事兒(一)

    關于標題,我也開始附庸文雅了。哈哈!話說軟件架構是本人這些年的一些積累,在此做一點分享,希望對即將做架構或者是正在架構的 ITer 一些參考,也許見解淺薄,還望大家多多包涵,如有異議,可私聊,禁止拍磚。


    說起架構可不是一件簡單的事情,他是一個很龐大的系統骨架,但是面對到手的軟件需求,你是如何設計一個合理的架構呢?原來架構這玩意也是分第一步、第二步、第三步 ........ 以此類推,不能急于求成,這樣容易扯著蛋。要做到手中無劍,心中有劍的境界,并非一朝一夕的努力,需要長期項目的實踐,經歷無數次的失敗與重構之后再能叩開“軟件架構”這個大門的一絲門縫,從來一窺汪洋。


    拿到一個軟件的合同或者是用戶的最原始的需求,很多架構師的第一直覺就是關注軟件本身的功能,有哪些功能,適合采用哪些技術選型。這對于大多數人而言,的確是沒有錯誤。但是在這之前還一點需要去做的事情 ...... 不知道大家想到了嗎?架構是基于什么環境呢?這一點在架構之前不知道讀者現在是否思考過這個問題。所謂的架構首先要了解軟件運行的軟硬件以及網絡環境。之后明確了這一點才能考慮下一步的事情,否則就有點閉門造車的感覺了。


    好了,說到運行環境,這是就要從硬件環境與軟件環境分別對待了,例如:

    1、硬件是采用幾層架構啊,是采用集群還是單機部署呢? 典型的網絡架構是Http服務器 + Web服務器 + 數據庫服務器 。比較厲害的就是這些都放在一個機器上 哈哈~~~

    2、軟件運行的網絡環境如何,是基于局域網還是公網呢?是否存在隔離的情況

    3、硬件是什么機器呢?IBM刀片 還是 AIX系列呢
    4、系統的災備設備是什么,如何運作

    ......... 等等諸如此類的硬件環境首先要了解。



    硬件明確了,下來考慮軟件環境

    1、軟件運行的環境是 Window 、Linux、Unix ,是32位 /還是 64位

    2、軟件運行的Web服務器神碼 WebSphere?Weblogic、Jboss、Tomcat、GlashFish還是別的?版本號是多少,支持的J2EE規范是多少。

    3、JVM是什么版本,是全新部署 還是復用甲方已經存在的軟件環境呢?
    4、軟件是否與其他軟件有數據交互,交互采用什么介質

    5、采用什么數據庫,版本是多少?

    .......... 這些是作為軟件環境需要考慮的一些基礎性的問題


    通過上述簡單的文字,好像大家有點明白了吧,其實這種事情,很簡單的,只要平時多注意點就OK了,否則等開發后去現場實施才發現什么都不配套啊。如果在架構開始之前,你已經關注這一點了,恭喜了 說明你已經具備作為架構師最起碼的嗅覺了。

    上述的那些問題或多或少影響架構本身,架構是基于單機還是基于集群,這是兩種迥然不同的架構模式,很多天真的童鞋認為 單機與集群架構差不多,復制一套在部署一臺機器就OK了。其實則不然。二者存在太多的不同了,我舉一些簡單的例子哈:

    在Java行業,很多開源軟件使用很頻繁,這些開源軟件本身集成了Cache,用于提高性能,單系統是單機運行的時候,一切都正常,做了集群出現問題了。Cache 惹得禍,因為你的集群并沒有把框架內部自帶的緩存集群化,還是保持各自獨立的狀態,一用戶通過A服務器修改了內容,并且刷新了Cache,但是作為集群的B服務器感知不到A對Cache的變化,依舊從自身的緩存中獲取“臟數據”,這時其他用訪問B服務器讀到的值,其實是A用戶通過A服務器修改之前的值。很繞吧。希望能理解。瓦咔咔~~~這是架構如果采用cache 需要重寫自己的Cache框架,必須屏蔽開源項目中自帶的Cached,否則出了問題都讓你莫名其妙?


    數據庫部署是單機還是雙機,是熱備還是冷備,數據訪問需要讀寫分離嗎?如果硬件不支持數據庫熱切換,如何采用程序實現數據庫的熱切換?這些都是架構層次的需要直接面對的問題? 架構師們 你們心里有底嗎?



    與甲方內部的其他系統是采用什么通信方式?Socket、WS、RMI,訪問的系統之間是否有防火墻隔離,采用什么技術可以穿透防火墻阻攔呢?



    以后的系統如何快速部署到對甲方的真實環境中,是手動部署還是Ant自動部署?如何做到持續集成?發送錯誤如何回退?



    ......................... 現在是不是覺得有點復雜呢?其實沒關系,成長有兩種,一種是汲取別人成功的經驗轉為為自己的能力,另外一種是嘗試失敗,從經歷失敗中成長,本人呢二者兼有,前幾年都是從失敗中成長,但是隨著時間的推移,發現這樣的代價真的是很大。開始虛心學習前人的經驗,從而轉化為自己的知識。


    掌握軟件運行的軟硬件環境是作為架構的第一步,切記切記!



    上述文字,僅僅是作為軟件架構之前需要考慮的一些大概,還有很多細節其實我也不是很了解,如有補充請回帖瓦咔咔~~~~ 軟件架構 是一件藝術品~~~ 這是我對架構的感性認識。



    每次架構完我都會在一段時間把它當作是完美的藝術品去欣賞,過了新鮮期后,發現很多問題,直接重構 這樣循環不已 ............. 每次的迭代 都讓自己收獲很多!

    posted on 2012-02-26 20:44 paulwong 閱讀(310) 評論(0)  編輯  收藏 所屬分類: SOFTWARE ARCHITECTURE

    主站蜘蛛池模板: 亚洲天堂在线播放| 国产成人精品亚洲精品| 亚洲精品国产成人中文| 8x8×在线永久免费视频| 亚洲精品中文字幕无乱码| 在线观看的免费网站无遮挡| 78成人精品电影在线播放日韩精品电影一区亚洲 | 亚洲最大在线观看| www.黄色免费网站| 人人狠狠综合久久亚洲| 免费人成网站在线高清| jizz中国免费| 亚洲成人激情在线| 可以免费看黄视频的网站| 亚洲日韩国产欧美一区二区三区 | 在线看片免费人成视频福利| 亚洲人成依人成综合网| 中文字幕无码播放免费| 亚洲妇女无套内射精| 亚洲女同成人AⅤ人片在线观看| 99精品免费视频| 亚洲色图黄色小说| 韩国日本好看电影免费看| 一级特黄a大片免费| 婷婷亚洲综合五月天小说 | 亚洲精品视频久久久| 日韩免费无码一区二区三区| 国产亚洲国产bv网站在线| 亚洲国产成人精品女人久久久| 久久久久久久99精品免费观看| 亚洲中文无码av永久| 免费在线观看你懂的| 久久久免费的精品| 亚洲色偷偷综合亚洲av78| 国产亚洲精品免费视频播放| 国产h视频在线观看网站免费| 激情吃奶吻胸免费视频xxxx| 精品日韩亚洲AV无码| 全部免费a级毛片| 免费看片在线观看| 国产精品免费αv视频|