溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

發(fā)布時(shí)間:2021-10-18 09:24:56 來(lái)源:億速云 閱讀:168 作者:柒染 欄目:大數(shù)據(jù)

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

       Java電商系統(tǒng)的架構(gòu)10年前還是SSH的天下,那時(shí)候基本都是采用Strurt + Spring + Hibernate/Mybatis這些當(dāng)時(shí)當(dāng)時(shí)最流行技術(shù)來(lái)構(gòu)建。但是這個(gè)世界沒有一招鮮的事情, IT技術(shù)的發(fā)展比其他行業(yè)都要快, 新舊知識(shí)的迭代特別快,很多流行的技術(shù)就只是流行一段時(shí)間又快速的凋零,導(dǎo)致系統(tǒng)要不斷的更新其技術(shù)體系以保證其技術(shù)的先進(jìn)性。由于舊知識(shí)很快要過(guò)保質(zhì)期,導(dǎo)致很多IT人員要不斷的積累和學(xué)習(xí)新的知識(shí),稍有松懈馬上就會(huì)遇到中年危機(jī)。 中年危機(jī)的本質(zhì)是由于身體、家庭的原因?qū)е聦W(xué)習(xí)新知識(shí)的速度和意愿都下降了, 知識(shí)積累的速度和范圍跟不上時(shí)代的發(fā)展,所以很多IT從業(yè)人員在35-40歲就要被迫離開這個(gè)行業(yè)了。這個(gè)是很殘酷的話題,但是正因?yàn)檫@個(gè)行業(yè)發(fā)展比較快,所以才給新人帶來(lái)各種機(jī)會(huì),給小公司帶來(lái)彎道超車并成功的可能,只要抓住一個(gè)點(diǎn)不斷的發(fā)力去打磨,就算是大公司再多的資本也是無(wú)法應(yīng)對(duì),因?yàn)槟莻€(gè)突破點(diǎn)太多了,不可能每個(gè)點(diǎn)都能面面俱到。資源投入到那個(gè)方向和執(zhí)行力如何決定了一家公司的高度。

      以上說(shuō)明了信息科技這個(gè)行業(yè),變化是唯一不變的真理。我們能做的只是不斷的擁抱變化, 想要一勞永逸、一夜暴富的心態(tài)還是要不得。

      言歸正傳,在互聯(lián)網(wǎng)產(chǎn)業(yè)飛速變革的今天,系統(tǒng)的架構(gòu)也要不斷的發(fā)展,才能發(fā)揮更好的開發(fā)效率。一般的系統(tǒng)會(huì)經(jīng)歷了以下幾個(gè)階段的架構(gòu)變化。

  1. 標(biāo)準(zhǔn)的SSH的單體應(yīng)用, 一個(gè)war包打天下,所有的功能都放在一個(gè)應(yīng)用里,這種做法部署和集群部署都比較容易,成本低;

  2. 按功能垂直劃分的多個(gè)子應(yīng)用,多個(gè)war包一起部署,組成一個(gè)完整的系統(tǒng)。這種做法靈活度有所提高, 可以按功能來(lái)劃分開發(fā)小組;

  3. 微服務(wù)系統(tǒng),目前比較流行的是采用spring cloud/dubbo這些微服務(wù)框架做前后端的分離開發(fā)模式。橫向把前端和后端從人員架構(gòu)上分離開來(lái),用于減少對(duì)人員的綜合素質(zhì)要求?,F(xiàn)在前端的技術(shù)發(fā)展日新月異,已經(jīng)很難做到一個(gè)人能做到前后端通吃,前端包括IOS、Android、WAP、各種小程序等, 所有前端都要共用同一套后臺(tái)接口,后端的開發(fā)同事只要提供RESTFUL風(fēng)格的接口,通過(guò)swagger等技術(shù)手段把接口暴露給前端調(diào)用即可。

       從一個(gè)普通SSH/SSM架構(gòu)的系統(tǒng)升級(jí)上來(lái)到底是spring cloud更合適還是dubbo更合適呢? 因?yàn)閐ubbo曾經(jīng)停止更新過(guò)一段時(shí)間,因此目前收到的反饋是大多數(shù)公司都會(huì)優(yōu)先選擇spring cloud,但是在實(shí)踐的過(guò)程又發(fā)現(xiàn)在原有的系統(tǒng)上升級(jí)上來(lái)的話采用dubbo會(huì)更容易修改,但是新系統(tǒng)的話還是會(huì)優(yōu)先選擇采用spring cloud,因?yàn)閟pring cloud的生態(tài)更加完善。但是阿里最近又在重新維護(hù)dubbo,并且新開源了一套叫spring cloud alibaba的開源微服務(wù)產(chǎn)品,Spring Cloud Alibaba和Spring Cloud的關(guān)系是怎么樣的呢? Spring Cloud Alibaba(以下簡(jiǎn)稱SCA)和Spring Cloud Netflix(以下簡(jiǎn)稱SCN)一樣,都是Spring Cloud規(guī)范的一套實(shí)現(xiàn)??匆幌滤麄冎g的差異:

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

       可見這2套系統(tǒng)的原理都一樣的, 阿里巴巴的版本想要通過(guò)利用spring cloud的生態(tài)來(lái)拉攏spring cloud的程序員,有點(diǎn)師夷長(zhǎng)技以制夷的味道。這個(gè)版本提供了一個(gè)比較好用的配置中心、注冊(cè)中心Nacos和熔斷器Sentinel, 這些組件能同時(shí)兼容spring cloud和dubbo, 為spring cloud和dubbo的融合和同時(shí)使用提供了便利性, 而且比以前的組件更強(qiáng)大和更容易使用了。

  1. 體系架構(gòu)

         總結(jié)以上的分析,以下是朗尊軟件的架構(gòu)師何文強(qiáng)所帶來(lái)的技術(shù)分享。以LegendShop電商系統(tǒng)為例, 先看一下整體的解決方案:

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

