JAVA 多用戶商城系統(tǒng)b2b2c-spring cloud 概述

什么是微服務(wù)?

微服務(wù)沒有一個(gè)標(biāo)準(zhǔn)統(tǒng)一的概念,個(gè)人理解為:微服務(wù)是一種可以讓軟件職責(zé)單一、松耦合、自包含、可以獨(dú)立運(yùn)行和部署的架構(gòu)思想。
關(guān)鍵思想就是:拆分、單一、獨(dú)立、組件化。把原本一個(gè)龐大、復(fù)雜的項(xiàng)目按業(yè)務(wù)邊界拆分一個(gè)一個(gè)獨(dú)立運(yùn)行的小項(xiàng)目,通過接口的方式組裝成一個(gè)大的項(xiàng)目。

微服務(wù)解決了什么問題?

微服務(wù)的出現(xiàn)及流行,一定有它的過人之處,既解決了非微服務(wù)項(xiàng)目的部分問題或缺點(diǎn)。

相對(duì)于微服務(wù),普通的項(xiàng)目都會(huì)包含很多功能的,是一個(gè)大而全的“超級(jí)”工程。比如:以普通架構(gòu)方式實(shí)現(xiàn)的電商平臺(tái)會(huì)是一個(gè)包含:登錄、權(quán)限、會(huì)員、商品庫存、訂單、收藏、關(guān)注、購物車等功能的單一項(xiàng)目。隨著項(xiàng)目業(yè)務(wù)越來越復(fù)雜、開發(fā)人員越來越多相應(yīng)開發(fā)、編譯、部署、技術(shù)擴(kuò)展、水平擴(kuò)展都會(huì)受到限制。

開發(fā)

太多功能在一個(gè)項(xiàng)目中,可能會(huì)讓代碼復(fù)雜、結(jié)構(gòu)混亂、業(yè)務(wù)關(guān)聯(lián)混亂、技術(shù)單一。過多的功能,讓整個(gè)項(xiàng)目結(jié)構(gòu)復(fù)雜,業(yè)務(wù)相互交織,可能導(dǎo)致開發(fā)人員對(duì)業(yè)務(wù)的理解和代碼實(shí)現(xiàn)相互交織,最后沒人能完全理解整個(gè)項(xiàng)目。而且也很難控制每個(gè)開發(fā)人員能“合法合規(guī)”的編碼,可能會(huì)把兩個(gè)本來松耦合、互不影響的功能因?yàn)閷?shí)現(xiàn)“簡單”就偷懶強(qiáng)關(guān)聯(lián)在一起。

技術(shù)單一

單一的項(xiàng)目為了技術(shù)的統(tǒng)一和管理的簡單方便,一般都會(huì)采用統(tǒng)一的技術(shù)實(shí)現(xiàn)。但是超大型業(yè)務(wù)如電商平臺(tái),不可能只采用一種技術(shù)(如:java),可能會(huì)結(jié)合業(yè)務(wù)及不同技術(shù)優(yōu)缺點(diǎn)和技術(shù)團(tuán)隊(duì)優(yōu)執(zhí)采用不同的技術(shù)。如果把項(xiàng)目拆分成不同的小項(xiàng)目,每個(gè)小項(xiàng)目可以根據(jù)自己的特點(diǎn)采用不同技術(shù),只需要提供統(tǒng)一的接口實(shí)現(xiàn)對(duì)接即可,最大化技術(shù)的優(yōu)勢。

編譯

過于龐大的代碼也會(huì)導(dǎo)致整個(gè)項(xiàng)目編譯時(shí)間過長,一次簡單的修改或一個(gè)簡單的單元測試需要漫長的編譯和啟動(dòng)。

版本控制

過多的開發(fā)人員在同一個(gè)項(xiàng)目中共同開發(fā)不同業(yè)務(wù)模塊,也會(huì)大大增加版本沖突。

部署

一個(gè)簡單的修改需要部署整個(gè)項(xiàng)目。當(dāng)多個(gè)功能同時(shí)上線,但僅僅因?yàn)橐粋€(gè)小功能失敗,就會(huì)導(dǎo)致其它所有功能一起回滾。

擴(kuò)展

互聯(lián)網(wǎng)的飛速發(fā)展,用戶和請求量急劇增加,傳統(tǒng)的項(xiàng)目很難擴(kuò)展(水平、垂直),即集群和分布式擴(kuò)展的問題。

微服務(wù)如何解決上面問題?

以上就是單個(gè)(單體)大項(xiàng)目的問題,微服務(wù)就是要解決上面的問題。

核心思路很簡單,就是拆分,即然是單體項(xiàng)目的問題,那么直接把項(xiàng)目拆分成一個(gè)個(gè)小項(xiàng)目是不是就可以完美解決。

微服務(wù)有哪些缺點(diǎn)?

然而,這并不是銀彈,也不是最完美的解決方案。微服務(wù)有自己的優(yōu)點(diǎn),也帶來了相應(yīng)的劣勢。具體如下:

