天天看點

SpringCloud學習筆記——持續更新中

SpringCloud學習筆記——持續更新中
SpringCloud學習筆記——持續更新中

1.常見面試題

1.1 什麼是微服務?

1.2 微服務之間如何通信?

1.3 SpringCloud和Dubbo有哪些差別?

1.4 SpringCloud和SpringBoot,談談你對他們的見解

1.5 什麼是服務熔斷,什麼是服務降級?

1.6 微服務的優缺點是什麼?說說你在項目開發中遇到的坑?

1.7 你所知道的微服務技術棧有哪些?

1.8 eureka和zookeeper都可以提供服務注冊和發現功能,說說兩者差別

1.1 什麼是微服務?

​ 服務的目的是有效的拆分應用,實作靈活開發和部署。它有四個特點:

  • 小 服務體積小,比如亞馬遜的"2 pizza 團隊"
  • 獨:服務能夠獨立部署和運作
  • 輕:服務之間采用輕量級通信機制(Http/RPC)
  • 松:服務之間是松耦合的

​ 我們再來了解什麼是微服務架構。

​ 微服務架構是一種架構模式,它提倡将all in one的單一程式劃分為一組小型服務,每個服務運作在單獨的程序内,服務之間互相協調通信,最終為使用者提供完整的服務。服務之間采取輕量級通信機制進行溝通,能夠被獨立部署到生産環境中,并使用一個輕量級的集中式管理來協調這些業務

1.2 微服務的設計原則

  • 單一職責
  • 服務自治
  • 輕量通信
    • 跨平台,跨語言
  • 接口明确
    • 規範服務之間的接口調用

1.2.1 微服務的優缺點

  • 優點
    • 耦合性低,易于單個子產品開發和維護
    • 啟動較快
    • 局部易修改(相比重新開機整個項目)
    • 服務之間不受限
      • 跨技術、跨語言、跨平台
    • 按需伸縮
    • 每個微服務有自己的存儲能力,可以有自己的資料庫
  • 缺點
    • 整體維護要求較高
    • 分布式架構基于複雜性
    • 接口調整成本高

1.4 SpringCloud和SpringBoot的關系

  • SpringBoot專注于開發快速友善的單體微服務
  • SpringCloud則關注全局的微服務協調治理,來為微服務之間提供:配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等內建服務。

1.7 微服務技術棧

微服務條目 落地技術
服務開發 Spring,SpringBoot,SpringMVC
服務配置與管理 Netflix–Archaius、阿裡的Diamond等
服務注冊與發現 Eureka, Consule, Zookeeper等
服務調用 Rest,RPC,gRPC
服務熔斷 Hystrix,Envoy等
負載均衡 Nginx,Ribbon等
服務接口調用(用戶端調用服務的工具) Feign
消息隊列 Kafka, RabbitMQ,ActiveMQ,RocketMQ等
服務配置中心管理 SpringCloudConfig,Chef等
API網關(服務路由) Zuul等
服務監控 Zabbix, Nagios, Metrics, Specatator等
全鍊路追蹤 Zipkin,Brave,Kubernetes
服務部署 Docker,OpenStack等
資料流操作開發包 SpringCloudStream(封裝與Redis,Kafka等發送接收消息)
事件消息總線 SpringCloudBus

2. SpringCloud入門

2.1 Why SpringCloud

選型依據

  • 整體式解決方案,成熟的架構
  • 高熱度社群
  • 可維護性強

大公司的微服務架構

  • 阿裡:dubbo + HFS
  • 京東:JSF
  • 新浪:Motan
  • 當當網:DubboX

架構對比

功能 Dubbo SpringCloud+Netflix
服務注冊中心 Zookeeper Eureka
服務調用方式 RPC Rest API
服務監控 Dubbo-monitor SpringBoot Admin
斷路器 不完善 Netflix Hystrix
服務網關 Netflix Zuul
分布式配置 SpringCloud Config
服務跟蹤 SpringCloud Sleuth
消息總線 SpringCloud Bus
資料流 SpringCloud Stream
批量任務 SpringClode Task

2.2 SpringCloud官方

SpringCloud官方

SpringCloud Netflix

SpringCloud中文API文檔

SpringCloud中文社群

SpringCloud技術棧