結(jié)合圖中所示,下面是這套電商系統(tǒng)所采用的技術(shù)的主要的技術(shù)棧。

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

  1. 通過(guò) API 的設(shè)計(jì)解耦,把整個(gè)系統(tǒng)根據(jù)業(yè)務(wù)拆分成若干個(gè)子系統(tǒng)或微服務(wù)

               客戶端通過(guò)API gateway來(lái)訪問內(nèi)部的應(yīng)用, 通過(guò)gateway來(lái)實(shí)現(xiàn)黑白名單,路由控制,權(quán)限控制等。一個(gè)后臺(tái)可以同時(shí)支持多個(gè)客戶端。

    2. 每個(gè)子系統(tǒng)可以部署多個(gè)應(yīng)用,多個(gè)應(yīng)用之間使用負(fù)載均衡

              每個(gè)服務(wù)會(huì)占用一個(gè)端口,同一個(gè)服務(wù)可以啟動(dòng)多個(gè)實(shí)例。

    3.  服務(wù)注冊(cè)中心和配置中心都采用Nacos,所有的服務(wù)都在注冊(cè)中心注冊(cè),負(fù)載均衡也是通過(guò)在注冊(cè)中心注冊(cè)的服務(wù)來(lái)使用一定策略來(lái)實(shí)現(xiàn),以下是Nacos的截圖。

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

    4.   使用 OAuth3 認(rèn)證完善外部交互的安全機(jī)制

     客戶端在調(diào)用gateway或者內(nèi)部API的時(shí)候需要系統(tǒng)授權(quán)才行,要不就無(wú)法保證系統(tǒng)安全。本方案采用Oauth3進(jìn)行權(quán)限驗(yàn)證, 每個(gè)調(diào)用方都會(huì)分配一個(gè)appId和secretKey, 用戶調(diào)用API之前需要用appId和secretKey來(lái)?yè)Q取合法的token,然后通過(guò)token來(lái)訪問系統(tǒng)的功能。OAuth3 是為用戶資源的授權(quán)提供的一個(gè)安全、開放、簡(jiǎn)易的標(biāo)準(zhǔn)協(xié)議。OAuth3 的授權(quán)不會(huì)使第三方觸及到用戶的帳號(hào)信息,非常安全。而且任何第三方都可以使用 OAuth3 認(rèn)證服務(wù),在這套架構(gòu)里,每一次來(lái)自外部的對(duì)微服務(wù)的請(qǐng)求,都要通過(guò) OAuth3 服務(wù)器驗(yàn)證。OAuth3 在此統(tǒng)一了眾多微服務(wù)的安全機(jī)制,并且將安全做到了微服務(wù)級(jí)別而不是網(wǎng)關(guān)級(jí)別。

   2. 敏捷開發(fā)

        關(guān)于敏捷開發(fā),不得不提的是DevOps(Development和Operations的組合詞)。從百度得來(lái)的定義,DevOps是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它是一種重視“軟件開發(fā)人員(Dev)”和“IT運(yùn)維技術(shù)人員(Ops)”之間溝通合作的文化、運(yùn)動(dòng)或慣例。透過(guò)自動(dòng)化“軟件交付”和“架構(gòu)變更”的流程,來(lái)使得構(gòu)建、測(cè)試、發(fā)布軟件能夠更加地快捷、頻繁和可靠。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識(shí)到:為了按時(shí)交付軟件產(chǎn)品和服務(wù),開發(fā)和運(yùn)維工作必須緊密合作。

  2.1 版本控制

       開發(fā)這塊目前是使用git來(lái)做版本控制,git的基本用法遵循以下的原則進(jìn)行裁剪。

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

Master和develop分支是長(zhǎng)期存在的分支,如果有bug出現(xiàn)的話就從打bug分支修改完再合并到develop分支。再由develop分支合并到master分支上,最后出版本從master版本上獲取代碼即可。

