微服務(wù)架構(gòu)
概述
BizSpring移動全端國際化電商平臺,是建立在Spring Cloud 基礎(chǔ)上的微服務(wù)應(yīng)用尿招,服務(wù)化是系統(tǒng)達到一定規(guī)模以后的必然選擇,主流的互聯(lián)網(wǎng)公司基本都在遷移到服務(wù)化架構(gòu)。
我們的微服務(wù)化架構(gòu)給客戶帶來更多便捷搅方,每個開發(fā)團隊及各人更加專注于自身業(yè)務(wù)的開發(fā)谬哀,每個服務(wù)獨立開發(fā)刺覆、部署、更新可以選擇更加適合的技術(shù)體系史煎,每個服務(wù)只需要對外提供接口隱藏了內(nèi)部復(fù)雜的實現(xiàn)方式對調(diào)用方更加友好谦屑。
Spring Cloud 微服務(wù)架構(gòu)基于 Spring Boot 框架,是由一系列框架式組件組成的篇梭,這些組件包括注冊中心伦仍、服務(wù)網(wǎng)管、服務(wù)調(diào)用很洋、負載均衡充蓝、限流降級等等。
單體服務(wù)架構(gòu)
單體服務(wù)架構(gòu)是前些年使用的一種設(shè)計模式,即用戶交互端+服務(wù)器端架構(gòu)谓苟,將應(yīng)用簡單的分為前端和后端兩部分官脓,前端負責(zé)顯示界面和處理用戶交互,服務(wù)器負責(zé)處理業(yè)務(wù)邏輯和存儲數(shù)據(jù)涝焙。
微服務(wù)架構(gòu)
不同于傳統(tǒng)的單體服務(wù)卑笨,微服務(wù)架構(gòu)是一種將應(yīng)用程序分為多個小型、獨立的服務(wù)的軟件架構(gòu)仑撞。這些服務(wù)可以通過輕量級通信機制進行通信赤兴,每個服務(wù)都有自己的數(shù)據(jù)庫和應(yīng)用程序代碼,每個服務(wù)運行在自己的進程中隧哮。這種模式使得每個服務(wù)可以獨立部署桶良、擴展和維護,從而提高應(yīng)用程序的可靠性沮翔,這種架構(gòu)可以更好地支持快速迭代和部署陨帆,提高開發(fā)效率和靈活性。
微服務(wù)架構(gòu)概述
微服務(wù)架構(gòu)風(fēng)格是一類將單一應(yīng)用程序作為由眾多小型服務(wù)構(gòu)成之套件加以開發(fā)的方式采蚀,其中各項服務(wù)都擁有自己的進程并利用輕量化機制(通常為HTTP源API)實現(xiàn)通信疲牵。這些服務(wù)圍繞業(yè)務(wù)功能建立而成,且憑借自動化部署機制實現(xiàn)獨立部署榆鼠。
微服務(wù)的特點
應(yīng)用程序邏輯分為明確定義的職責(zé)范圍的粒度組件纲爸,這些組件相互協(xié)調(diào)提供解決方案每一個組件都有一個小的職責(zé)領(lǐng)域,可以完全部署妆够,也就是說一個服務(wù)可以跨越多個應(yīng)用程序復(fù)用(獨立部署和維護)服務(wù)之間通信基于一些基本的原則缩焦,如服務(wù)采用http + Json 這樣的輕量級通信協(xié)議,在不同服務(wù)之間進行數(shù)據(jù)交互责静。這樣不同服務(wù)可以使用不同的技術(shù)袁滥,互不影響,采用輕量級的通信協(xié)議作為通信原則灾螃、松耦合题翻。微服務(wù)結(jié)構(gòu)的通用性通過服務(wù)實現(xiàn)應(yīng)用的組件化(按功能拆分、可獨立部署和維護)圍繞業(yè)務(wù)能力組織服務(wù)腰鬼,根據(jù)業(yè)務(wù)不同的需求進行不同組件的使用所做產(chǎn)品非項目化嵌赠,對于平臺具有一定的通用性
微服務(wù)架構(gòu)的五大優(yōu)勢
提高速度和工作效率
微服務(wù)架構(gòu)的最大優(yōu)勢之一是,它將應(yīng)用分解為多個可管理的服務(wù)熄赡,從而解決了速度和工作效率問題姜挺。不同的團隊可以同時開發(fā)不同的應(yīng)用組件。由于微服務(wù)之間在結(jié)構(gòu)上互不依賴彼硫,因此一個團隊永遠不必等待其他團隊完成其工作后再創(chuàng)建或更改微服務(wù)炊豪。另外凌箕,獨立的微服務(wù)更易于定位和修改。每個微服務(wù)均可單獨測試词渤,因此您可以加快質(zhì)量保證流程牵舱。而且能夠在開發(fā)其他組件時測試已開發(fā)好的組件。
圍繞業(yè)務(wù)功能組織實施
微服務(wù)允許根據(jù)業(yè)務(wù)優(yōu)先級來組織團隊和流程缺虐,支持構(gòu)建產(chǎn)品而非項目芜壁,團隊將專注于構(gòu)建業(yè)務(wù)功能,而不是編寫用于粘合各個功能的代碼高氮。因此你所創(chuàng)建的服務(wù)能夠適應(yīng)多種環(huán)境慧妄。可以在多個業(yè)務(wù)流程中重復(fù)使用同一 服務(wù)剪芍,甚至還能夠按需通過不同的業(yè)務(wù)渠道使用同一服務(wù)塞淹。每位團隊成員分別負責(zé)某項服務(wù),從而組成一支分工明確的跨職能團隊紊浩。
輕松構(gòu)建和維護應(yīng)用
微服務(wù)架構(gòu)的最大優(yōu)勢或許支持輕松構(gòu)建和維護應(yīng)用,微服務(wù)旨在化繁為簡疗锐。當(dāng)應(yīng)用被設(shè)計成多個較小的部分時坊谁,便更易于構(gòu)建和維護,管理代碼也變得輕松很多滑臊,因為每個微服務(wù)都是單獨的代碼段口芍。也可以使用不同的數(shù)據(jù)庫、編程語言和軟件環(huán)境來實現(xiàn)服務(wù)雇卷。因此每個服務(wù)都能夠獨立部署鬓椭、構(gòu)建、重新部署和管理关划。如一個微服務(wù)分配了太多的內(nèi)存小染,或者給處理器帶來了繁重的負載。對于微服務(wù)架構(gòu)贮折,這只會影響該特定服務(wù)裤翩,一個微服務(wù)的問題不會影響到整個系統(tǒng)。
提高可擴展性
微服務(wù)的另一大優(yōu)勢是可幫助提高可擴展性调榄。因為每個微服務(wù)都可以自主運行踊赠,因此您能夠更輕松地添加、更新每庆、刪除并擴展單個微服務(wù)筐带。開發(fā)人員可以在不破壞應(yīng)用中其它微服務(wù)的情況下做到這一點。當(dāng)對應(yīng)用的需求增加時缤灵,您只需將更多的資源轉(zhuǎn)移或升級到受需求增加影響的微服務(wù)即可伦籍,甚至可以使用容器自動擴展各個服務(wù)為服務(wù)集群蓝晒。通過只擴展所需的服務(wù),幫助公司節(jié)省大量的服務(wù)器資源成本鸽斟。
提升數(shù)據(jù)安全性
微服務(wù)架構(gòu)有助于提升數(shù)據(jù)安全性拔创。當(dāng)微服務(wù)之間建立連接時,借助安全的API富蓄,您可確保信息僅可供授權(quán)用戶剩燥、應(yīng)用和服務(wù)器訪問。
當(dāng)您的微服務(wù)正在管理敏感的財務(wù)立倍、賬務(wù)相關(guān)業(yè)務(wù)機密性信息灭红,安全的API 支持您全面控制哪些數(shù)據(jù)可供應(yīng)用訪問。
單體服務(wù)架構(gòu)的劣勢
開發(fā)速度緩慢
只能采?同?種技術(shù)口注,很難?不同的語?或者語?不同版本開發(fā)不同功能变擒;
難以升級技術(shù)棧
團隊長期依賴一套相同的技術(shù),單體架構(gòu)使得采用新的框架和編程語言變的及其困難寝志。
系統(tǒng)耦合性強娇斑,
?旦其中?個模塊有問題,整個系統(tǒng)就癱瘓了材部;?旦升級其中?個模塊毫缆,整個系統(tǒng)就停機了,難以擴展乐导,不能做到按需擴展苦丁,只能是擴展整個系統(tǒng)。要上線必須?起上線物臂,互相等待旺拉,?法快速響應(yīng)需求,應(yīng)用程序缺乏故障隔離機制棵磷,因為所有模塊都運行在同一個進程當(dāng)中蛾狗。
服務(wù)不抗壓、穩(wěn)定性差
單體程序缺乏可靠性仪媒,用戶量提升將導(dǎo)致頻繁的系統(tǒng)故障和宕機淘太。
功能越強、代碼越混亂
電商系統(tǒng)本身功能過于龐大和復(fù)雜规丽,于單體系統(tǒng)以至于任何一個開發(fā)者都很難以理解它的全部業(yè)務(wù)蒲牧。這種極度的復(fù)雜度會形成惡性循環(huán),功能越擴展赌莺,越難以下手冰抢。
難以維護
由于電商系統(tǒng)功能模塊諸多過于龐大和復(fù)雜,無論是前期開發(fā)人員還是后期新聘技術(shù)人員都難以新增和維護系統(tǒng)功能艘狭,每一次更改都更容易出錯且更改后其他人更難理解挎扰。
新版發(fā)布周期長翠订,且容易出問題
代碼庫復(fù)雜,以至于一個更改可能引起的影響是未知的遵倦。開發(fā)團隊分為多個小組時尽超,當(dāng)需要發(fā)布新版本的時候漫長的合并和測試時間非常長。
難以聘到技術(shù)人員
對于新手來說梧躺,看到了一坨龐大的代碼似谁,真心是無從下手,你讓他接手或者干點活啥的掠哥,成本都更高的巩踏,且容易犯錯。對于有代碼情操的人续搀,是會立刻走人的塞琼。
BizSpring 電商平臺微服務(wù)架構(gòu)
核心框架:Springboot2、Spring Cloud禁舷、Spring Cloud Alibaba
配置中心:Nacos
負載均衡:Open Feign彪杉、Ribbon
服務(wù)調(diào)用:Feign
服務(wù)容錯:Alibaba Sentinel
API網(wǎng)關(guān):Spring Cloud Gateway
分布式事務(wù):Seata
持久層框架:MyBatis-plus
高性能緩存:Redis 、Redis Cluster
分布式鎖:Redisson
文件管理:Alibaba oss /七牛云/騰訊cos/Minio
SMS短信:Alibaba SMS
安全:JWT+oauth2
數(shù)據(jù)庫:Mysql8+
API管理:Swagger2
搜索引擎:Elasticsearch 7.6.2
JDK版本:Java8+
管理平臺框架:Vue3+ElementPlus
商家平臺框架:Uni-app(一套代碼牵咙,多端發(fā)布)
商城平臺框架:Uni-app(一套代碼派近,多端發(fā)布)
BizSpring商城的架構(gòu)優(yōu)勢
BizSpring 電商平臺使用業(yè)內(nèi)最優(yōu)秀的服務(wù)設(shè)計理念,將電商整套流程包括商品(product)霜大、訂單(order)构哺,店鋪(store)革答、營銷(marketing)分別建設(shè)為不同的服務(wù)战坤,降低了電商系統(tǒng)業(yè)務(wù)的耦合性、各服務(wù)可單獨部署残拐,用戶量攀升的期途茫,將業(yè)務(wù)壓力較大的服務(wù)可建集群,進一步分擔(dān)平臺壓力溪食,頂級式提高架構(gòu)的擴展性囊卜。于開發(fā)人員將能更簡捷的自己業(yè)務(wù)范圍的功能實現(xiàn)完善好。
Elasticsearch搜素引擎
Elasticsearch 為架構(gòu)提供高效的搜索和聚合功能错沃,支持實時數(shù)據(jù)處理,在商城數(shù)據(jù)寫入時立即建立索引。支持多種查詢語句圆存,并能夠快速地搜索和處理商品店归、訂單、評論醒叁、售后的大量數(shù)據(jù)搜索司浪。
Redis集群存儲平臺緩存
使用redis集群存儲平臺緩存泊业,提升數(shù)據(jù)可靠性,提高讀寫能力啊易,提高了系統(tǒng)運行中緩存的穩(wěn)定性吁伺。
Nacos注冊中心
BizSpring中服務(wù)啟動后將自己注冊到注冊中心(Nacos),調(diào)用方調(diào)用時到注冊中心查詢可用的服務(wù)然后完成調(diào)用租谈。注冊中心的穩(wěn)定性直接影響了整個微服務(wù)架構(gòu)的可靠性篮奄,所以注冊中心的選型至關(guān)重要。
OpenFeign Ribbon負載均衡
BizSpring 服務(wù)調(diào)用使用 OpenFeign 和 Ribbon 配合完成垦垂,OpenFeign實現(xiàn)服務(wù)調(diào)用Ribbon做到負載均衡宦搬。