集群、分布式、SOA、微服務、webService等思想的整理


引子:前幾天別人問我,他用wpf弄個界面,能不能通過其他語言給他傳輸數據,我由此想到了webservice(此時此刻,我也沒有用過webService),作日翻閱了一些資料,對這塊技術有了個大概的了解。

看了webservice、就看到了soap協議、也看到了SOA思想,然后又引出微服務、微服務都引出來了,集群與分布式兩兄弟都隨風而至。(說來慚愧,以上的技術以及思想,本人回顧之前的開發經歷,貌似都沒有實實在在的用過),不過沒有用過,我也想總結一下,混個臉熟,留個印象,貌似接下來要搞的項目這些都得用到。

先說說webService:

  WebService是一種跨編程語言和跨操作系統平台的遠程調用技術.

  就好比你客戶端用c#開發了一套桌面界面,放在windows系統上運行,稱為A,我服務端用java寫了一個方法返回數據(xml、json),,我把java這個方法打包放到linux上,成為B。然后A從B獲取數據,A  B一起干活,不亦樂乎!網絡上比較典型的例證就是。在騰訊qq界面上的天氣預告就是調用氣象局的webservice,獲取數據,然后展示在自己的界面上(我也在想,之前做的項目前后端不分離,但是我前端也是通過ajax調用后端controller的方法,獲取到想要的json,這跟webservice多少有些像吧,只是沒有像webservice分的這么明顯,看官大神請指正,嘿嘿)

webService三要素

SOAP(Simple Object Access Protoclol)、WSDL(W ebS ervicesD escriptionL anguage)、UDDI(U niversalD escriptionD iscover y andI ntegration)之一, soap用來描述傳遞信息的格式, WSDL 用來描述如何訪問具體的接口, uddi用來管理,分發,查詢webService
 
再聊聊SOA
SOA(Service-Oriented Architecture)的定義是  面向服務的架構,不要看它與soap像,它們兩不是一個概念,前者是一種宏觀的設計思想,后者是一個規定的協議!
 
下面是百度百科給的定義
面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)進行拆分,並通過這些服務之間定義良好的接口和協議聯系起來。接口是采用中立的方式進行定義的,它應該獨立於實現服務的硬件平台、操作系統和編程語言。這使得構件在各種各樣的系統中的服務可以以一種統一和通用的方式進行交互。
 
應用場景:
當一個系統過大時,我們會將系統拆分為多個子系統,各個子系統互相調用,來完成大系統的任務這里就用到了SOA,如下圖,下圖是我盜來的,來自 該大神
 
 小小插入:前段時間在阿里雲租了幾台服務器,研究部署 kafka storm 等,它們都是通過zookeeper統一調度分發節點、分區的,zookeeper所用到的思想與這SOA也差不多吧
 
最后再談談 集群、分布式、微服務這三個
 
集群、分布式
概念:
集群是個物理形態,分布式是個工作方式。
1.分布式:一個業務分拆多個子業務,部署在不同的服務器上
2.集群:同一個業務,部署在多個服務器上
分布式是指將不同的業務分布在不同的地方。而集群指的是將幾台服務器集中在一起,實現同一業務。
分布式中的每一個節點,都可以做集群。而集群並不一定就是分布式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個集群,前面放一個響應服務器,后面幾台服務器完成同一業務,如果有業務訪問的時候,響應服務器看哪台服務器的負載不是很重,就將給哪一台去完成。
而分布式,從窄意上理解,也跟集群差不多,但是它的組織比較松散,不像集群,有一個組織性,一台服務器垮了,其它的服務器可以頂上來。
分布式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務就不可訪問了。
簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。

微服務

1. 微服務的誕生

微服務是基於分而治之的思想演化出來的。過去傳統的一個大型而又全面的系統,隨着互聯網的發展已經很難滿足市場對技術的需求,於是我們從單獨架構發展到分布式架構,又從分布式架構發展到 SOA 架構,服務不斷的被拆分和分解,粒度也越來越小,直到微服務架構的誕生。

微服務架構是一種架構模式,它提倡將單一應用程序划分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。

每個服務運行在其獨立的進程中,服務和服務間采用輕量級的通信機制互相溝通(通常是基於 HTTP 的 RESTful API)。每個服務都圍繞着具體業務進行構建,並且能夠被獨立地部署到生產環境、類生產環境等。另外,應盡量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。

2. 微服務架構與SOA架構的區別

微服務是真正的分布式的、去中心化的。把所有的“思考”邏輯包括路由、消息解析等放在服務內部,去掉一個大一統的 ESB,服務間輕通信,是比 SOA 更徹底的拆分。

微服務架構強調的重點是業務系統需要徹底的組件化和服務化,原有的單個業務系統會拆分為多個可以獨立開發,設計,運行和運維的小應用,這些小應用之間通過服務完成交互和集成。

 

總結一下,其實我自己感覺 分布式、SOA、微服務 三者的思想是一致的,都是將一個系統分而治之,互相解耦,只是三者的分治力度大小不一樣,分布式<SOA<微服務(個人見解啊,若有不當,望大家糾正)

 

說在最后:其實不管啥技術,基本都是業務催生的,要做好一個項目其實並不是你用的技術多牛就行,而是你要把這個項目做的讓客戶滿意才行。另外我們在工作中、生活中、不斷得提高自己,望每個程序員都有一個好的環境提高自己,賺足錢,娶老婆!另外發個牢騷:今年上班兩個多月了,才領了一個多月工資,然而租房也兩個多月了,卻要交半年的房租,不容易啊!,加油

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM