Zebra 微服務架構 springBoot
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauITZ2MjNxQDZ1kzYkNTO2AzNzETNxMGO4QGM2AjM1ITYfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpg)
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