參見: https://blog.csdn.net/william_n/article/details/103564312
1.學習/操作
1.從目前已經公開的資料來看,分布式服務化架構思想實踐最早的公司應該是亞馬遜。 2. 亞馬遜如何做分布式服務架構的,遇到了哪些問題,以及是如何解決的? 亞馬遜 CEO 傑夫·貝索斯(Jeff Bezos)就向全公司頒布了下面的這幾條架構規定. -- 所有團隊的程式子產品都要通過 Service Interface 方式将其資料與功能開放出來。 -- 團隊間程式子產品的資訊通信,都要通過這些接口。除此之外沒有其它的通信方式。其他形式一概不允許:不能直接鍊結别的程式(把--- 其他團隊的程式當做動态連結庫來連結),不能直接讀取其他團隊的資料庫,不能使用共享記憶體模式,不能使用别人子產品的後門,等等。唯一允許的通信方式是調用 Service Interface。 -- 任何技術都可以使用。比如:HTTP、CORBA、Pub/Sub、自定義的網絡協定等。 -- 所有的 Service Interface,毫無例外,都必須從骨子裡到表面上設計成能對外界開放的。也就是說,團隊必須做好規劃與設計,以便未來把接口開放給全世界的程式員,沒有任何例外。 -- 不這樣做的人會被炒鱿魚。 備注: 這也應是 AWS(Amazon Web Service)出現的基因. 出現的問題: -- 一個線上故障的工單會在不同的服務和不同的團隊中轉過來轉過去。 -- 每個團隊都可能成為一個潛在的 DDoS 攻擊者,除非每個服務都要做好配額和限流。 -- 監控和查錯變得更為複雜。除非有非常強大的監控手段。 -- 服務發現和服務治理也變得非常複雜。 解決方法: -- 分布式服務的架構需要分布式的團隊架構 -- 分布式服務查錯不容易 -- 沒有專職的測試人員,也沒有專職的運維人員,開發人員做所有的事情。 -- 運維優先,崇尚簡化和自動化 -- 内部服務和外部服務一緻。 備注: 在進化的過程中,亞馬遜遇到的問題很多,甚至還有很多幾乎沒有人會想到的非常生僻的東西,它都一一學習和總結了,而且都解決得很好. 3. 分布式系統中需要注意的問題 問題一:異構系統的不标準問題 問題二:系統架構中的服務依賴性問題 問題三:故障發生的機率更大 問題四:多層架構的運維複雜度更大 重點: 分工不是問題,問題是分工後的協作是否統一和規範。 而且建構分布式服務需要從組織,到軟體工程,再到技術上的一次大的改造,需要比較長的時間來磨合和改進,并不斷地總結教訓和成功經驗。 後續補充 ... |
2.補充
TBD |
3.問題
3.1 如果你在分布式系統架構方面,有其他想了解的話題和内容 網友評論 javaee 國内按技能分工還是主流,采用分布式服務所産生的問題的确很多。特别是對于電商,業務鍊條非常長,環環依賴,業務上的溝通協調、排查問題方面要花大把時間。畢竟是各管各的,基本上沒誰能對整個業務和技術鍊條都了解清楚。即便有,那也解決不了全公司的問題。公司大了,在開發語言、通信協定、資料規範都會盡量統一,運維逐漸自動化,可視化監控并定義關鍵名額,同時還需要全鍊路的監控,這一切看起來非常好。但對于一家從3、5個人發展到幾百、上千甚至上萬人的時候,誰又曾想公司能壯大如此。即便想到了,在那時候技術也不是重點不會換入那麼多資源,那時也不一定能找到願意加入的技術牛人。是以,在公司高速成長的過程中,技術往往是受不到足夠重視的,老闆也沒那麼懂。是以技術上肯定會是比較雜亂的,各種語言,各種協定,各種部署方式,種種的異構在後期想統一的時候肯定是非常困難的,這個标準化的過程對于大多數公司來說将會是持久戰。 後續補充 ... |
4.參考
https://time.geekbang.org/column/article/1505 //22 | 從亞馬遜的實踐,談分布式系統的難點 |
後續補充
...