SpringCloud(二)初識微服務——開篇

        記得上大學那會,有次我去圖書館找算法書,無意間看到了書架上擺着一本《微服務架構與實踐》。當即,拿起來開始閱讀,可是奈何當時水平太低,很多東西都看不懂,只知道是一些微小的服務,這是我與微服務的第一次邂逅。

        好了,不回憶往事了。開始進入正題。

目錄

1 微服務概述

1.1 單體架構

1.2 微服務架構

1.3 微服務特性與優點

1.3.1 特性

1.3.2 優點

1.4  微服務設計原則

1.5 微服務開發框架

2 Spring Cloud與微服務

2.1 Spring Cloud是什麼

2.2 Spring Cloud特點

2.3 Spring Cloud開發微服務注意點

2.4 基本服務節點


1 微服務概述

1.1 單體架構

     所有的業務功能全部寫在一個系統裏面,這個系統要麼啓動了處於正在運行狀態,要麼沒啓動。這樣的系統我們通常稱之爲單單體應用,這中應用程序的架構風格我們稱之爲 單體架構。

1.2 微服務架構

      微服務架構最初是由Martin Fowler這個外國人提出的。微服務用於描述這樣一種特定的軟件設計方法,即以若干組可獨立部署的服務的方式進行軟件應用系統的設計。

Martin Fowler在他的博客https://martinfowler.com/articles/microservices.html中是這樣描述微服務的:

In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery.

翻譯過來就是:

簡而言之,微服務體系結構樣式[1]是一種將單個應用程序開發爲一組小服務的方法,每個小服務都在自己的進程中運行並與輕量級機制(通常是HTTP資源API)進行通信。這些服務圍繞業務功能構建,並且可以由全自動部署機制獨立部署。

                                                                    單體架構和微服務架構圖

 

 

1.3 微服務特性與優點

1.3.1 特性

     通過服務進行組件化,組件是可以獨立替換和升級的軟件單元。每個微服務都可以當作一個組件。

     圍繞業務功能進行組織,通常是按照業務功能來拆分微服務的。

     智能端點和啞管道,從微服務構建的應用程序旨在儘可能地分離和具有凝聚力-它們擁有自己的域邏輯。

     分散治理,每個微服務都是一個獨立運行的系統,選用編程語言,數據庫完成開發。而不用考慮其他微服務。

      自動化部署,可以由一些工具(jenkins)進行持續集成和自動化部署。

1.3.2 優點

     易於開發和維護,每個微服務可以分配不同的開發小組,用不同的語言去開發。

     由於單個微服務只負責一個業務功能,體量小,啓動快。

     技術棧不受限。

     從另外一種角度來看,符和”高內聚,低耦合“的思想。

1.4  微服務設計原則

     單一職責原則

     服務自治原則

     輕量級通信原則

     接口明確原則

1.5 微服務開發框架

後面的實戰微服務,我們選擇Spring Cloud來實現。

2 Spring Cloud與微服務

2.1 Spring Cloud是什麼

      Spring大家應該很熟悉吧,目前最流行的java框架,絕大數公司都在使用spring框架。spring 、spring MVC、Spring Boot、Spring Cloud都屬於Spring家族。Spring Cloud是由Spring Boot實現,一個由Spring Cloud實現的微服務架構,從整體來看是Spring Cloud框架,可是我們來看每個微服務其實是Spring Boot。要用Spring Cloud實現微服務一定要先會Spring Boot哦。

2.2 Spring Cloud特點

  •  約定由於配置
  • 開箱即用,快速啓動

  • 輕量級組件

Spring Cloud的版本和Spring、Spring Boot可完全不同了,是以英國倫敦地鐵站命名的,如下圖:

   

Spring Cloud官網地址:https://spring.io/projects/spring-cloud#learn

2.3 Spring Cloud開發微服務注意點

在用Spring Boot搭建Spring Cloud微服務時一定要注意Spring Boot和Spring Cloud之間的版本關係要對應,如果版本不匹配可能會發生很多意想不到的問題。

查看Spring Boot和Spring Cloud版本對應關係,可以去官網:https://start.spring.io/actuator/info,(記得要用火狐瀏覽器打開啊,纔會有這樣結構的數據,其他瀏覽器也能相應成功,只不過是一堆數據不便於瀏覽。)如下圖:

當然了,也可以看下百度下,有其他的大佬已經實戰經歷過按照他們的版本搭配肯定也沒問題的。

 

2.4 基本服務節點

一個能支持正常業務經受得住生產數據考驗的Spring Cloud微服務架構,一定要包含3類服務節點,如圖所示:

                      

 

gatway:網關,所有請求的入口。實現技術Zuul(我們後面實戰採用的),主要進行請求路由轉發,負載均衡等。

service discover:服務發現或服務註冊,由Eureka Server實現,主要實現服務註冊(服務發現),其他微服務可以註冊到該服務上。

other service:其他一些微服務,主要由Eureka Client實現,包含一些實現業務功能的微服務等。

 

這些後面都會詳細說,在大家以後搭建好一個微服務時,看下缺不缺這些東西。下節我們就開始實戰,這個Spring Cloud系列的文章也寫的和微服務架構思想類似,每篇文章主要說一件事,要學會Spring Cloud微服務架構必須要循序漸進,一步一步的來。準備發車了,你準備好了嗎!

 

                

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章