微服務到底是個啥?
發展歷程: 單體服務(發佈就是一個war或jar)-——分佈式服務(分佈式環境下手動部署)
——>微服務(全自動獨立部署)
服務:提供的業務功能
重點在於對微的解釋,但僅僅從微來理解還不夠,乾脆畫個圖總結下:
通信方式可以是Rest API 或 RPC
概況起來就是:微服務組件——微服務間通信——最少配置管理
詳細的總結:
《=======================微服務 概念總結========================================》什麼是微服務
1. [微服務組件]
一組獨立小型服務
每個小型服務獨立運行與部署
這些小型服務自由選擇編程語言與採用不同的數據存儲方式2. [微服務組件間通信]:各服務之間採用輕量級通信方式通信(RPC)
3. [圍繞業務功能]:採用最低限度的配置進行集中管理與全自動部署機制進行獨立部署
優缺點:
優點:
1.[微服務組件]: 易於開發與維護 ,啓動較快,技術棧不受限制 ,按需伸縮
2.[微服務組件間通信]: 局部修改不影響其他微服務組件
3.[圍繞業務功能]:DevOps
缺點:
1.[微服務組件]:運維要求高,分佈式的複雜性高,重複勞動
(常用的工具包(Java版或C版的相同邏輯代碼))
2.[微服務組件間通信]:接口調整成本高(某個微服務模型修改導致其他調用者做出的接口調整)
微服務設計原則:
1.單一職責原則
2.服務自治原則
3.輕量級通信原則
4.接口明確原則
常用微服務開發框架:
1.SpringCloud
2.Dubbo --服務治理
3.Dropwizard --單個微服務開發
4.Consul
怎麼具體實踐微服務
要實際的應用微服務,需要解決以下四點問題:1、客戶端如何訪問這些服務
動態代理 提供一個統一的服務訪問口,解除微服務間的耦合,
同時考慮單點故障或者性能的瓶頸的問題
2、每個服務之間如何通信
有兩種方式、
同步調用:
①REST(JAX-RS,Spring Boot)
②RPC(Thrift, Dubbo)
異步消息調用(Kafka, Notify, MetaQ)3、如此多的服務,如何實現管理
zkeeper等類似技術做服務註冊信息的分佈式管理4、服務掛了,如何解決?(備份方案,應急處理機制)
①重試機制
②限流
③熔斷機制
④負載均衡
⑤降級(本地緩存)
微服務開發模式:微服務敏捷開發。只要用戶用得到,就先把這個服務挖出來。然後針對性的,快速確認業務需求,快速開發 迭代