日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
Apache架構師都遵循的30條設計原則

作者介紹

Srinath通過不懈的努力最終總結出了30條架構原則,他主張架構師的角色應該由開發(fā)團隊本身去扮演,而不是專門有個架構師團隊或部門。Srinath認為架構師應該扮演的角色是一個引導者,討論發(fā)起者,花草修建者,而不是定義者和構建者。Srinath為了解決團隊內部的架構紛爭和抉擇,制定了以下30條原則,這些原則被成員們廣泛認可,也成為了新手架構師的學習途徑。

目前創(chuàng)新互聯(lián)建站已為1000+的企業(yè)提供了網站建設、域名、虛擬空間、網站托管維護、企業(yè)網站設計、陵川網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、基本原則

原則1

KISS(Keep it simple,sutpid) 和保持每件事情都盡可能的簡單。用最簡單的解決方案來解決問題。

原則2

YAGNI(You aren’t gonna need it),不要去搞一些不需要的東西,需要的時候再搞吧。

原則3

爬,走,跑。換句話說就是先保證跑通,然后再優(yōu)化變得更好,然后繼續(xù)優(yōu)化讓其變得偉大。迭代著去做事情,敏捷開發(fā)的思路。對于每個功能點,創(chuàng)建里程碑(最大兩周),然后去迭代。

原則4

創(chuàng)建穩(wěn)定、高質量的產品的唯一方法就是自動化測試。所有的都可以自動化,當你設計時,不妨想想這一點。

原則5

時刻要想投入產出比(ROI),即是否劃得來。

原則6

了解你的用戶,然后基于此來平衡你需要做哪些事情。不要花了幾個月時間做了一個devops用戶界面,最后你發(fā)現(xiàn)那些人只喜歡命令行。此原則是原則5的一個具體表現(xiàn)。

原則7

設計和測試一個功能得盡可能的獨立。當你做設計時,應該想想這一條。從長遠來看這能給你解決很多問題,否則你的功能只能等待系統(tǒng)其他所有的功能都就緒了才能測試,這顯然很不好。有了這個原則, 你的版本將會更加的順暢。

原則8

不要搞花哨的。我們都喜歡高端炫酷的設計。最后我們搞了很多功能和解決方案到我們的架構中,然后這些東西根本不會被用到。

二、功能選擇

原則9

不可能預測到用戶將會如何使用我們的產品。所以要擁抱MVP(Minimal Viable Product),最小可運行版本。這個觀點主要思想就是你挑幾個很少的使用場景,然后把它搞出來,然后發(fā)布上線讓用戶使用,然后基于體驗和用戶反饋再決定下一步要做什么。

原則10

盡可能的做較少的功能。當有疑問的時候,就不要去做,甚至干掉。很多功能從來不會被使用。最多留個擴展點就夠了。

原則11

等到有人提出再說(除非是影響核心流程,否則就等到需要的時候再去做)。

原則12

有時候你要有勇氣和客戶說不。這時候你需要找到一個更好的解決方案來去解決。記住亨利福特曾經說過的 :”如果我問人們他們需要什么,他們會說我需要一匹速度更快的馬”。記?。耗闶悄莻€專家,你要去引導和領導。要去做正確的事情,而不是流行的事情。最終用戶會感謝你為他們提供了汽車。

三、服務端設計和并發(fā)

原則13

要知道一個server是如何運行的,從硬件到操作系統(tǒng),直到編程語言。優(yōu)化IO調用的數量是你通往最好架構的首選之路。

原則14

要了解Amdhal同步定律。在線程之間共享可變數據會讓你的程序變慢。只在必要的時候才去使用并發(fā)的數據結構,只在必須使用同步(synchronization)的時候才去使用同步。如果要用鎖,也要確保盡可能少的時間去hold住鎖。如果要在加鎖后做一些事情,要確保自己在鎖內會做哪些事情。

原則15

如果你的設計是一個無阻塞且事件驅動的架構,那么千萬不要阻塞線程或者在這些線程中做一些IO操作,如果你做了,你的系統(tǒng)會慢的像騾子一樣。

四、分布式系統(tǒng)

原則16