2.2 持續(xù)集成

     另外一個(gè)持續(xù)集成的工具優(yōu)先采用Jenkins,其截圖如下:

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

Jenkins是一個(gè)功能強(qiáng)大的應(yīng)用程序,允許持續(xù)集成和持續(xù)交付項(xiàng)目,無(wú)論用的是什么平臺(tái)。這是一個(gè)免費(fèi)的源代碼,可以處理任何類型的構(gòu)建或持續(xù)集成。集成Jenkins可以用于一些測(cè)試和部署技術(shù)。Jenkins是一種軟件允許持續(xù)集成。

大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

Jenkins跟git/svn等這些代碼管理工具緊密工作,方便整個(gè)開發(fā)和部署。

2.3 Docker部署

由于微服務(wù)會(huì)分成比較多的獨(dú)立運(yùn)行的系統(tǒng), 如果都是手工部署的話,會(huì)比較繁瑣。因此不利于系統(tǒng)的長(zhǎng)期穩(wěn)定發(fā)展,采用Docker安裝的話,會(huì)化簡(jiǎn)整個(gè)部署的步驟,并且提高了系統(tǒng)的安全性。系統(tǒng)部署的結(jié)構(gòu)如下:

  大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程

      每個(gè)微服務(wù)都是獨(dú)立運(yùn)行的一個(gè)子系統(tǒng)。

    從百度得知,Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。 實(shí)踐中會(huì)發(fā)現(xiàn),生產(chǎn)環(huán)境中使用單個(gè) Docker 節(jié)點(diǎn)是遠(yuǎn)遠(yuǎn)不夠的,搭建 Docker 集群勢(shì)在必行。然而,面對(duì) Kubernetes, Mesos 以及 Swarm 等眾多容器集群系統(tǒng),我們?cè)撊绾芜x擇呢?它們之中,Swarm 是 Docker 原生的,同時(shí)也是最簡(jiǎn)單,最易學(xué),最節(jié)省資源的,因此把Swarm作為系統(tǒng)的集群部署的解決方案。

Docker容器應(yīng)用的開發(fā)和運(yùn)行離不開可靠的鏡像管理,雖然Docker官方也提供了公共的鏡像倉(cāng)庫(kù),但是從安全和效率等方面考慮,部署我們私有環(huán)境內(nèi)的Registry也是非常必要的。Harbor是由VMware公司開源的企業(yè)級(jí)的Docker Registry管理項(xiàng)目,它包括權(quán)限管理(RBAC)、LDAP、日志審核、管理界面、自我注冊(cè)、鏡像復(fù)制和中文支持等功能。

       采用Docker部署各種常規(guī)應(yīng)用非常簡(jiǎn)單, 只要一條命令或者一個(gè)yml文件即可。由于本文不是重點(diǎn)講解如何使用Docker,因此一筆帶過(guò),請(qǐng)參考筆者其他的關(guān)于如何安裝Docker,Docker-compose、 Docker-swarm的文章。

  1. 總結(jié)

        系統(tǒng)的升級(jí)和優(yōu)化永無(wú)止境,只能根據(jù)實(shí)際情況不斷的調(diào)整和優(yōu)化。微服務(wù)帶來(lái)的好處是能將系統(tǒng)細(xì)分為不同的子模塊, 適合中大型的系統(tǒng)開發(fā)。因?yàn)殡娚滔到y(tǒng)是跟客戶打交道的銷售型系統(tǒng),這個(gè)行業(yè)性質(zhì)跟企業(yè)內(nèi)部使用的系統(tǒng)不一樣,決定了電商系統(tǒng)要做強(qiáng)做大的話,客戶量會(huì)有數(shù)個(gè)數(shù)量級(jí)的差別。而且客戶會(huì)提出各種各樣的需求,功能和界面也要跟著節(jié)日或者潮流來(lái)變化。所以這個(gè)微服務(wù)版本是針對(duì)多金客戶來(lái)使用比較合適,服務(wù)器和人力的消耗都比較多。 有些客戶一上來(lái)就說(shuō)我要做一個(gè)淘寶,做一個(gè)京東,我要分表分庫(kù)。拜托,還是理智一點(diǎn)好。 不過(guò)微服務(wù)版本的電商系統(tǒng)也給了客戶一個(gè)能做夢(mèng)的基礎(chǔ)。

        將來(lái)的10年是傳統(tǒng)線下行業(yè)向線上滲透的年代。對(duì)一般的中小型客戶使用集群版本就可以了。再小一點(diǎn)我只要做生意賣貨而已, 沒有什么特殊的需求,那就采用SAAS版本就好了。SAAS + PASS才是將來(lái)發(fā)展的道路, 畢竟專人做專事。

關(guān)于大型電商系統(tǒng)架構(gòu)的微服務(wù)與敏捷開發(fā)實(shí)踐方法教程問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI