天天看點

認識微服務架構Spring Cloud

1.主要的子項目

1)spring cloud config是配置管理工具,通過它可以把配置資訊放到遠端伺服器中,進而集中管理叢集配置。目前支援本地存儲、git和subvesion三種存儲方式。

所有執行個體都可以通過config server來擷取配置檔案,每個服務執行個體相當于配置服務的用戶端。

2)spring cloud consul封裝了consul。consul是HashiCorp公司用GO語言開發的一個服務治理軟體。它包含服務治理、健康檢查、Key-Value存儲、多資料中心功能。

3)spring cloud sleuth為spring cloud應用提供了分布式追蹤解決方案,為服務之間的鍊路調用提供了鍊路追蹤。

4)spring cloud starters提供了“開箱即用”的依賴管理

5)spring cloud gateway提供了一種簡單有效的微服務API進行路由。

6)spring cloud openfeign 封裝了聲明式的web service用戶端fegin,它使得編寫web service用戶端變得更加容易。它支援fegin注解和jax-rs注解。

7)tubine是聚合伺服器,它用來發送事件流資料,以監控叢集中Hystrix的Metrics情況。通過tubine可以監控叢集的請求量,進而知道系統的請求高峰期,以便更好的發型系統的問題。

2.Netfix家族項目

1)eureka是服務治理元件,它基于REST的服務,包含服務注冊與服務發現功能

2)hystrix對微服務進行容錯管理,即使将服務做成叢集也不能保證其100%安全和可用,是以,為了防止因服務與服務之間的依賴性,單個服務出現故障導緻整個微服務系統奔潰,則需要做容錯處理。

3)zuul主要提供路由和過濾功能。它是各種服務的統一入口,還可以提供動态路由、監控、授權、安全、排程等功能。

4)archaius來管理配置api。提供了動态類型化屬性、線程安全配置操作、輪詢架構、回調機制等功能。

3.阿裡巴巴家族項目

1)sentinel是一個流控元件,它以流量作為切入點,可以從流量控制、熔斷降級、系統負載保護等多個次元保護服務等穩定性。

2)nacos是一個服務治理項目,它提供了動态服務發現、配置管理和服務管理平台。

3)rocketmq是一種消息中間件,它提供高可用分布式叢集技術提供低延遲、高可靠的消息釋出/訂閱服務

4)dubbo是一款高性能java rpc架構。

5)seata是一個高性能的微服務分布式事務解決方案。

6)alibaba cloud axm是一個應用配置中心

7)alibaba cloud schedulerx是一個基于cron的表達式任務排程服務,可提供秒級、精準、高可靠、高可用的定時任務排程功能。

4項目結構

spring cloud是基于spring boot的,是以它們的項目結構是一樣的,在建立好spring cloud工程後即可看到基礎的結構。spring cloud的基礎結構分為3個檔案目錄

1)src/main/java:入口啟動類及程式開發目錄。在這個目錄下進行業務開發、建立實體層、控制器層、資料連接配接層等。

2)src/main/resources:資源檔案目錄,用于放靜态檔案和配置檔案。

static用于存放靜态資源,如css、javascript、圖檔檔案等。

templates用于存放模版檔案。

application.properties用于配置項目運作所需的配置資料。如果用YML 方式管理配置,則YML檔案也存放在這個目錄,名為application.yml

3)src/test/java測試程式所在的目錄

spring cloud的自動配置

1.注解

spring boot的系統注解:@Override、@Deprecated、@SuppressWarnnings

spring boot的常用注解:@RestController、@Controller、@Service、@Repository、@Component、@Configuration、@Resource、@Autowired、@RequestMapping、@Transactional、@Qualifier

2.配置檔案

application.properties

讀取屬性值,設定預設屬性值、自定義屬性值、使用環境變量

application.yml

5.應用程式開發模式-MVC

在整個spring mvc架構中,DispatcherServlet處于核心位置,繼承自HttpServlet。它負責協調群組織不同元件,以完成請求處理并傳回響應工作。

整個工作流程如下:

1)用戶端送出請求,Tomcat伺服器接收請求并将請求轉交給DispatcherServlet處理。

2)DIspatcherServlet比對在控制器中配置的映射路徑,然後進行下一步處理。

3)ViewResolver将ModelAndView或者Exception解析成View,然後View會調用render()方法并根據ModelAndView中的資料渲染出頁面。

表現層:用于展示界面,接收使用者請求并傳回資料。它為用戶端提供應用程式的通路接口

業務邏輯層:三層架構的服務層,負責業務邏輯處理,主要是調用DAO層對資料進行增加、删除、修改和查詢

資料通路層:于資料庫進行互動的持久層,被service調用。如果在spring data jpa中,則該層由Hibernate來實作。

Repository和DAO層都可以進行資料增加、删除、修改和查詢。它們相當于倉庫管理者,執行進、出貨操作。

DAO的工作是存取對象。Repository的工作是存取和管理對象。