溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解SpringCloud微服務架構

發(fā)布時間:2021-10-12 09:04:28 來源:億速云 閱讀:140 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“如何理解SpringCloud微服務架構”,在日常操作中,相信很多人在如何理解SpringCloud微服務架構問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解SpringCloud微服務架構”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

如何理解SpringCloud微服務架構

現(xiàn)如今微服務架構十分流行,而采用微服務構建系統(tǒng)也會帶來更清晰的業(yè)務劃分和可擴展性。同時,支持微服務的技術棧也是多種多樣的,而Spring  Cloud就是這些技術中的翹楚。

作為新一代的服務框架,Spring  Cloud提出的口號是開發(fā)“面向云環(huán)境的應用程序”,它為微服務架構提供了更加全面的技術支持。而且作為Spring的拳頭項目,它也能夠與Spring  Framework、Spring Boot、Spring Data、Spring  Batch等其他Spring項目完美融合,這些對于微服務而言是至關重要的。

Spring Cloud的完整技術組成:

  • 今天就給大家分享大概講的最全最通俗易懂的spring cloud視頻

  • SpringCloud微服務架構實戰(zhàn)

  • https://www.ixigua.com/6895923297481916939

理論概念的梳理

在系統(tǒng)架構與設計的實踐中,從宏觀上可以總結為三個階段;

集中式架構:就是把所有的功能、模塊都集中到一個項目中,部署在一臺服務器上,從而對外提供服務(單體架構、單體服務、單體應用);

直白一點:就是只有一個項目,只有一個war;

分布式架構:就是把所有的功能、模塊拆分成不同的子項目,部署在多臺不同的服務器上,這些子項目相互協(xié)作共同對外提供服務。

直白一點:就是有很多項目,有很多war包,這些項目相互協(xié)作完成需要的功能,不是一 個war能完成的,一個war包完成不了;

比如:

Shop項目:單體應用

Shop項目:拆分--> (user-center, order-center, trade-center) 分布式應用

微服務架構:分布式強調系統(tǒng)的拆分,微服務也是強調系統(tǒng)的拆分,微服務架構屬于分布式架構的范疇;

并且到目前為止,微服務并沒有一個統(tǒng)一的標準的定義,那么微服務究竟是什么?

微服務一詞源于 Martin Fowler(馬丁.福勒)的名為 Microservices 的博文,可以在他的官方博客上找到這篇文章:

http://martinfowler.com/articles/microservices.html

中文翻譯版本:

https://www.martinfowler.cn/articles/microservices.html

簡單地說, 微服務是系統(tǒng)架構上的一種設計風格, 它的主旨是將一個原本獨立的系統(tǒng)拆分成多個小型服務,這些小型服務都在各自獨立的進程中運行,服務之間通過基于  HTTP 的 RESTful API 進行通信協(xié)作;

(dubbo -->dubbo協(xié)議 )  RESTful API (controller --> 調用 congtroller)

被拆分后的每一個小型服務都專注于完成系統(tǒng)中的某一項業(yè)務功能,職責單一, 并且每個服務都是一個獨立的項目,可以進行獨立的測試、開發(fā)和部署等;

由于各個獨立的服務之間使用的是基于 HTTP 的 JSON 作為數(shù)據(jù)通信協(xié)作的基礎,所以這些微服務也可以使用不同的語言來開發(fā);

如何理解SpringCloud微服務架構

比如:項目里面有User模塊和Order模塊,但是User模塊和Order模塊并沒有直接關系,僅僅只是一些數(shù)據(jù)需要交互,那么就可以把這2個模塊單獨分開來,當user需要調用order的時候,order是一個服務方,但是order需要調用user的時候,user又是服務方了,  所以,它們并不在乎誰是服務方誰是調用方,他們都是2個獨立的服務,這就是微服務的概念;

經(jīng)典面試:分布式和微服務有什么區(qū)別?

分布式,就是將巨大的一個系統(tǒng)劃分為多個模塊,這一點和微服務是一樣的,都是要把系統(tǒng)進行拆分,部署到不同機器上,因為一臺機器可能承受不了這么大的訪問壓力,或者說要支撐這么大的訪問壓力需要采購一臺性能超級好的服務器,其財務成本非常高,有這些預算完全可以采購很多臺普通的服務器了,分布式系統(tǒng)各個模塊通過接口進行數(shù)據(jù)交互,其實分布式也是一種微服務,因為都是把模塊拆分變?yōu)楠毩⒌膯卧?,提供接口來調用,那么它們本質的區(qū)別是什么?

它們的本質的區(qū)別體現(xiàn)在“目標”上, 何為目標,就是你采用分布式架構或者采用微服務架構,你最終是為了什么,要達到什么目的?

分布式架構的目標是什么? 就是訪問量很大一臺機器承受不了,或者是成本問題,不得不使用多臺機器來完成服務的部署;

而微服務的目標是什么?只是讓各個模塊拆分開來,不會被互相影響,比如模塊的升級或者出現(xiàn)BUG或者是重構等等都不要影響到其他模塊,微服務它是可以在一臺機器上部署;

但是:分布式也是微服務的一種,微服務也屬于分布式;

面試:微服務與Spring-Cloud的關系或區(qū)別?

微服務只是一種項目的架構方式、架構理念,或者說是一種概念,就如同我們的MVC架構一樣, 那么Spring  Cloud便是對這種架構方式的技術落地實現(xiàn);

