Zebra 微服務框架 springBoot
GitHub地址:https://github.com/ae6623/Zebra
OSCGit地址:http://git.oschina.net/ae6623/Zebra
Zebra4J
是一款使用Sping Boot
特性全新開發的微服務WEB
框架,嘗試封裝一些常用框架比如dubbo
等作為spring-boot
組件,結合微服務的框架思想,利用NodeJs
、Zebra4Js作為應用網關,使得各個功能分層服務,持續迭代,解放團隊生產力,快速構建企業級
Web 應用。
Frameworks and Tools 構建
- 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
- Zebra4J Port:http://localhost:8888
- Zebra4Js Port:http://localhost:8360
About 關於落雨
-
詳細項目文檔持續更新中,也歡迎各位達人提交PR,一起為China🇨🇳開源項目添磚增瓦,
Zebra4J
、Zebra4Js
文檔請參閱 Zebra-doc/Zebra-微服務.md
License 許可協議
1.什么是微服務
微服務是一種分布式的架構,它所有的組件(也就是服務)會被部署為單獨的應用程序,並通過某種遠程訪問協議(Rpc/Restful
)進行通訊。分布式應用的挑戰之一就是如何管理遠程服務的可用性
和它們的響應
。服務可用性是服務消費者
連接服務並能夠發送請求的能力,服務響應
則關注服務的響應時間。
2.微服務的局限
並不是所有的業務系統都適用於微服務,不能說現在流行這個,我就把公司上上下下幾千個系統全部放入Docker
,全部都架上微服務的袈裟,你應該靜下心來,仔細分析你的商業需求、商業驅動、組織架構和團隊技術環境,因為微服務
並不適應所有的場景。而且基於RESTful
的協議請求,很容易被多次重復調用,此時應考慮加入消息機制,利用消息進行事務的處理以及異步服務的調用,在此需要提醒各位在數據一致性
和高可用
方面做好取舍,准備好一致性的補償機制。
3.微服務的好處
打了這么多預防針,你還是跟到了這里,那么我們來談談微服務的好處,
- 應用太大,我們上線一個小功能,並不想再所有程序都打包上線,這很煩,我們需要拆開,拆成單個的服務出來。每個服務都有一個
Rpc
或者RESTful
的Api進行業務驅動,由類似於Spring cloud
或者Zookeeper
的服務管理者去發現和監聽各個服務節點的狀態。 - 拆出來的微服務,就可以交給不同的團隊進行開發,維護更加簡單,不會因為一個模塊上線失敗,而整體回滾。
- 部署方便,
Jekens + Docker
直接部署,對於前端而言,根本不知道后台什么時候突然部署了1w台服務,用戶幾乎0察覺,輕松應對秒殺等業務,流量下來之后,隨時Stop服務。
4.微服務的實現
- 1.網關
- 采用API的方式,制造一個所有的端都支持的網關,作為唯一的入口,可以提供授權、監控、負載、緩存、靜態、返回相應等入口,建議使用
RESTful
的http
接口。 - 網關的作用
- 提供統一服務入口,讓微服務對前台透明
- 聚合后台的服務,節省流量,提升性能
- 提供安全,過濾,流控等API管理功能
- 網關要考慮交互的方式
- 客戶端 1:1 服務端
- 客戶端 1:N 服務端
- 采用API的方式,制造一個所有的端都支持的網關,作為唯一的入口,可以提供授權、監控、負載、緩存、靜態、返回相應等入口,建議使用
- 2.服務發現
- 3.服務調用
- 同步調用
- Rpc
- Rest
- 異步調用
- MQ
- 同步調用
- 4.服務可用
- 重試
- 限流
- 熔斷
- 負載
- 降級
- 緩存
- 5.服務發布
- Jekins Docker