選擇技術方案權衡時,考慮對其可控性很重要

王滔發表於2013-10-14

以前,看一些資料,比如一個公司選擇什麼型別的資料庫系統,是mysql還是postgrelsql,mongdb等,不僅僅是看符合自己需求。而一個關鍵點也是非常重要的:持續的技術支援。

 

如果php後面沒有成立官方公司來運作,相信不會有多少公司願意繼續採納。由於擁有了官方公司作為技術支援,以後遇到bug,一些新的問題,都可以讓他們提供技術方案,他們會不斷的升級。我覺得mysql也是這樣子,大家選擇它,有官方技術支援。

 

而有些技術,沒有成立官方公司來運作,你都無法確定你用了它後,指不定哪天就不開發了。而且如果公司很小,哪天就倒閉了,就沒法提供技術支援了。

你用他們的東西,出現一些莫名其妙的問題,根本不知道找誰解決。自己去看程式碼。可能語言不同。沒人解決這個問題。

 

當然會想到,假設沒有社群和官方公司提供技術升級,那麼我們可以自己修改。實際上有些是可以改,但是大部分我們是改不了的。比如我們自己會去修改mysql的原始碼嗎?沒有人他們的作者更熟悉這個資料庫,當對這個系統非常熟悉後,就完全可以自己按照需求進行修改。不熟悉,可控性不強了。

 

有個資料庫路由層軟體,叫amoeba,當時一個人寫的,是一個開源免費使用的軟體。後來作者在阿里巴巴工作。阿里巴巴也用了這個軟體來實現資料庫分散式資料庫的路由功能。

由於他後來從阿里巴巴離職後,,又重新寫了一個cobar(現在已經開源出來了)。

 

其實我當時在想,為什麼又重新寫一個?浪費時間。其實內部就是考慮到可控性。沒有提供持續的技術支援,後面確實麻煩。出了問題都不知道怎麼找。自己參照他的功能寫一個,應該可以做到自由修改。

 

 

直到我遇到一個親身的例子:我用websaver儲存技術資料,叫做網博士。但是這個軟體是個人作者,後面一直沒更新了。我的技術資料儲存90M檔案,某天操作網博士突然卡死了,崩掉。重新開啟。估計是書籍檔案出現混亂了。後來一直都打不開。由於官網已經停止開發這款軟體了。我在使用中遇到問題,真的不知道去找誰解決。

 

 

我總結的教訓是:用大公司支援的技術方案,至少所冒的風險少些。出了問題,遇到bug,可以提交給官方,他們會解決。進行升級。

尤其是資料庫系統,涉及到資料丟失,損失將會非常慘重。在選擇合適的資料庫系統的時候,最好考慮有沒有足夠的後續技術支援,無論是官方還是社群技術支援都好。

 

像mongodb,成立了公司來運作這個資料庫,使得很多公司不用存在很多顧慮去使用這個新出來的資料庫系統。畢竟後續支援多。有些資料庫系統,雖然可用。但是根本沒有成立官方來做後續的技術升級和維護工作。完全不敢去用(linux有社群是一大亮點),這也就是為什麼一些大的技術公司在考慮技術工具選型的時候偏向於選擇有廠商支援的工具。就是為了減低風險。我看postgresql大部分公司沒有使用,也是考慮一個成熟的技術支援方面。誰願意冒這個風險呢?跟網博士一樣的。

 

一個技術經理,或者架構師,面臨著很多技術工具可以選擇,選擇什麼樣的工具方便以後,也確實要考慮。

 

 

源於一次資料丟失的教訓:90m大小的網博士wsb檔案,現在打不開,點選就卡死,cpu佔有率老高,達到了25%,實在沒轍了。因為這個軟體已經停止更新,沒法尋求技術幫助。這90m的資料,是心得筆記和網路上重要文章的收集與整合,對個人開發而言比較重要,人的記憶有限,當時就是靠知識筆記管理軟體來記錄一些東西。

 

預防方式如下

 

鑑於網博士已經停止更新和升級。大體上不要使用該軟體作為主要點。減少對此軟體的依賴性。


1、讓網博士每隔3天自動備份一次。或者可以減低到1天備份一次。這樣即便意外造成損失了。也不會影響很多。



2、以前的資料仍然放到網博士,使用網博士的快速搜尋功能挺好的。新的資料大體可以慢慢遷移到雲筆記之類的網路工具。至少有官方技術對資料進行維護。丟失的可能小。


3、不要把雞蛋放到一個籃子裡去。這樣子很危險。可能辛辛苦苦積累的技術資料和成果性東西,要麼是丟失了,要麼卻是損壞打不開的情況發生。由於缺乏官方技術支援,根本不知道找誰去恢復資料。

網博士的書籍,儘量建立成exe格式的,而不要是wsb格式。exe格式至少通用點。出現損害應該不限於網博士才能讀取。

我會使用麥庫記事本來儲存網頁。它的也有搜尋功能。


4、雖然網博士不再更新,但是原來的老版本還是能夠正常使用。本地也有這個軟體的安裝程式。

所以,如果我把書籍備份放到360雲盤進行備份,避免某天筆記本磁碟損害的事情發生。

5、策略上,我在使用網博士的時候,最好控制書籍的大小。書籍檔案太大,就可能出現問題。導致現在開啟處理的時候

都耗費很多記憶體,處理起來耗死。

方法:以專題的形式來建立書籍。而非所有技術資料都放到一個"技術知識"一個書籍中去。比如session的研究,做成一

個小書籍。以後方便生成電子書,給別人看。自己也方便儲存。

思想為:知識之間相互獨立,關聯性少為好。把重要的資料獨立出來,不要跟其他資料都混雜在一起,因為一旦混起來,

其他資料出現問題(那部分檔案損壞之類的不可預料和異常性問題),這部分重要的資料也會受到影響。

在網博士中,將session方面的知識點,單獨做成一個書籍,就可以避免總部出現問題,殃及到這部分資料不能正常使用。


6、教訓:沒有任何一種技術方案能夠確保資料萬無一失。這都不是技術方面的問題。發現這是哲學上或者生活上處理事情的規律。
以前,我以為a軟體用著挺好的啊,還能進行備份,沒有任何問題。覺得以後乾脆就一直使用他好了,而且他還可以自動

備份書籍的。現在丟失一次資料之後,才發現,不要過度依賴於某個軟體。我最好還是用其他工具也儲存一些。

這種經驗可以用到網站的資料備份上面去。多個節點總是減少風險。

一旦丟失,可能有些時候技術方案都沒法恢復。自己到那個時候就會非常懊悔。所以我們能夠做的就是,儘量進行備份,

不僅僅是備份,要備份到多棵樹上面去,萬一一個節點壞了,雖然會有損失,也不至於全部沒了。

相關文章