成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

80后聊架構(gòu):究竟怎么做架構(gòu)設(shè)計(jì)? | 架構(gòu)師之路

開發(fā) 架構(gòu) 系統(tǒng)
很多人確實(shí)上線了很多系統(tǒng),也確實(shí)做了很多需求,但基本上都是毫無方法,全憑自己想象的在做架構(gòu)設(shè)計(jì)??偟膩碚f,架構(gòu)設(shè)計(jì)有四個(gè)大的步驟,其中第二個(gè)步驟最容易被大家忽略。

相關(guān)文章:《80后聊架構(gòu):究竟什么是架構(gòu)設(shè)計(jì)? | 架構(gòu)師之路

做了多年架構(gòu)設(shè)計(jì),很多人連架構(gòu)設(shè)計(jì)的關(guān)鍵流程和步驟都不知道。

很多人確實(shí)上線了很多系統(tǒng),也確實(shí)做了很多需求,但基本上都是毫無方法,全憑自己想象的在做架構(gòu)設(shè)計(jì)。

總的來說,架構(gòu)設(shè)計(jì)有四個(gè)大的步驟,其中第二個(gè)步驟最容易被大家忽略。

畫外音:別人寫文章,都說最后一個(gè)步驟最重要,我就是不按套路出牌,說第二個(gè)步驟最重要。

步驟一:理解需求以及定義系統(tǒng)邊界。

Understand the problem & Identify the scope of the system.

理解需求,核心是和產(chǎn)品確定功能要求,以及根據(jù)業(yè)務(wù)確定性能要求。

定義系統(tǒng)邊界,核心是要明確系統(tǒng)哪些要做,哪些不做。

步驟二:也就是最容易被忽略的一個(gè)步驟,調(diào)研已有的類似的系統(tǒng)。

Research on existing systems.

你做的系統(tǒng),是業(yè)內(nèi)首創(chuàng)嗎?如果不是,看看類似的系統(tǒng)是怎么做架構(gòu)設(shè)計(jì)的。參考成熟的方案,能讓你的架構(gòu)設(shè)計(jì)事半功倍。

步驟三:頂層設(shè)計(jì)。

high-level architecture design.

設(shè)計(jì)系統(tǒng)的主要組件,以及它們之間的交互方式。例如:

  • 使用機(jī)房,還是云?
  • 使用單體,還是微服務(wù)?
  • 要不要cache,要不要mq?
  • 用rdb,還是nosql?
  • ...

這里要包含系統(tǒng)架構(gòu)的粗略圖,以及實(shí)現(xiàn)核心需求的流程圖。

步驟四:也是非常重要的一個(gè)步驟啊,解決主要矛盾迭代設(shè)計(jì)。

Refine the design.

(1) 頂層設(shè)計(jì)完之后,哪里是系統(tǒng)的主要矛盾?

我們要根據(jù)潛在的主要矛盾,細(xì)化與迭代頂層設(shè)計(jì)。

例如:你要做一個(gè)計(jì)數(shù)系統(tǒng),對(duì)推文的閱讀,轉(zhuǎn)發(fā),點(diǎn)贊,評(píng)論數(shù)進(jìn)行計(jì)數(shù)。

(2) 假如主要矛盾如果是并發(fā),1秒10萬次?

那可能就要加入一些樂觀鎖,異步,批量請(qǐng)求,Copy On Write等巧妙設(shè)計(jì),甚至犧牲一些一致性。

(3) 假如主要矛盾是一致性,不允許數(shù)據(jù)出錯(cuò)?

那可能就要加入一些互斥,校驗(yàn),write-ahead logging等巧妙設(shè)計(jì)。

迭代設(shè)計(jì),解決完一個(gè)主要矛盾,繼續(xù)解決次要矛盾,直到所有的功能需求與性能需求得到滿足。

這里面有個(gè)地方要注意:在第四步迭代設(shè)計(jì)的過程中,有可能會(huì)發(fā)現(xiàn)第三步頂層設(shè)計(jì)的缺陷。這個(gè)時(shí)候,可能要優(yōu)化甚至推翻第三步頂層設(shè)計(jì)。

