技術架構—各類技術概念與區別答疑—(Java與大數據)

 微服務到底是個啥?

發展歷程: 單體服務(發佈就是一個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、服務掛了,如何解決?(備份方案,應急處理機制)
        ①重試機制
        ②限流
        ③熔斷機制
        ④負載均衡
        ⑤降級(本地緩存)
        
   微服務開發模式:微服務敏捷開發。只要用戶用得到,就先把這個服務挖出來。然後針對性的,快速確認業務需求,快速開發 迭代
   
   
   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章