天天看點

SpringBoot企業級架構

Zebra 微服務架構 springBoot

SpringBoot企業級架構

Java&IDE: JDK8 Lamda/Intellij Idea 16

Backend: SpringBoot Docker Zookeeper (Configured by annotation/app)

Database: Mysql/MongoDB/Redis

Cache:Memcached/Redis

Web Server: Nginx/Tomcat 7

Build Tool: Maven

Other: Commons-Dbcp2(database connection pool) JUnit sl4j Jackson FastJson

<a href="https://github.com/ae6623">Github-Me</a>

<a href="http://www.linkedin.com/in/ae6623">Linkedin-Me</a>

<a href="">QQ 43163707</a>

<a href="https://github.com/ae6623/Zebra/blob/master/LICENSE">MIT</a>

微服務是一種分布式的架構,它所有的元件(也就是服務)會被部署為單獨的應用程式,并通過某種遠端通路協定(<code>Rpc/Restful</code>)進行通訊。分布式應用的挑戰之一就是如何管理遠端服務的<code>可用性</code>和它們的<code>響應</code>。服務可用性是<code>服務消費者</code>連接配接服務并能夠發送請求的能力,<code>服務響應</code>則關注服務的響應時間。

并不是所有的業務系統都适用于微服務,不能說現在流行這個,我就把公司上上下下幾千個系統全部放入<code>Docker</code>,全部都架上微服務的袈裟,你應該靜下心來,仔細分析你的商業需求、商業驅動、組織架構和團隊技術環境,因為<code>微服務</code>并不适應所有的場景。而且基于<code>RESTful</code>的協定請求,很容易被多次重複調用,此時應考慮加入消息機制,利用消息進行事務的處理以及異步服務的調用,在此需要提醒各位在<code>資料一緻性</code>和<code>高可用</code>方面做好取舍,準備好一緻性的補償機制。

打了這麼多預防針,你還是跟到了這裡,那麼我們來談談微服務的好處,

應用太大,我們上線一個小功能,并不想再所有程式都打包上線,這很煩,我們需要拆開,拆成單個的服務出來。每個服務都有一個<code>Rpc</code>或者<code>RESTful</code>的Api進行業務驅動,由類似于<code>Spring cloud</code>或者<code>Zookeeper</code>的服務管理者去發現和監聽各個服務節點的狀态。

拆出來的微服務,就可以交給不同的團隊進行開發,維護更加簡單,不會因為一個子產品上線失敗,而整體復原。

部署友善,<code>Jekens + Docker</code>直接部署,對于前端而言,根本不知道背景什麼時候突然部署了1w台服務,使用者幾乎0察覺,輕松應對秒殺等業務,流量下來之後,随時Stop服務。

1.網關

采用API的方式,制造一個所有的端都支援的網關,作為唯一的入口,可以提供授權、監控、負載、緩存、靜态、傳回相應等入口,建議使用<code>RESTful</code>的<code>http</code>接口。

網關的作用

提供統一服務入口,讓微服務對前台透明

聚合背景的服務,節省流量,提升性能

提供安全,過濾,流控等API管理功能

網關要考慮互動的方式

用戶端 1:1 服務端

用戶端 1:N 服務端

2.服務發現

3.服務調用

同步調用

Rpc

Rest

異步調用

MQ

4.服務可用

重試

限流

熔斷

負載

降級

緩存

5.服務釋出

Jekins Docker