日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
還不懂微服務(wù)原理?阿里高級(jí)技術(shù)專家?guī)憧赐肝⒎?wù)的來龍去脈

 我們先看下維基百科和百度百科給出的定義:

維基百科:2014年,Martin Fowler 與 James Lewis 共同提出了微服務(wù)的概念,定義了微服務(wù)是由以單一應(yīng)用程序構(gòu)成的小服務(wù),自己擁有自己的行程與輕量化處理,服務(wù)依業(yè)務(wù)功能設(shè)計(jì),以全自動(dòng)的方式部署,與其他服務(wù)使用 HTTP API 通信。同時(shí)服務(wù)會(huì)使用最小的規(guī)模的集中管理 (例如 Docker) 能力,服務(wù)可以用不同的編程語言與數(shù)據(jù)庫等組件實(shí)現(xiàn)。

百度百科:所謂的微服務(wù)是SOA架構(gòu)下的最終產(chǎn)物,該架構(gòu)的設(shè)計(jì)目標(biāo)是為了肢解業(yè)務(wù),使得服務(wù)能夠獨(dú)立運(yùn)行。

微服務(wù)設(shè)計(jì)原則:1、各司其職 2、服務(wù)高可用和可擴(kuò)展性

概念還是比較抽象的,接下來,我將從單體應(yīng)用開始,講解為什么會(huì)有微服務(wù)以及什么是微服務(wù)。

一、單體應(yīng)用

在初期,互聯(lián)網(wǎng)公司的應(yīng)用技術(shù)棧大致分為 LAMP(Linux + Apache + MySQL + PHP)和 MVC(Spring + iBatis/Hibernate + Tomcat)兩大流派。兩者都是為單體應(yīng)用架構(gòu)設(shè)計(jì)的,其優(yōu)點(diǎn)是學(xué)習(xí)成本低,開發(fā)上手快,測(cè)試、部署、運(yùn)維也比較方便。

以 MVC 架構(gòu)為例,業(yè)務(wù)通常是通過部署一個(gè) War 包到 Tomcat 中,然后啟動(dòng) Tomcat,監(jiān)聽某個(gè)端口即可對(duì)外提供服務(wù)。早期在業(yè)務(wù)規(guī)模不大、開發(fā)團(tuán)隊(duì)人員規(guī)模較小的時(shí)候,采用單體應(yīng)用架構(gòu),團(tuán)隊(duì)的開發(fā)和運(yùn)維成本都可控。

然而隨著業(yè)務(wù)規(guī)模的不斷擴(kuò)大,團(tuán)隊(duì)開發(fā)人員的不斷擴(kuò)張,單體應(yīng)用架構(gòu)就會(huì)開始出現(xiàn)問題,大概會(huì)有以下幾個(gè)方面的問題。

部署效率低:當(dāng)單體應(yīng)用的代碼越來越多,依賴的資源越來越多時(shí),應(yīng)用編譯打包、部署測(cè)試一次,甚至需要 10 分鐘以上。

團(tuán)隊(duì)協(xié)作開發(fā)成本高:當(dāng)團(tuán)隊(duì)人員擴(kuò)張,多人修改代碼,然后一起打包部署,測(cè)試階段只要有一塊功能有問題,就得重新編譯打包部署,然后重新預(yù)覽測(cè)試,所有相關(guān)的開發(fā)人員又都得參與其中,效率低下,開發(fā)成本極高。

系統(tǒng)高可用性差:因?yàn)樗械墓δ荛_發(fā)最后都部署到同一個(gè) War 包里,運(yùn)行在同一個(gè) Tomcat 進(jìn)程之中,一旦某一功能涉及的代碼或者資源有問題,那就會(huì)影響整個(gè) WAR 包中部署的功能。

線上發(fā)布變慢:一旦代碼膨脹,服務(wù)啟動(dòng)的時(shí)間就會(huì)變長。因此,急需一種方法能夠?qū)?yīng)用的不同模塊的解耦,降低開發(fā)和部署成本。

想要解決上面這些問題,服務(wù)化的思想也就應(yīng)運(yùn)而生。

二、服務(wù)化

服務(wù)化就是把傳統(tǒng)的單機(jī)應(yīng)用中通過 JAR 包依賴產(chǎn)生的本地方法調(diào)用,改造成通過 RPC 接口產(chǎn)生的遠(yuǎn)程方法調(diào)用。在編寫業(yè)務(wù)代碼時(shí),對(duì)于通用的業(yè)務(wù)邏輯,把它抽象并獨(dú)立成為專門的模塊,對(duì)于代碼復(fù)用和業(yè)務(wù)理解有很大的好處。

以微博系統(tǒng)為例,微博既包含了內(nèi)容模塊,也包含了消息模塊和用戶模塊等。其中消息模塊依賴內(nèi)容模塊,消息模塊和內(nèi)容模塊又都依賴用戶模塊。當(dāng)這三個(gè)模塊的代碼耦合在一起,應(yīng)用啟動(dòng)時(shí),需要同時(shí)去加載每個(gè)模塊的代碼并連接對(duì)應(yīng)的資源。一旦任何模塊的代碼出現(xiàn) bug,或者依賴的資源出現(xiàn)問題,整個(gè)單體應(yīng)用都會(huì)受到影響。

為此,首先可以把用戶模塊從單體應(yīng)用中拆分出來,獨(dú)立成一個(gè)服務(wù)部署,以 RPC 接口的形式對(duì)外提供服務(wù)。微博和消息模塊調(diào)用用戶接口,就從進(jìn)程內(nèi)的調(diào)用變成遠(yuǎn)程 RPC 調(diào)用。這樣,用戶模塊就可以獨(dú)立開發(fā)、測(cè)試、上線和運(yùn)維,可以交由專門的團(tuán)隊(duì)來做,與主模塊不耦合。進(jìn)一步的可以再把消息模塊也拆分出來作為獨(dú)立的模塊,交由專門的團(tuán)隊(duì)來開發(fā)和維護(hù)。