無狀態(tài)的系統(tǒng)的是可擴展的和直接的。任何時候都要考慮這一點,不要搞個不可擴展的,有狀態(tài)的東東出來,這是起碼的。

原則17

保證消息只被傳遞一次,不管失敗,這很難,除非你要在客戶端和服務端都做控制。試著讓你的系統(tǒng)更輕便(使用原則18)。你要知道大部分的承諾exactly-once-delivery的系統(tǒng)都是做了精簡的。

原則18

實現(xiàn)一個操作盡可能的冪等。這樣的話就比較好恢復,而且你還處于至少一次傳遞(at least once delivery)的狀態(tài)。

原則19

知道CAP理論??蓴U展的事務(分布式事務)是很難的。如果可能的的話,盡可能的使用補償機制。RDBMS事務是無法擴展的。

原則20

分布式一致性無法擴展,也無法進行組通信,也無法進行集群范圍內的可靠通信。理想情況下最大的節(jié)點限制為8個節(jié)點。

原則21

在分布式系統(tǒng)中,你永遠無法避免延遲和失敗。

五、用戶體驗

原則22

要了解你的用戶和清楚他們的目標。他們是新手、專家還是偶然的用戶?他們了解計算機科學的程度。極客喜歡擴展點,開發(fā)者喜歡示例和腳本,而普通人則喜歡UI。

原則23

最好的產品是不需要產品手冊的。

原則24

當你無法在兩個選擇中做決定的時候,請不要直接把這個問題通過提供配置選項的方式傳遞給用戶。這樣只能讓用戶更加的發(fā)懵。如果連你這個專家都無法選擇的情況下,交給一個比你了解的還少的人這樣合適嗎?最好的做法的是每次都找到一個可行的選項;次好的做法是自動的給出選項,第三好的做法是增加一個配置參數,然后設置一個合理的默認值。

原則25

總是要為配置設置一個合理的默認值。

原則26

設計不良的配置會造成一些困擾。應該總是為配置提供一些示例值。

原則27

配置值必須是用戶能夠理解和直接填寫的。比如:不能讓用戶填寫最大緩存條目的數量,而是應該讓用戶填寫可被用于緩存的最大內存。

原則28

如果輸入了未知的配置要拋出錯誤。永遠不要悄悄的忽略。悄悄的忽略配置錯誤往往是找bug花了數小時的罪魁禍首。

六、艱難的問題

原則29

夢想著新的編程語言就會變得簡單和明了,但往往要想真正掌握會很難。不要輕易的去換編程語言。

原則30

復雜的拖拉拽的界面是艱難的,不要去嘗試這樣的效果,除非你準備好了10人年的團隊。

最后,說一個我的感受。在一個理想的世界里,一個平臺應該是有多個正交組件組成-每個組件都負責一個方面(比如,security,messaging,registry,mdidation,analytics)。好像一個系統(tǒng)構建成這樣才是完美的。但不幸的是,現(xiàn)實中我們很難達到這樣的狀態(tài)。因為在項目初始狀態(tài)時,很多事情是不確定的,你無法做到這樣的獨立性,現(xiàn)在我更傾向于在開始的時候適當的重復是必要的,當你嘗試鏟除他們的時候,你會發(fā)現(xiàn)引入了新的復雜性,分布本身就意味著復雜。有時候治愈的過程要比疾病本身更加的糟糕。

七、總結

作為一個架構師,應該像園丁一般,更多的是修剪花草,除草而不是去定義和構建,你應該策劃而不是指揮,你應該去修剪而不是去定義,應該是討論而不是貼標簽。雖然在短期內可能會覺得也沒什么,但從長遠看,指導團隊找到自己的方式會帶來好處。如果你稍不留神,就很容易讓架構成為一個空洞的詞匯。比如設計者會說他的架構是錯誤的,但不知道為什么是錯誤的。一個避免這種情況的好辦法就是有一個原則列表,這個原則列表是被廣泛接受的,這個列表是人們討論問題的錨點,也是新手架構師學習的路徑。


文章標題:Apache架構師都遵循的30條設計原則
文章URL:http://www.5511xx.com/article/cdicdde.html