這也是為什么,一些系統(tǒng)運(yùn)行了幾年,就要進(jìn)行重構(gòu)。當(dāng)初的頂層設(shè)計(jì)已經(jīng)滿足不了現(xiàn)有的業(yè)務(wù)需求了。在原有頂層設(shè)計(jì)基礎(chǔ)上,解決不了主要矛盾了,那就重構(gòu)頂層設(shè)計(jì)來解決。

這也是我非常推崇的兩大核心架構(gòu)設(shè)計(jì)理念:

  • 其一,任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓;
  • 其二,架構(gòu)不只是設(shè)計(jì)而來的,更是迭代與演進(jìn)而來的;

這兩個(gè)架構(gòu)理念,我會(huì)在接下來的100個(gè)架構(gòu)知識(shí)點(diǎn)里反復(fù)提及。

咱們舉個(gè)例子。

假如業(yè)務(wù)需求是:“我想做一個(gè)1萬屬性,100億數(shù)據(jù),每秒10萬吞吐的分類信息平臺(tái),像58同城一樣,2個(gè)月實(shí)現(xiàn)”。

(4) 如何來做架構(gòu)設(shè)計(jì)呢?

第一步,探究功能需求,性能需求,確定系統(tǒng)邊界。

分類信息的特點(diǎn)是什么?

招聘、房產(chǎn)、二手、二手車、黃頁... 品類繁多,帖子schema不固定...

分類信息的典型場景是什么?

帖子發(fā)布,帖子瀏覽,帖子搜索(每個(gè)屬性都可能被搜索)...

需求的性能要求是什么?

數(shù)據(jù)量巨大,吞吐量巨大,用戶實(shí)時(shí)訪問,請(qǐng)求延時(shí)敏感...

第二步,調(diào)研類似系統(tǒng)的方案。

國外信息分類做得最好的應(yīng)該是 Craigslist 了,網(wǎng)上調(diào)研一些相關(guān)的資料,可以了解到,其核心的一些關(guān)鍵設(shè)計(jì)點(diǎn):

①如何品類擴(kuò)展?

服務(wù)垂直拆分,數(shù)據(jù)垂直拆分...

②如何擴(kuò)展屬性?

利用 MongoDB 的 schema-free 特性...

③如何實(shí)現(xiàn)搜索?

早期利用 MongoDB 的索引,后期利用搜索服務(wù)...

④如何應(yīng)對(duì)大數(shù)據(jù)量,高并發(fā)量?

數(shù)據(jù)水平切分,邏輯處理服務(wù)化,集群化,緩存降低數(shù)據(jù)庫壓力...

總之,通過調(diào)研,對(duì)已有的方案有個(gè)初步的了解。

第三步,架構(gòu)頂層設(shè)計(jì)。

宏觀上,結(jié)合 Craigslist 的一些成熟實(shí)踐:

  • 業(yè)務(wù)垂直拆分;
  • 微服務(wù)分層,集群化;
  • 數(shù)據(jù)庫水平切分;
  • 緩存降壓;
  • ...

大的方向基本就能把握住。

第四步,根據(jù)主要矛盾迭代設(shè)計(jì)。

① 主要矛盾1:多品類帖子數(shù)據(jù)的分開存儲(chǔ),使得核心業(yè)務(wù)流程及其復(fù)雜,怎么解?

潛在方案:統(tǒng)一帖子中心服務(wù)IMC(Info Management Center)。

② 主要矛盾2:多品類帖子屬性的分級(jí),擴(kuò)展與校驗(yàn),怎么解?

潛在方案:統(tǒng)一分類管理服務(wù)CMC(Category Management Center)。

③ 主要矛盾3:大數(shù)據(jù)量,高并發(fā),跨品類的多屬性搜索,怎么解?

潛在方案:統(tǒng)一信息檢索服務(wù)E-search。

這里,是一個(gè)架構(gòu)設(shè)計(jì)過程的案例演示,主要用以說明設(shè)計(jì)流程。具體“1萬屬性,100億數(shù)據(jù),每秒10萬吞吐的分類信息平臺(tái)”的設(shè)計(jì)細(xì)節(jié),詳見后文的補(bǔ)充閱讀資料。

回歸今日話題,架構(gòu)設(shè)計(jì)的四大步驟:

  • 其一,理解需求以及定義系統(tǒng)邊界;
  • 其二,調(diào)研已有的類似的系統(tǒng);
  • 其三,頂層設(shè)計(jì),定義核心組件與交互;
  • 其四,針對(duì)主要矛盾迭代設(shè)計(jì);

