微服務應用開發入門①web端架構演進

從web層架構的演進了解微服務的概念,進而對微服務的組件有一定的瞭解;

從而知道爲什麼需要這些組件,以及這些組件設計的初衷,瞭解組件的責任和邊界

 

單體架構

最早的時候,帶寬所限,一個tomcat就可以搞定一個網站或者項目;MVC架構非常流行

即使在現在一些簡單的網站和項目也可以使用nginx + tomcat;因爲這樣開發和維護成本比較低;

 單體架構--面臨的挑戰

維護和升級困難

        代碼不斷膨脹、功能越來越複雜、代碼修改牽一髮而動全身

系統可靠性變差

       訪問量增加、軟件和硬件都面臨挑戰、雪崩效應

團隊協作效率變差

       重複代碼增多,重複造輪子、測試變的複雜

  • 複雜應用的開發維護成本變高、部署效率變

 

集中式架構SOA

SOA架構一度也非常流行,能解決我們在單體架構中存在的問題。可以看到企業總線類似於服務網關的作用。

特點

1、基於SOA的架構思想將重複公用的功能抽取爲組件,以服務的方式給各系統提供服務。

2、各各項目(系統)與服務之間採用webservicerpc等方式進行通信。

3ESB企業服務總線作爲項目與服務之間通信的橋樑

優點:

1、將重複的功能抽取爲服務,提高開發效率,提高系統的可重用性、可維護性。

2、可以針對不同服務的特點制定集羣及優化方案。

3、採用ESB減少系統中的接口耦合。

缺點:

1、系統與服務的界限模糊,不利於開發及維護。

2、雖然使用了ESB,但是服務的接口協議不固定,種類繁多,不利於系統維護。

3、抽取的服務的粒度過大,系統與服務之間耦合性高

 

 集中式架構SOA-面臨的挑戰

SOA架構解決了應用服務化的問題、隨着服務化的越來越深入、服務規模越來越大、服務治理面臨的挑戰也越來越多

  • 服務框架如何支持線性擴展
  • 分佈式框架下的服務調用性能
  •  如何查看日誌,快速定位和解決故障      
  • 服務限流、重試、超時控制、服務失敗策略
  • 如何實現分佈式服務監控
以上問題都期待我們有一個架構可以解決它,微服務架構風格應運而生。
 

微服務架構

微服務架構的特點

微服務架構實現阿里Dubbo

註冊中心(registry):生產者在此註冊併發布內容,消費者在此訂閱並接收發布的內容。

消費者(consumer):客戶端,從註冊中心獲取到方法,可以調用生產者中的方法。

生產者(provider):服務端,生產內容,生產前需要依賴容器(先啓動容器)。

容器(container):生產者在啓動執行的時候,必須依賴容器才能正常啓動(默認依賴的是spring容器      

監控中心(monitor):dubbo提供的一個jar工程。主要功能是監控服務端和消費端的使用數據。

:服務端是什麼,有多少接口,多少方法,調用次數,壓力信息等,客戶端有多少,調用過哪些服務端,調用了多少次等。

微服務架構實現SpringCloud 

基本步驟

1、啓動服務將服務註冊到註冊中心     

2、啓動服務網關注冊到註冊中心

3、服務之間的調用使用一般用feign

4、外部的流量通過服務網關負載均衡


還有淘寶的HSF和亞馬遜的Coral Service、華爲在電信行業的DSF等等

微服務功能特性

微服務化的優勢----擁抱變化
 單一職責

       單一職責,這樣能聚焦一個指定的業務功能或業務需求。

       開發簡單、開發效率提高,一個服務可能就是專一的只幹一件事。

       微服務能夠被小團隊單獨開發,利於敏捷交付

服務自治

        一個服務就是一個獨立的實體

        微服務是鬆耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的

        微服務允許你利用融合最新技術和不同的言語(要考慮維護和規範)


微服務化的挑戰----管理複雜度

  服務的拆分和定義是一項挑戰

        康威定律

分佈式系統帶來的各種複雜性

       運維以及監控 服務升級、版本控制; 

       超大型分佈式系統需要考慮性能問題和更復雜的存儲、監控和運維等

 

 

lMVC架構業務規模很小時,將所有功能都部署在同一個進程中,通過雙機或者前置負載均衡器實現負載分流

 

lSOA架構:隨着業務發展,服務數量越來越多,服務生命週期管控和運行態的治理成爲瓶頸,此時用於提升服務質量的SOA服務治理是關鍵

 

l微服務架構:隨着敏捷開發,持續交付,DevOps理論的發展和實踐,以及基於Docker等輕量級容器部署應用和服務的成熟,微服務架構開發流行,逐漸成爲應用架構的未來演進方向。
 
 

個人寄語

技術是爲了解決問題而存在的。

架構不是一成不變的,不是說定義了單體架構,SOA架構,就一直是這樣;

架構是爲了解決問題而慢慢演變的一個過程。其實還有RPC框架;有環境的因素和實際需求共同推動。

架構是一個逐步演變的過程,soa架構也可能發展出註冊中心;

就比如esb企業總線和服務網關的概念去趨同的;

比如我2014-2016在項目中的架構使用MQ、可以算是僞分佈式架構。

但是從整體上它並不是微服務架構,從架構層面上它不滿足當前互聯網項目發展的需要;

從個體層面上。esb畢竟不是爲服務網關設計出來的,

他有他的歷史任務,所以已當前的眼光來看,它是落後的;以當時的眼光來看來看他是一個合適

的解決方案,是滿足當時所需的是優秀的

 

所以重申一下個人觀點,技術是爲了解決問題而存在的,我們不能說什麼技術流行就用什麼技術;

我們應該看來這個技術解決了什麼問題,然後看看它是否能解決我們的問題;

 
 
 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章