分佈式問題解決:第三方原則

作者:潘吉祥


寫這篇文章完全是個人一時的靈感,是在學筆者習大量分佈式問題解決方案之後,突然有種茅塞頓開的感覺,順便和讀者一同分享一下。

標題說的是“思想”,沒錯,這裏不是在針對某個具體實現的技術手段,而是在於抽象一種“萬劍歸一”的處理思維,這能讓我們在開發中更加順暢地使用各類已經成熟的解決工具,或者爲公司研發屬於自己的工具提供思路方案,我們應當重視思路思維在工作中的重要性。

當然這樣的思想不是一蹴而就的,按着循序漸進的規律,首先來看一下企業項目的歷史演變過程:

這裏說明一下個人對於分佈式應用和微服務應用的看法:在我看來微服務應用的思想就是分佈式的,我們可以說分佈式應用和微服務應用都是分佈式理念——拆分服務共同協作完成所有功能。

從應用具體組織層面來說,二者對於某類服務的組織處理不同:分佈式應用是把原本工程的視圖層和服務層以工程的形式分離;而微服務應用是把原本工程的服務進行分離,如圖所示

由圖可以看出分戶式應用的服務之間有着較強的依賴,單個服務無法提供正常的業務。而微服務則是較弱的依賴,服務單獨即可完成自己的核心業務。因此下文對於分佈式應用和微服務我們此處統稱分佈式環境。

分佈式是架構發展的必然趨勢,它能夠解決海量請求的問題,同時它也帶來了更多傳統架構沒有的問題,同時讓我們來看看這些問題的解決方案:

1大量分佈式服務的管理與治理

2分佈式事務問題

3分佈式任務調度問題

4分佈式session問題

5跨域問題

6分佈式鎖(全局唯一id)

7分佈式的日誌問題

通過分析分佈式各種具體問題的解決方案,我們可以總結出在分佈式領域出現的問題有一個首要的原則:第三方原則。

什麼是第三方原則:在面對分佈式環境中服務出現的各種問題,我們首先應該考慮在系統業務服務之外引入另外獨立中間服務,並且中間服務並不直接參與到系統的業務之中。如果着力於改造原有服務本身,這隻會將實現複雜化,並且在技術上難以實現。

注意:這裏的第三方概念不是相對於公司和平臺而言,而是相對於主業務系統而言的。

這個原則雖然看似簡單,而且偏向於方法論,但是應當值得我們在分佈式開中時刻注意,因爲它是各種解決方案最本質的抽象,同時也是我們研發自己方案的準則,需要在實踐中加深理解,這是相當有益的。

END

【推薦閱讀

原創 | 全網最實在的docker入門教程一

原創 | 全網最實在的docker入門教程二

原創 | 全網最實在的docker入門教程三

原創 | 全網最實在的docker入門教程四

手撕zookeeper:作爲註冊中心負載均衡

填坑之旅:手撕分佈式zookeeper鎖

MySQL數據庫插入100w條數據要花多久?

老大說:誰要再用double定義商品金額,就自己收拾東西走


感謝閱讀,請掃碼關注
明天見
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章