面試:微服務一定要使用Spring Cloud嗎?

微服務只是一種項目的架構方式、架構理念,所以任何技術都可以實現(xiàn)這種架構理念,只是微服務架構里面有很多問題需要我們去解決,比如:負載均衡,服務的注冊與發(fā)現(xiàn),服務調用,服務路由,服務熔斷等等一系列問題,如果你自己從0開始實現(xiàn)微服務的架構理念,那頭發(fā)都掉光了,所以Spring  Cloud 幫我們做了這些事情,Spring Cloud將處理這些問題的的技術全部打包好了,我們只需要開箱即用;

What is Spring Cloud?

官網(wǎng):

https://spring.io/projects/spring-cloud

版本:Greenwich SR3

出自官方:

如何理解SpringCloud微服務架構

Spring  Cloud為開發(fā)人員提供了一些工具用來快速構建分布式系統(tǒng)中的一些常見模式和解決一些常見問題(例如配置管理、服務發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、一次性令牌、全局鎖、領導選舉、分布式會話、群集狀態(tài))。分布式系統(tǒng)的協(xié)調導致了很多樣板式的代碼(很多固定套路的代碼),使用Spring  Cloud開發(fā)人員可以快速建立實現(xiàn)這些模式的服務和應用程序。它們在任何分布式環(huán)境中都能很好地運行,包括開發(fā)人員自己的筆記本電腦、裸機數(shù)據(jù)中心和云計算等托管平臺;

Spring Cloud特性

Spring Cloud為分布式系統(tǒng)開發(fā)的典型應用場景提供良好的開箱即用的功能,比如:

  • 分布式/版本化配置

  • 服務注冊和發(fā)現(xiàn)

  • 路由

  • 服務與服務間的調用

  • 負載均衡

  • 斷路器

  • 全局鎖

  • 領導選舉與集群狀態(tài)

  • 分布式消息傳遞

Spring Cloud下的主要項目

  • Spring Cloud Config

  • Spring Cloud Netflix

  • Spring Cloud Bus

  • Spring Cloud Cloudfoundry

  • Spring Cloud Open Service Broker

  • Spring Cloud Cluster

  • Spring Cloud Consul

  • Spring Cloud Security

  • Spring Cloud Sleuth

  • Spring Cloud Data Flow

  • Spring Cloud Stream

  • Spring Cloud Stream App Starters

  • Spring Cloud Task

  • Spring Cloud Task App Starters

  • Spring Cloud Zookeeper

  • Spring Cloud AWS

  • Spring Cloud Connectors

  • Spring Cloud Starters

  • Spring Cloud CLI

  • Spring Cloud Contract

  • Spring Cloud Gateway

  • Spring Cloud OpenFeign

  • Spring Cloud Pipelines

  • Spring Cloud Function

Spring Cloud的版本

Spring Cloud是由一系列獨立項目組成的,每個獨立的項目具有不同的發(fā)布節(jié)奏,每次Spring  Cloud發(fā)布版本時,就會組合這一系列的子項目,Spring Cloud為了避免大家對版本號的誤解,避免與子項目版本號混淆,所以Spring  Cloud發(fā)布的版本是一個按照字母順序的倫敦地鐵站的名字(“天使”是第一個版本,“布里克斯頓”是第二個),字母順序是從A-Z,目前最新穩(wěn)定版本Greenwich  SR3,當Spring  Cloud里面的某些子項目出現(xiàn)關鍵性bug或重大更新,則發(fā)布序列將推出名稱以“.SRX”結尾的版本,其中“X”是一個數(shù)字,比如:Greenwich  SR1、Greenwich SR2、Greenwich SR3;

Spring Cloud是微服務開發(fā)的一整套解決方案,采用Spring Cloud開發(fā),每個項目依然是使用Spring Boot;

Spring Cloud 與 Spring Boot的兼容版本

如何理解SpringCloud微服務架構

Spring Cloud 的整體架構

如何理解SpringCloud微服務架構

  • Service Provider: 暴露服務的服務提供方。

  • Service Consumer:調用遠程服務的服務消費方。

  • EureKa Server: 服務注冊中心和服務發(fā)現(xiàn)中心。

服務消費方直接調用服務提供方

我們知道,Springcloud 構建微服務是基于 SpringBoot 開發(fā)的。

1、創(chuàng)建一個 SpringBoot 工程,并且添加 SpringBoot 的相關依賴;

2、創(chuàng)建服務提供者的訪問方法,也就是后續(xù)消費者如何訪問提供者;

Spring Cloud 是基于 rest 的訪問,所以我們添加一個 Controller,在該Controller 中提供一個訪問入口:

如何理解SpringCloud微服務架構

3、啟動運行該 SpringBoot 程序,訪問該 controller;

服務消費者也是一個 SpringBoot 項目,服務消費者主要用來消費服務提供者提供的服務;

1、創(chuàng)建一個 SpringBoot 工程,并且添加 SpringBoot 的相關依賴;

2、開發(fā)一個消費者方法,去消費服務提供者提供的服務,這個消費者方法也是

一個 Controller:

如何理解SpringCloud微服務架構

3、啟動該 SpringBoot 程序,測試服務消費者調用服務提供者;

到此,關于“如何理解SpringCloud微服務架構”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

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

AI