Spring下面提供了完整的微服務核心Enureka、zuul,Herix,從服務註冊、發現、路由、斷路都有。缺點是都是Java平臺的,但大型系統又往往不是單一技術平臺,除了netfix這樣的。(是否可以爲單一技術平臺這裏不討論)。Nginx是最流行的http反向代理,如果作爲微服務組件有什麼優勢劣勢呢?
優勢
- 本身就是個路由器的功能
- 可以通過規則把功能路由到不同模塊
- 高性能,和語言無關
- 有一定斷路器功能,服務不可用會移除,根據某個地址進行測試。
缺點
- 缺乏服務註冊發現功能,服務器不能動態增減。
- 服務規則是靜態的,修改還需要重新加載配置
改進
- 增加服務註冊發現功能,在反向代理中,可以支持路由到服務而非地址。
- 註冊發現功能開發各個語言的Api。
給nginx裝上一個服務註冊管理功能,並支持集羣數據共享,這樣nginx的反向代理可以映射到在nginx上註冊的一個服務上並自動輪詢,同時支持故障檢測,又具有跨語言的特性。