覺得基於springcloud、dubbo的微服務缺點大於優點。很多技術人員為了微服務而微服務。
基於springcloud、dubbo的微服務和基於jar的微服務。
基於springcloud、dubbo的微服務簡稱傳統微服務,基於jar的微服務簡稱jar微服務。
jar微服務定義:服務的相互調用通過引用jar,調用本地api方法。定義的其他部分和傳統微服務定義一致。傳統微服務是通過微服務進行服務隔離,jar微服務通過jar包進行服務隔離。
## 傳統微服務的優點
1. 微服務是松藕合的,無論是在開發階段或部署階段都是獨立的。
2. 能夠快速響應, 局部修改容易, 一個服務出現問題不會影響整個應用。
3. 易於和第三方應用系統集成, 支持使用不同的語言開發, 允許你利用融合最新技術。
4. 每個微服務都很小,足夠內聚,足夠小,代碼容易理解。團隊能夠更關注自己的工作成果, 聚焦指定的業務功能或業務需求。
5. 開發簡單、開發效率提高,一個服務可能就是專一的只干一件事, 能夠被小團隊單獨開發,這個小團隊可以是 2 到 5 人的開發人員組成
## 傳統微服務的缺點
1. 服務調用跨網絡,增加網絡IO,降低性能。
2. 服務調用跨更多節點,分布式事務數據不一致性可能更大。
3. 需要服務發現,增加復雜度。
4. 運維、測試基於微服務架構的應用也很復雜。
5. 每個服務都是一個獨立系統,代碼重復,增加系統框架不一致的可能性。
6. 所以服務總的啟動時間長。
7. 服務依賴的傳遞性,A依賴B,B依賴C。那么只能先部署好C、再部署B、再部署A。
## 傳統微服務的優點
1. 傳統微服務能使用不同的語言、框架開發。
2. 一個jar是計算密集型的,一個jar是io密集型的,集成在一個系統里,會有資源沖突。
## 說明
1. 關於解耦,傳統微服務解耦和jar微服務解耦效果差不多。
2. 關於服務發現,這本是傳統微服務自找麻煩,自己挖了坑,自己再把它填上。
##都需要注意的地方
邊界定義清楚
##傳統微服務適用場景
服務跨部門,甚至服務跨公司。不同部門資源很難統一協調,也很可能使用不同的語言或框架。團隊內部千萬不要為了微服務而去微服務。