无处不在的架构之美
導讀:架構是關于復雜系統整體規劃和關鍵細節的,復雜的事物都需要進行架構設計。公司與國家的組織管理架構、產品的生態體系架構、建筑工程的功能與非功能性架構、人生的目標規劃與關鍵抉擇架構……架構無處不在,架構之美也無處不在。
來源:華章計算機(hzbook_jsj)
一個極簡又極精妙的航天系統架構
移動互聯網的崛起有一項功能起了至關重要的作用,就是LBS,即基于地理位置的服務,這是傳統的PC互聯網沒有的。移動App根據用戶當前位置提供個性化服務,是移動應用的一項重要特性,而這個特性的背后主要使用的是GPS技術。
手機通過GPS模塊可以提供米級精度的定位服務,那么手機怎么知道自己在哪里呢?全球各地的手機有幾十億部,GPS服務為何可以涵蓋這么廣的范圍?
手機能夠知道自己的位置是通過接受GPS衛星信號計算出來的。GPS看似是一個定位服務,其實背后是一個航天系統,基本原理如圖C-1所示。
手機接收衛星的廣播電文,知道衛星的空間坐標,帶入歐氏空間距離公式,就可以得到一個方程組
其中,P1代表手機到衛星1的距離,這個距離可以通過手機收到衛星電文的時間減去衛星發送電文的時間(這個時間包含在電文中),再乘以光速計算得到,即P1=c(t–t1),其中t是手機收到衛星信號的時間,t1是衛星發送信號的時間,c是光速。計算得到距離以后,計算這個方程組就可以得到手機的坐標{x, y, z}。
但是,這里有一個問題,衛星的時間使用原子鐘,并通過地面站精確校時,時間精度極高,而手機上的時間偏差就比較大,再乘以光速,誤差可能會偏離地球。所以需要對手機時間進行校正,假設手機和標準時間的偏差t,那么上面的方程組就多出一個未知量,所以需要再增加一個方程,即
也就是說,需要再增加接收一顆衛星的信號,計算由四個方程購成的方程組的解,就可以得到手機當前所在位置的坐標,同時還知道了精確的時間。所以GPS也是一個極其精確的時鐘系統,某些分布式系統需要在較遠距離部署的服務器之間傳輸數據,同時保證數據的一致性,這時候需要使用精確的、全局統一的時間戳,這個時間戳也可以通過GPS來獲取。
為了保證全球主要地區在任何時候都能至少接收到四顆衛星的信號,GPS常年維持30顆左右的衛星。衛星定位系統是一個極其龐大復雜的工程,全球只有極少數國家(聯盟)才能實現。但是其核心架構原理卻是非常簡單又非常精妙的,架構之美盡在其中。
歷經兩千多年時間考驗的水利工程架構
四川被稱為天府之國,歷史上一直都是中國的戰略大后方。守住四川就有機會收復全中國,這樣的事例在歷史上多次重現。這主要是由于四川具有得天獨厚的地理條件,一方面是易守難攻的軍事地理條件,另一方面是成都平原優渥的農業種植條件,以及由此支撐起的龐大軍事和農業生產人口。
但是成都平原并不是一開始就是沃野千里的良田,要成為良田一方面需要良好的土地,另一方面還需要良好的灌溉,使這片土地得到良好灌溉的是兩千多年前的一項水利工程—都江堰。
修建都江堰水利工程的目的是引岷江水進入成都平原,灌溉那里的土地,引水工程要解決以下三個問題。
引流:這是工程的首要目的,即如何把水引進來。
防洪:如果水進來后不受控制,那么當爆發洪水的時候,整個成都平原就會成為一片沼澤,所以引水以后要解決防洪的問題。
排沙:岷江水勢高,水流高速進入成都平原后,流速立刻下降,就會導致原來江水中的泥沙沉積下來,日積月累,河水改道,平原又成沼澤,所以還要解決江水排沙的問題。
都江堰通過設計幾個關鍵組件互相協作,完美地解決了上面的三個問題。都江堰架構如圖C-2所示。
引流主要通過江中金剛堤及其突出部魚嘴,將岷江分為外江和內江兩條江,只有內江水通過寶瓶口進入成都平原。內江深挖形成凹地,外江為凸地,枯水期江水主要通過凹地流入內江;汛期,水流速度快,由于水流的彎道動力學原理,江水主要通過外江流走,實現都江堰的第一重防洪。同時內外河道的凹凸設計利用流體力學原理將清澈的江水引入內江,將渾濁的江水排往外江,實現了都江堰的第一重排沙。
內江水流到寶瓶口的時候,由于入口狹窄,會形成漩渦,漩渦將江水中的泥沙甩出到飛沙堰,實現都江堰的第二重排沙。同時由于飛沙堰是一個低矮的堰壩,如果江水泛濫,就會沖過飛沙堰,重新流入外江,實現都江堰的第二重防洪。而寶瓶口則是從玉壘山中人工開鑿出來的一個通道,只允許特定的水量流過,形成都江堰的第三重防洪。
魚嘴、飛沙堰、寶瓶口三個組件互相聯動,低耦合、高內聚,形成一個完美架構的水利工程系統,生生不息,滋養了四川盆地2000多年,是人類水利工程的奇跡,其架構原理甚至值得今天高并發、大流量的互聯網系統架構借鑒。而都江堰的架構師—李冰也被蜀地人民尊為川主,紀念了幾千年。
蘋果公司的產品生態體系架構
蘋果公司的產品技術生態體系和它的主要競爭對手都不同。蘋果對其生態體系內的開發者有更強的約束和規范,而Google和微軟則對Android和Windows上的開發者要寬容得多。蘋果軟硬一體的產品以及對應用商店的嚴格掌控使得其產品有更好用戶體驗,而Google和Windows開放的生態則吸引了更多的開發者,擁有更豐富的產品體系。
軟件架構設計中,也會遇到類似的抉擇。架構規范與框架應該對應用程序開發嚴格約束還是給予一定的自由?嚴格約束可以保證系統按照架構師的設計思路精確開發,但是同時也失去了靈活性,如果架構與框架設計考慮不周,開發過程又缺乏變通,可能會導致開發過程出現問題。而自由則可能導致工程師隨心所欲,開發出來的系統僵硬、腐化、凌亂,難以維護。
嚴格和自由哪種更好,對此沒有現成的答案,至少我們看到蘋果和Google、微軟雖然有著不同的哲學,但是它們都獲得了成功。但這并不是說架構的規范嚴格與自由不重要,這是架構設計最重要的哲學之一,是架構師如何看待自己設計的架構和框架與整個系統的關系,是架構師自己與應用開發者關系的基礎。架構師需要對自己、對產品、對團隊有深刻的認知,才能把握好整個尺度。
除了系統的架構,在公司的管理與組織結構中也有這樣的抉擇。管理者嚴密地控制一切,將員工當作不會思考的螺絲釘,只要按指令做事即可;管理者對員工放任自由,員工就會完全按自己的意愿工作。兩種極端顯然都不會開發出優秀的產品、培養出優秀的員工。那么在兩端之間,管理的尺度在哪里?現實中,嚴格管控的公司似乎更多一些。隨著社會進步,管理者和員工共同進步,管理的尺度會不會向自由的一端移動?
在目前的實踐中,一種比較高效的管理架構是:由員工發起創新方案,管理者對多個方案進行選擇,然后將資源投放到某個方案上,這樣既釋放了員工的創造力與積極性,公司和管理者也對工作進行了較好的掌控。
對于軟件設計而言,架構之美不是可有可無的奢侈品,而是決定成功與失敗的一個重要因素。美并不僅僅是一個美學的問題,也不僅僅是一個品味的問題,美能夠被翻譯成可行的技術。如果你的程序真的優雅且美麗,那么它就容易管理。首先是因為它比其他的方案都要簡潔,其次是因為它的組件都可以被換成另外的方案而不會影響其他部分。最優雅的軟件往往也是最高效的。
如果說美也有缺點的話,那就是你需要通過艱巨的工作才能得到它,需要刻苦的訓練才能欣賞它。
《架構師的自我修煉:技術、架構和未來》從四個方面,全方位闡述了架構師必須具備的各項知識。本書既包含了成為一個軟件架構師必須具備的各種知識技能體系,也包含了修煉成為一個架構師的學習成長思考。閱讀本書,相信您從中不但可以領會各種技術的內在聯系,也可以領悟到更深刻的技術和成長之道。
RECOMMEND
更多架構師必看好書推薦
01
《架構即未來:現代企業可擴展的Web架構、流程和組織(原書第2版)》
?
推薦語:本書盡地介紹了影響擴展性的各個方面,包括架構、過程、組織和技術。通過閱讀本書,你可以學習到以最大化敏捷性和擴展性來優化組織機構的新策略,以及對云計算(IaaS/PaaS)、NoSQL、DevOps和業務指標等的新見解。而且利用其中的工具和建議,你可以系統化地清除擴展性道路上的障礙,在技術和業務上取得前所未有的成功。
02
《架構真經:互聯網技術架構的設計原則(原書第2版)》
?
推薦語:本書是《架構即未來》的姊妹篇。全書共分13章,用成功互聯網產品公司首席技術官和企業家的故事,引出了對構建可擴展的產品至關重要的50條規則,可幫助軟件研發人員、技術運維人員和管理者修復或重新架構現有產品,了解關于擴展的佳實踐并有計劃地實施,還可以幫助建立一套架構原則以推動未來的研發。
03
《系統架構:復雜系統的產品設計與開發》
?
推薦語:本書將系統架構的分析和綜合過程中所提到的相關理念,總結成了20多條架構原則;將各種架構決策問題歸納成6種模式,使架構師能夠在不同的工作場景中選用合適的模式及算法來對這些問題進行程序化的處理。
04
《微服務架構設計模式》
?
推薦語:由世界十大軟件架構師之一、微服務架構的先驅、Java開發者社區的意見領袖Chris Richardson親筆撰寫,旨在幫助架構師和程序員學會使用微服務架構成功開發應用程序。書中描述了如何解決我們將面臨的眾多架構設計挑戰,涵蓋44個架構設計模式,系統解決服務拆分、事務管理、查詢和跨服務通信等難題。本書將教會你如何開發和部署生產級別的微服務架構應用,幫助你設計、實現、測試和部署基于微服務的應用程序。
05
《架構啟示錄》
?
推薦語:本書研究傳統的建筑工作與數字產品的架構工作之間有著怎樣的聯系,探討了4位世界知名建筑師在各自的工作中所用的技術范式,并講述了他們如何將各種互動元素融入這些工作,探尋這幾位建筑師怎樣影響數字化的世界。
你可以在閱讀中思考這些工作與建筑有什么相通之處?這幾位建筑師怎樣運用計算機等技術來做試驗,從而拓寬其工作領域?計算機、控制論以及人工智能方面的研究者與工程人員,能夠通過這些建筑師與他們處理過的建筑問題,獲得哪些啟發?傳統的建筑知識,對新興的數字產品來說,有著什么樣的意義?
直播預告
掃碼關注【華章計算機】視頻號
每天來聽華章哥講書
更多精彩回顧
書訊 |?5月書訊(下)| 5天小長假,一起讀新書
書訊 |?5月書訊(上)| 5天小長假,一起讀新書
資訊 |?DB-Engines 4月數據庫排名:Redis有望甩掉“千年老七”?
書單 |?360漏洞響應平臺(SRC)為白帽子挑選的10本互聯網安全好書
干貨 |?這樣構建的用戶畫像!想不懂你的用戶都難
收藏 |?手把手教你用Scrapy爬取知乎大V粉絲列表
上新 |?【新書速遞】架構師是怎樣煉成的
贈書?|?【第54期】“換道超車”:無人駕駛在中國的落地之路
點擊閱讀全文購買
總結
- 上一篇: 学习大数据的网站
- 下一篇: selenium定位不准的问题