有人問,第二步借鑒已有成熟系統(tǒng)的方案,在別的架構(gòu)設(shè)計(jì)方法中,沒有看到過這個(gè)步驟呀?莫不是搞笑的吧。

我非常嚴(yán)肅地聲明,這個(gè)步驟非常重要,調(diào)研一定要多花時(shí)間。不行的程序員,看誰的代碼都是屎;不行的架構(gòu)師才會(huì)認(rèn)為,我的方案最牛逼,別人的方案都是屎,但其實(shí),自己原創(chuàng)的大部分方案才是屎。

保持開放的心態(tài),借鑒優(yōu)秀的方案,是優(yōu)秀架構(gòu)師的核心品質(zhì)。

“借鑒”這一點(diǎn),任何不接地氣的架構(gòu)方法,都不會(huì)有人說。

補(bǔ)充閱讀材料

上述案例架構(gòu)設(shè)計(jì)方案細(xì)節(jié),詳見:《1萬屬性,100億數(shù)據(jù),每秒10萬吞吐,架構(gòu)如何設(shè)計(jì)?

責(zé)任編輯:趙寧寧 來源: 架構(gòu)師之路
相關(guān)推薦

2024-11-13 06:03:45

架構(gòu)設(shè)計(jì)架構(gòu)系統(tǒng)

2024-11-14 07:30:00

架構(gòu)吞吐量

2023-08-20 12:21:18

軟件開發(fā)架構(gòu)設(shè)計(jì)

2024-11-22 10:49:46

2024-11-14 15:00:00

線程架構(gòu)吞吐量

2018-11-23 09:52:24

架構(gòu)設(shè)計(jì)架構(gòu)師

2018-07-03 15:46:24

Java架構(gòu)師源碼

2019-07-23 18:15:26

技術(shù)大數(shù)據(jù)數(shù)據(jù)庫

2021-10-25 09:41:04

架構(gòu)運(yùn)維技術(shù)

2013-04-19 15:12:17

架構(gòu)師WEB架構(gòu)師

2018-11-28 09:38:34

微服務(wù)架構(gòu)API

2020-05-15 08:38:33

架構(gòu)師高級(jí)開發(fā)互聯(lián)網(wǎng)

2018-02-06 09:58:48

架構(gòu)師MVCiOS

2020-11-25 09:56:48

架構(gòu)運(yùn)維技術(shù)

2022-06-15 10:04:51

存儲(chǔ)選型MySQL

2009-02-23 11:18:06

J2EE架構(gòu)師Java

2020-07-28 08:36:54

數(shù)據(jù)安全數(shù)據(jù)泄露數(shù)據(jù)

2015-06-10 11:22:41

云計(jì)算云架構(gòu)師

2021-04-27 09:35:36

業(yè)務(wù)領(lǐng)域建模

2009-03-10 15:30:51

測試架構(gòu)師軟件測試職場
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人精品视频在线观看 | 中文字幕在线观看第一页 | 麻豆久久 | 羞羞的视频网站 | 女人牲交视频一级毛片 | 国产成人福利在线观看 | 国产亚洲欧美在线 | 国产精品1区 | 国产午夜精品一区二区三区在线观看 | 欧美日韩亚洲在线 | 亚洲一区综合 | 成人午夜免费视频 | 二区三区av| 国产一区 在线视频 | 欧美二区在线 | 国产精品久久久久久久午夜片 | 中文字幕一区在线观看视频 | 亚洲精品视频在线播放 | h视频亚洲| 精品国产精品一区二区夜夜嗨 | 黄色一级电影在线观看 | 日韩午夜在线播放 | 亚洲精品一区二区在线观看 | 久久久久久亚洲国产精品 | 免费视频二区 | 久久国产精品视频 | 人人草天天草 | 国产最新视频在线 | 91久久爽久久爽爽久久片 | 男女国产网站 | 91久久久久久久久久久久久 | a级黄色片视频 | 毛片高清 | 日本三级电影在线观看视频 | 欧美二区三区 | 一区视频 | 日韩欧美三区 | 国产一级电影网 | 国产午夜精品视频 | 国产精品久久久久久久久 | 国产一级毛片精品完整视频版 |