springcloud官方文檔翻譯網站:https://springcloud.cc/
一、網站架構的演變過程。(這些架構描述的不是很到位,之后需要從新學習)
傳統架構 —> 分布式架構 —> SOA架構 —> 微服務架構
架構博客:https://www.cnblogs.com/Survivalist/p/8012266.html
1、傳統架構
傳統架構其實就是SSH或SSM,屬於單點應用,把整個業務模塊都會在一個項目進行開發,分為MVC架構,會拆分成控制層、業務邏輯層、數據庫訪問層(持久層)。
傳統架構一般適合於一個人或者小型團隊開發。
缺點:耦合度太高,一旦某個模塊導致服務不可用,可能會影響到其他模塊。
2、分布式架構
分布式架構是基於傳統架構演變過來的,將傳統的項目以項目模塊拆分成多個子項目,比如:
拆分會員項目、訂單項目、支付項目、優惠券項目等,每個項目都有自己的獨立數據庫,獨立redis等。
優點:
1、把模塊拆分,使用接口通信,降低模塊之間的耦合度。
2、把項目拆分成若干個子項目,不同的團隊負責不同的子項目。
3、增加功能時只需要再增加一個子項目,調用其他系統的接口就可以。
4、可以靈活的進行分布式部署。
(並發量太大的話就要使用緩存(memcached、radis等))
缺點:
系統之間交互需要使用遠程通信,接口開發增加工作量。
3、SOA架構
SOA架構代表面向服務架構,俗稱服務化。通俗的理解為面向於業務邏輯層開發,將共同的業務邏輯抽取出來形成的一個服務。提供給其他服務接口進行調用,服務於服務之間調用使用rpc遠程技術。
SOA架構的缺點:
(1)、依賴於中心化服務發現機制。
(2)、SOA架構采用的是SOAP協議(Http+xml),因為xml傳輸協議比較占用寬帶,整個xml報文中有非常大的冗余數據,所有在微服務架構中以輕量級的json方式代替了xml報文傳輸。
4、微服務
微服務架構是從SOA架構中演變過來的,比SOA架構上的粒度更加精細。讓專業的人做專業的事情,目的就是為了提高效率。每個服務之間互相不受影響,每個服務必須獨立部署(獨立數據庫、獨立Redis等),微服務架構更加提醒輕量級,采用restful風格提供的API,也就是使用HTTP協議+json格式進行傳輸,更加輕巧,更加適用於互聯網公司敏捷開發、快速迭代產品。
微服務架構如何拆分:
1、微服務把每一個職責,單一功能存放在獨立服務器中。
2、每個服務運行在單獨進程中,能夠單獨啟動或銷毀。
3、每個服務有自己獨立的數據庫存儲,實際上有自己獨立的緩存、數據庫、消息隊列等資源。
5、微服務架構與SOA架構的區別
(1)、微服務架構基於SOA架構演變過來,繼承SOA架構的優點,在微服務架構中去除SOA架構中的ESB消息總線,采用http+json(restful)進行傳輸。
(2)、微服務架構對比SOA架構粒度會更加精細,讓專業的人干專業的事情,目的是為了提高效率,每個服務於服務之間互不影響。在微服務架構中,每個服務必須獨立部署,微服務架構更加輕巧、輕量。
(3)、SOA架構中可能數據庫存儲會發生共享,微服務強調每個服務都有獨立數據庫,保證每個服務於服務之間互不影響。
(4)、項目體現特征,微服務架構比SOA架構更加適合於互聯網公司的敏捷開發、快速迭代版本。
二、springcloud簡介
1、springcloud是基於springboot基礎之上開發的微服務框架,springcloud是一套目前比較完整的微服務解決方案框架,其內容包含服務治理、注冊中心、配置管理、斷路器、智能路由、微代理、控制總線、全局鎖、分布式會話等。
springcloud包含眾多的子項目:
springcloud config :分布式配置中心
springcloud netfix :核心組件
Eureka :服務治理 注冊中心
Hystrix :服務保護框架(斷路器)
Ribbon : 客戶端負載均衡器
Feign : 基於Ribbon和Hystrix的聲明式服務調用組件
Zuul : 網關組件,提供智能路由、訪問過濾等功能
2、為什么要選中springcloud
因為springcloud的出現,對微服務技術提供了非常大的幫助,springcloud提供了一套比較完整的服務解決方案,不想其他框架只是解決了微服務中的某個問題。
例如:
服務治理:阿里巴巴開源的Dubbo和當當網在其基礎上擴展的Dubbox、Eureka、Apache的Consul等。
分布式配置中心:百度的disconf、Netfix的Archaius、360的QConf、springcloud、攜程的阿波羅等。
分布式任務:xxl-job、elastic-job、springcloud的task等
服務跟蹤:京東的Hyra、springcloud的sleuth。