如何拆分:微服務(wù)的核心就是拆分項(xiàng)目,把整個(gè)項(xiàng)目模塊化、組件化;職責(zé)更單一,精中力量做好一件事。但是如何拆分才是合理的?通常的作法是,按業(yè)務(wù)拆分,功能從業(yè)務(wù)上分類,非常耦合的分在同一個(gè)微服務(wù)中;反之,耦合性非常低的則放到不同的微服務(wù)。

事務(wù):原本在同一個(gè)項(xiàng)目中的兩個(gè)操作,如果拆分到不同的項(xiàng)目中,那么就可能會(huì)遇到分布式事務(wù)的問題。這是一個(gè)棘手但沒有完美解決方案的問題?;驹瓌t是,需要在同一事務(wù)中實(shí)現(xiàn)的兩個(gè)操作屬于強(qiáng)耦合業(yè)務(wù),最好拆分到同一個(gè)微服務(wù)。如果確實(shí)是兩個(gè)微服務(wù)(如:減庫存、扣款)則通過其它方式(如:消息隊(duì)列、分布式事務(wù)鎖、重試機(jī)制、對(duì)賬)來解決

spring cloud

微服務(wù)是一個(gè)架構(gòu)思想,并不是一種實(shí)現(xiàn),它指明了解決單體應(yīng)該缺點(diǎn)的方向,但并沒有給定相應(yīng)的實(shí)現(xiàn)和解決方案以及細(xì)節(jié)。

spring cloud是spring提供的,基于spring boot以及結(jié)合Netflix 相關(guān)思想和代碼對(duì)微服務(wù)理念的java實(shí)現(xiàn)。spring cloud本質(zhì)上是分布式解決方案,但微服務(wù)最終也落實(shí)到分布式,因此也是對(duì)微服務(wù)的實(shí)現(xiàn)方案。

Spring Cloud 為開發(fā)人員提供了一些可以用于快速構(gòu)建分布式系統(tǒng)通用模式的工具(例如:配置管理、服務(wù)注冊與發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線)。分布式系統(tǒng)的協(xié)調(diào)趨于一些模版模式, 并且,使用Spring Cloud使開發(fā)人員可以快速創(chuàng)建實(shí)現(xiàn)了這些模式的服務(wù)和應(yīng)用。 他們可以在任何的分布式環(huán)境中良好運(yùn)行,這些環(huán)境包括開發(fā)人員自己的筆記本、裸機(jī)上的數(shù)據(jù)中心、像Cloud Foundry這樣的托管平臺(tái)(云平臺(tái))。

spring cloud主要提供了分布系統(tǒng)中以下幾個(gè)開箱即用的功能:

分布式/版本化/集中化配置 - spring cloud config 服務(wù)注冊發(fā)現(xiàn) - Netflix Eureka 路由 - Netflix Zuul 服務(wù)之間的點(diǎn)對(duì)點(diǎn)調(diào)用(Service-to-service calls)負(fù)載均衡-Netflix Ribbon 斷路器 - Netflix Hystrix 分布式消息

五大核心組件:

服務(wù)注冊發(fā)現(xiàn) - Netflix Eureka

配置中心 - spring cloud config

負(fù)載均衡-Netflix Ribbon

斷路器 - Netflix Hystrix

路由(網(wǎng)關(guān)) - Netflix Zuul
電子商務(wù)社交平臺(tái)源碼請加企鵝求求:三五三六二四七二五九

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是微服務(wù)?微服務(wù)沒有一個(gè)標(biāo)準(zhǔn)統(tǒng)一的概念,個(gè)人理解為:微服務(wù)是一種可以讓軟件職責(zé)單一、松耦合、自包含、可以獨(dú)立運(yùn)...
    ITsupuerlady閱讀 197評(píng)論 0 0
  • 1 泡腳 拍打 健康 2 堅(jiān)持第一件事讀《聰明的投資者》 3 工作上不太專業(yè),沒關(guān)系,抓主要矛盾 4 樂高的想法得...
    cwzyzh閱讀 173評(píng)論 0 1
  • 僅為筆記,便于自己查找,資料來源于:http://www.cnblogs.com/zxin/archive/201...
    哎呦哎呦小葵花閱讀 485評(píng)論 0 0
  • 鋼琴 有一架鋼琴 要和我重述一段關(guān)系 像糧食和酒 一方的悲劇 釀成另一方的精華 從它的身上一點(diǎn)一滴掉落 濃密厚重的...
    蘇蘇諾閱讀 543評(píng)論 0 6
  • 在短視頻領(lǐng)域,現(xiàn)在大家都有一個(gè)共識(shí),那就是做電商短視頻比較賺錢,往往一 個(gè)不到1分鐘的視頻,費(fèi)用就要幾千甚至上萬不...
    因?yàn)樽詮姆砰_閱讀 3,762評(píng)論 0 2

友情鏈接更多精彩內(nèi)容