摘要:微服務(wù)做的事情是按照項目顆粒度進(jìn)行服務(wù)的拆分,把模塊多帶帶拿出來做成每一個多帶帶的小項目。給我們提供了的底層服務(wù),我們并不需要去關(guān)心底層通訊細(xì)節(jié)和調(diào)用的過程。通過定義接口,實現(xiàn)接口,啟動提供接口服務(wù)。
RPC 服務(wù)
RPC,是一種遠(yuǎn)程調(diào)用方式(Remote Procedure Call),通過RPC我們可以像調(diào)用本地方法一樣調(diào)用別的機器上的方法,用戶將無感服務(wù)器與服務(wù)器之間的通訊。RPC在微服務(wù)當(dāng)中起到相當(dāng)大的作用,當(dāng)然RPC不是微服務(wù)必須的一種方式,有別的方式也可以實現(xiàn)這種遠(yuǎn)程調(diào)用例如RESTful API就可以實現(xiàn)遠(yuǎn)程調(diào)用。如果有用過SOAP那么你使用RPC將會覺得很類似,都是可以直接調(diào)用別的機器上的方法。
隨著業(yè)務(wù)的發(fā)展我們的項目從簡單的單體結(jié)構(gòu)逐漸的演化成微服務(wù)結(jié)構(gòu),我們?yōu)槭裁匆鸱殖晌⒎?wù)呢?那我們來說說微服務(wù)和單體架構(gòu)的優(yōu)缺點。我們看一下單體架構(gòu)圖。
單體架構(gòu) 單體架構(gòu)優(yōu)點部署容易,如php寫的項目,只要一個文件夾復(fù)制到支持php的環(huán)境就可以了,java只需要一個jar包
測試容易,我們整體項目只要改了一個地方馬上就可以測試得出結(jié)果
負(fù)載均衡就可以解決,快速部署多個一模一樣的項目在不同的機器運行分流
單體架構(gòu)的缺點部署的問題,對于php來說這點還好,但是對于java的項目來說,我們需要重新打包整個項目耗費的時間是很長的
代碼維護,由于所有的代碼都寫在一個項目里面,要想要修改某一個功能點那么需要對項目的整體邏輯和設(shè)計有較深的理解,否則代碼耦合嚴(yán)重,導(dǎo)致維護難,特別對于新入職的員工來說這將是最容易出現(xiàn)問題的地方
開發(fā)效率低,隨著項目需求的不斷改變和新的功能新增,老舊的代碼又不敢隨便刪除,導(dǎo)致整個項目變得笨重,這將會增加你閱讀代碼的時間
擴展性,在高并發(fā)的情況下,我們往往不是整個項目的每一個功能都處于高流量高請求的情況下的,很多時候都是某一個功能模塊使用的人數(shù)比較多,在單體結(jié)構(gòu)下我們沒有辦法針對單個功能實現(xiàn)分布式擴展,必須整個項目一起部署
微服務(wù)架構(gòu)在2014年被提出,現(xiàn)在國內(nèi)很多公司已經(jīng)使用,微服務(wù)是一種架構(gòu)設(shè)計,并不是說什么框架或者代替什么。微服務(wù)做的事情是按照項目顆粒度進(jìn)行服務(wù)的拆分,把模塊多帶帶拿出來做成每一個多帶帶的小項目。微服務(wù)的主要特點有:每一個功能模塊是一個小項目、獨立運行在不同進(jìn)程或者機器上、不同功能可以又不同的人員開發(fā)獨立開發(fā)不松耦合、獨立部署不需要依賴整體項目就可以啟動單個服務(wù)、分布式管理。每一個服務(wù)只要做好自己的事情就好了。在設(shè)計微服務(wù)的時候還需要考慮到數(shù)據(jù)庫的問題,是所有微服務(wù)使用共同一個數(shù)據(jù)庫還是每一個服務(wù)單個數(shù)據(jù)庫
微服務(wù)優(yōu)點拆分業(yè)務(wù),把整體大項目分割成不同小項目運行在不同進(jìn)程或者機器上實現(xiàn)數(shù)據(jù)隔離
技術(shù)棧,每個服務(wù)可以又不同的團隊或者開發(fā)者進(jìn)行開發(fā),外部調(diào)用人員不需要操心具體怎么實現(xiàn)的,只需要類似調(diào)用自己方法一樣或者接口一樣按照服務(wù)提供者給出來的參數(shù)傳遞即可
獨立部署,每一個服務(wù)獨立部署,部署一個服務(wù)不會影響整體項目,如果部署失敗最多是這個服務(wù)的功能缺失,并不影響其他功能的使用
按需部署,針對不同的需求可以給不同的服務(wù)自由擴展服務(wù)器,根據(jù)服務(wù)的規(guī)模部署滿足需求的實例
局部修改,當(dāng)一個服務(wù)有新需求或者其他修改,不需要修改整體項目只要管好自己的服務(wù)就好了
微服務(wù)缺點運維,微服務(wù)由于把業(yè)務(wù)拆分得細(xì),有可能部署在不同機器上,因此對于運維人員的管理來說,這部分的成本會加大
接口調(diào)整,微服務(wù)之間通過接口進(jìn)行通信。如果修改某個微服務(wù)的API,可能所有使用了該接口的微服務(wù)都需要做調(diào)整;
重復(fù)勞動,很多服務(wù)可能都會使用到相同的功能。而這個功能并沒有達(dá)到分解為一個微服務(wù)的程度,這個時候,可能各個服務(wù)都會開發(fā)這一功能,導(dǎo)致代碼重復(fù)。
分布式,由于會把不同服務(wù)部署在不同機器上,那么對于這些服務(wù)的調(diào)用、容錯、網(wǎng)絡(luò)延遲、分布式事務(wù)等等都是一個很大的挑戰(zhàn),當(dāng)然微服務(wù)不一定全部都是部署在不同服務(wù)器上
服務(wù)調(diào)用如上圖所示,RPC就用于調(diào)用者與服務(wù)之間的通訊,RPC協(xié)議可基于TCP、UDP或者HTTP實現(xiàn),但是更推薦選擇TCP。
例如調(diào)用者需要調(diào)用商品的服務(wù)就可以通過RPC或者RESTful API來調(diào)用,那么RPC調(diào)用和RESTful API兩者之間的區(qū)別在哪呢?
TCP的支持保持連接,當(dāng)調(diào)用服務(wù)的時候不需要每次都進(jìn)行三次握手才實現(xiàn)。從性能和網(wǎng)絡(luò)消耗來說RPC都具備了很好的優(yōu)勢。
RESTful API 基于HTTP的,也就是說每次調(diào)用服務(wù)都需要進(jìn)行三次握手建立起通信才可以實現(xiàn)調(diào)用,當(dāng)我們的并發(fā)量高的時候這就會浪費很多帶寬資源
服務(wù)對外的話采用RESTful API會比RPC更具備優(yōu)勢,因此看自己團隊的服務(wù)是對內(nèi)還是對外
RPC調(diào)用過程RPC最主要的作用就是用于服務(wù)調(diào)用
本文作為RPC的使用場景開山篇,對于單體架構(gòu)和微服務(wù)的進(jìn)行了一個描述。這個就是RPC的一個使用場景,也是最常用的一個使用場景。大家只有了解好RPC是什么使用在什么場景才能更好的去使用。
Swoft給我們提供了RPC的底層服務(wù),我們并不需要去關(guān)心底層通訊細(xì)節(jié)和調(diào)用的過程。
Swoft通過定義接口,實現(xiàn)接口,啟動RPC Server 提供接口服務(wù)。我們只需要簡單的寫好幾個類就可以實現(xiàn)一個簡單RPC模塊。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/29092.html
摘要:和服務(wù)關(guān)系最密切的進(jìn)程是中的進(jìn)程組,絕大部分業(yè)務(wù)處理都在該進(jìn)程中進(jìn)行。隨后觸發(fā)一個事件各組件通過該事件進(jìn)行配置文件加載路由注冊。事件每個請求到來時僅僅會觸發(fā)事件。服務(wù)器生命周期和服務(wù)基本一致,詳情參考源碼剖析功能實現(xiàn) 作者:bromine鏈接:https://www.jianshu.com/p/4c0...來源:簡書著作權(quán)歸作者所有,本文已獲得作者授權(quán)轉(zhuǎn)載,并對原文進(jìn)行了重新的排版。S...
摘要:值得一提的是目前的服務(wù)即服務(wù),暫沒有其他的服務(wù)功能,所以基本上相關(guān)的配置指代的就是。會將請求傳遞給各個中間件,最終最終傳遞給處理。源碼剖析系列目錄 作者:bromine鏈接:https://www.jianshu.com/p/411...來源:簡書著作權(quán)歸作者所有,本文已獲得作者授權(quán)轉(zhuǎn)載,并對原文進(jìn)行了重新的排版。Swoft Github: https://github.com/swo...
摘要:關(guān)于推薦使用的就是,是一個使用寫的服務(wù)注冊發(fā)現(xiàn)配置管理系統(tǒng)。遠(yuǎn)程過程調(diào)用,這是一種允許客戶端發(fā)出服務(wù)器請求的請求響應(yīng)機制。 Consul服務(wù)器配置 微服務(wù)帶來最大的好處就是把整個大項目分割成不同的服務(wù),運行在不同服務(wù)器上,實現(xiàn)解耦和分布式處理。微服務(wù)雖然有很多好處,但是也會有不好的一方面。任何事物都會有兩面性,在微服務(wù)里面運維會是一個很大的難題,如果有一天我們的服務(wù)數(shù)量非常的多,然后我...
摘要:歷時年多緊鑼密鼓的開發(fā),以及愉快而忙碌的春節(jié)假期,期間數(shù)從到快破,碼云首頁推薦,作者和社區(qū)的大力支持,正式版終于要和大家見面。此次更新新增了大量特性在易用性代碼復(fù)用性能方面都有所提升??梢杂糜跇?gòu)建高性能的系統(tǒng)中間件基礎(chǔ)服務(wù)等等。 歷時 1 年多緊鑼密鼓的開發(fā),以及愉快而忙碌的春節(jié)假期,期間 github star 數(shù)從 500 到快破 1k,碼云首頁推薦,Swoole作者 Rango ...
摘要:框架組件化改造框架從單體應(yīng)用到組件化改造的架構(gòu)升級之路經(jīng)過一年多的開發(fā)框架功能越來越完善也越來越復(fù)雜初創(chuàng)時期的單體應(yīng)用已經(jīng)無法支撐項目的快速發(fā)展于是開發(fā)組在年前為版制定了組件化改造的重構(gòu)方案內(nèi)容速覽組件化原理包管理基礎(chǔ)知識組件化方案來 date: 2018-3-21 13:22:16title: Swoft| Swoft 框架組件化改造description: Swoft 框架從單體應(yīng)...
閱讀 3769·2021-09-02 15:11
閱讀 4776·2021-08-16 10:47
閱讀 1662·2019-08-29 18:35
閱讀 3181·2019-08-28 17:54
閱讀 2933·2019-08-26 11:37
閱讀 1574·2019-08-23 16:51
閱讀 1897·2019-08-23 14:36
閱讀 1879·2019-08-23 14:21