可見通過服務(wù)化,可以解決單體應(yīng)用膨脹、團(tuán)隊(duì)開發(fā)耦合度高、協(xié)作效率低下的問題。

三、微服務(wù)

從 2014 年開始,容器化技術(shù)的成熟以及 DevOps 文化的興起,服務(wù)化的思想進(jìn)一步演變?yōu)槲⒎?wù)。

微服務(wù)相比于服務(wù)化的不同可總結(jié)為以下四點(diǎn):

服務(wù)拆分粒度更細(xì):微服務(wù)可以說是更細(xì)維度的服務(wù)化,小到一個(gè)子模塊,只要該模塊依賴的資源與其他模塊都沒有關(guān)系,那么就可以拆分為一個(gè)微服務(wù)。

服務(wù)獨(dú)立部署:每個(gè)微服務(wù)都嚴(yán)格遵循獨(dú)立打包部署的準(zhǔn)則,互不影響。比如一臺(tái)物理機(jī)上可以部署多個(gè) Docker 實(shí)例,每個(gè) Docker 實(shí)例可以部署一個(gè)微服務(wù)的代碼。

服務(wù)獨(dú)立維護(hù):每個(gè)微服務(wù)都可以交由一個(gè)小團(tuán)隊(duì)甚至個(gè)人來開發(fā)、測(cè)試、發(fā)布和運(yùn)維,并對(duì)整個(gè)生命周期負(fù)責(zé)。

服務(wù)治理能力要求高:因?yàn)椴鸱譃槲⒎?wù)之后,服務(wù)的數(shù)量變多,因此需要有統(tǒng)一的服務(wù)治理平臺(tái),來對(duì)各個(gè)服務(wù)進(jìn)行管理。

以微博系統(tǒng)為例,可以進(jìn)一步對(duì)內(nèi)容模塊的功能進(jìn)行拆分,比如內(nèi)容模塊又包含了 feed 模塊、評(píng)論模塊和個(gè)人頁模塊。通過微服務(wù)化,將這三個(gè)模塊變成三個(gè)獨(dú)立的服務(wù),每個(gè)服務(wù)依賴各自的資源,并獨(dú)立部署在不同的服務(wù)池中,可以由不同的開發(fā)人員進(jìn)行維護(hù)。當(dāng)評(píng)論服務(wù)需求變更時(shí),只需要修改評(píng)論業(yè)務(wù)相關(guān)的代碼,并獨(dú)立上線發(fā)布;而 feed 服務(wù)和個(gè)人頁服務(wù)不需要變更,也不會(huì)受到發(fā)布可能帶來的變更影響。

由此可見,微服務(wù)化給服務(wù)的發(fā)布和部署,以及服務(wù)的保障帶來了諸多好處。

四、單體應(yīng)用和微服務(wù)應(yīng)用的區(qū)別

單體式應(yīng)用微服務(wù)應(yīng)用進(jìn)程數(shù)將所有功能放到同一個(gè)進(jìn)程中將功能的每個(gè)元素放置到分離的多個(gè)服務(wù)進(jìn)程中拓展方式通過復(fù)制整個(gè)應(yīng)用到多臺(tái)服務(wù)器實(shí)現(xiàn)拓展通過將不同的服務(wù)分布于不同的服務(wù)器,并按需復(fù)制服務(wù)的方式實(shí)現(xiàn)拓展快速響應(yīng)變更部分更新,都需要重新部署整個(gè)應(yīng)用部署和升級(jí)都是獨(dú)立的,有助于大大提高系統(tǒng)變更的敏捷性團(tuán)隊(duì)結(jié)構(gòu)團(tuán)隊(duì)結(jié)構(gòu)呈現(xiàn)垂直化,每個(gè)團(tuán)隊(duì)專門負(fù)責(zé)專門的一塊團(tuán)隊(duì)結(jié)構(gòu)呈現(xiàn)扁平化,每個(gè)團(tuán)隊(duì)服務(wù)一整個(gè)業(yè)務(wù)能力可用性一個(gè)服務(wù)的不穩(wěn)定可能導(dǎo)致整個(gè)應(yīng)用出現(xiàn)問題一個(gè)服務(wù)不穩(wěn)定,影響范圍比較小創(chuàng)新性很難引入新的技術(shù)和框架,所有功能都使用的同一種框架每個(gè)微服務(wù)可以使用不同的語言和框架,引入新技術(shù)方便

五、總結(jié)

由單體應(yīng)用進(jìn)化到服務(wù)化拆分部署,隨著移動(dòng)互聯(lián)網(wǎng)規(guī)模的不斷擴(kuò)大,敏捷開發(fā)、持續(xù)交付、DevOps 理論的發(fā)展和實(shí)踐,以及容器化技術(shù)的成熟,微服務(wù)架構(gòu)開始流行。

微服務(wù)的核心在于服務(wù)治理,微服務(wù)架構(gòu)是將復(fù)雜臃腫的單體應(yīng)用進(jìn)行細(xì)粒度的服務(wù)化拆分,每個(gè)拆分出來的服務(wù)各自獨(dú)立打包部署,并交由小團(tuán)隊(duì)進(jìn)行開發(fā)和運(yùn)維,從而極大地提高了應(yīng)用交付的效率。


分享題目:還不懂微服務(wù)原理?阿里高級(jí)技術(shù)專家?guī)憧赐肝⒎?wù)的來龍去脈
網(wǎng)址分享:http://www.dlmjj.cn/article/cosjhee.html