引子:前幾天別人問我,他用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三要素
集群是個物理形態,分布式是個工作方式。
1.分布式:一個業務分拆多個子業務,部署在不同的服務器上
2.集群:同一個業務,部署在多個服務器上
分布式是指將不同的業務分布在不同的地方。而集群指的是將幾台服務器集中在一起,實現同一業務。
分布式中的每一個節點,都可以做集群。而集群並不一定就是分布式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個集群,前面放一個響應服務器,后面幾台服務器完成同一業務,如果有業務訪問的時候,響應服務器看哪台服務器的負載不是很重,就將給哪一台去完成。
而分布式,從窄意上理解,也跟集群差不多,但是它的組織比較松散,不像集群,有一個組織性,一台服務器垮了,其它的服務器可以頂上來。
分布式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務就不可訪問了。
簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。
微服務
1. 微服務的誕生
微服務是基於分而治之的思想演化出來的。過去傳統的一個大型而又全面的系統,隨着互聯網的發展已經很難滿足市場對技術的需求,於是我們從單獨架構發展到分布式架構,又從分布式架構發展到 SOA 架構,服務不斷的被拆分和分解,粒度也越來越小,直到微服務架構的誕生。
微服務架構是一種架構模式,它提倡將單一應用程序划分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。
每個服務運行在其獨立的進程中,服務和服務間采用輕量級的通信機制互相溝通(通常是基於 HTTP 的 RESTful API)。每個服務都圍繞着具體業務進行構建,並且能夠被獨立地部署到生產環境、類生產環境等。另外,應盡量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。
2. 微服務架構與SOA架構的區別
微服務是真正的分布式的、去中心化的。把所有的“思考”邏輯包括路由、消息解析等放在服務內部,去掉一個大一統的 ESB,服務間輕通信,是比 SOA 更徹底的拆分。
微服務架構強調的重點是業務系統需要徹底的組件化和服務化,原有的單個業務系統會拆分為多個可以獨立開發,設計,運行和運維的小應用,這些小應用之間通過服務完成交互和集成。
總結一下,其實我自己感覺 分布式、SOA、微服務 三者的思想是一致的,都是將一個系統分而治之,互相解耦,只是三者的分治力度大小不一樣,分布式<SOA<微服務(個人見解啊,若有不當,望大家糾正)
說在最后:其實不管啥技術,基本都是業務催生的,要做好一個項目其實並不是你用的技術多牛就行,而是你要把這個項目做的讓客戶滿意才行。另外我們在工作中、生活中、不斷得提高自己,望每個程序員都有一個好的環境提高自己,賺足錢,娶老婆!另外發個牢騷:今年上班兩個多月了,才領了一個多月工資,然而租房也兩個多月了,卻要交半年的房租,不容易啊!,加油。
