天天看點

SpringCloud

1,spring cloud 是什麼?

  springcloud是一系列架構的有序集合,它基于springboot的開發将一些成熟的架構做的一鍵部署,省去了複雜的配置和實作.springcloud的元件有發現注冊中心,配置中心,智能路由,熔斷器,跨域調用,消息總成,負載均衡等.

2,springcloud的優缺點?

  優點:1,降低耦合度,子產品容易維護

     2,可以并行開發,提高開發效率

     3,可以使用不同的開發語言,不同的資料庫.

     4,配置簡單,基本可以使用注解就可以通過元件調用服務通信.

   缺點:1,部署比較麻煩,給運維工程師帶來一定的麻煩

      2,維護比較麻煩,以為每個子產品可以有自己的資料庫

     3,系統測試比較麻煩.

     4,性能監控比較麻煩.

3. springboot和springcloud的差別?

  springboot是用于快速簡單開發單個個體的微服務,springcloud是依賴于springboot 來內建管理治理各個微服務的全局協調的.

4,springcloud由什麼組成?

  1,nacos 注冊發現中心

  2,feign 聲明式的web客戶服務端. 像調用本地方法一樣調用遠端

  3,斷路器 防止一個服務導當機緻全體服務跟着雪崩

  5,springcloudribbon 用戶端負載均衡,有輪詢, 

  springgetways 網關

  5,springcloud config 分布式同一配置管理

5,spring cloud 和dubbo差別?

  1,dubbo的注冊中心是zookeeper springcloud是eureka,也可以使用zookeeper.

  2,dubbo的調用時rpc,cloud的是rest api

  3,dubbo沒有網關等服務.springcloud有斷路器和git完美整個的配置中心的同一管理.支援版本控制

6,服務注冊和發現是什麼意思?spring cloud 如何實作?

  随着服務越來越多,互相調用有錯綜複雜,如何某些服務位址更改,修改代碼維護成本高.于是所有服務在springcloudeureka注冊和發現,調用時通脫eureka來完成.

7,什麼是eureka的自我保護模式?

預設情況下,當eureka在一定時間内檢測不到某個微服務心跳時,eurekaservice會啟動自我保護,這時候eurekaservice不會删除系統資料庫中的資料,當網絡恢複正常後,會自動退回自我保護模式.

8,eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的差別?

  zookeeper是cp強制性行,eureka是ap高可用.

  當zk中主伺服器挂了,進行選舉時,注冊服務不可用.而eureka叢集,隻要還有一個伺服器就可以正常使用

  

9,eureka的使用步驟

  1,添加依賴spring-cloud-starter-netflix-eureka-server.

  2,配置application.yml檔案

  3.在引導類添加注解@enableeurekaserver               這個好像是用戶端的@enablediscoveryclient

1,ribbon是做什麼的?

  當服務提供者是一個叢集是,使用使用discoveryclient擷取服務通路的post和host時候,不太好實作指派均衡的調用.ribbon提供一套完整的配置項,如逾時,重試等.簡單來說就是,在配置中列出所有的服務,ribbon基于某種規則(如簡單輪詢,随機連接配接等)幫你實作連接配接

2,負載平衡的意義什麼?

  負載平衡可以改善計算機網絡,磁盤啟動器,中央處理器等多種計算機資源工作的負載分布,旨在優化資源使用.也就是說幹活多的讓休息,幹活少的加工作這種.

3,nginx與ribbon的差別?

  nginx是反向代理,用戶端請求先發送到nginx,nginx在将請求進行轉發

  ribbon是用戶端負載均衡,從注冊中心讀取到通路目标後,在用戶端進行輪詢政策對服務進行輪詢通路,全程在用戶端操作.

4,@loadbalanced注解的作用?

  開啟用戶端的負載均衡.

]

5,ribbon負載均衡政策

        随機: randomrule

        輪詢: roundrobinrule

        最小并發: bestavailablerule

        過濾: availabilityfilteringrule

        響應時間: weightedresponsetimerule

        輪詢重試: retryrule

        性能可用性: zoneavoidancerule

1,使用步驟?

  (1)pom.xml

  <dependency>

  <groupid>org.springframework.cloud</groupid>

  <artifactid>spring-cloud-starter-openfeign</artifactid>

  </dependency>

  (2)引導類上添加啟動注解

  @enablefeignclients

  (3)application.yml/application.properties

  (4)編寫服務提供方對應的接口,參考-->接口文檔

  @feignclient("servername")

  public interface xxxxx{

       @xxxxmapping("/uri")

       public xxx methodname(....);

  }

  (5)要進行遠端調用的類中

  @autowired

  private xxxxx xxxx;

  傳回值 result = xxxx.method(參數)

  feign的底層就是ribbon和resttemplate的一個封裝.

2,什麼是feign?

  feign一個聲明web服務用戶端,它讓我們可以想使用本地方法一樣調用遠端方法

1,隔離

​    1.1,線程池隔離:将線程池再細分,每個服務都有部分通路線程

​    1.2,信号量隔離:規定通路的次數

2,降級 :相當于在client和server方,預設備用方案.

    2.1,服務端

        2.1.1,引入依賴  [hystix]

        2.1.2,定義降級方法    出現降級的情況:(出現異常,服務調用逾時)        

            2.1.2,1:編寫降級方法//方法傳回值,參數和原方法一樣

        2.1.3,在controller類使用@hystrixcommand(fallbackmethod="指定降級後調用的方法",還可以設定hystrix逾時時間)注解配置降級方法

        2.1.4,在啟動類上開啟hystrix功能:@enablecircuitbreaker||或者@springcloudapplication

    2.2,用戶端

        2.2.1:在配置類開啟feign對hytrix的支援 [feign.hystrix.enabled=true]

        2.2.2:定義feign調用接口實作類.複寫方法,及降級方法.使用component,将該類的bean加入springioc容器

        2.2.3: 在@feignclient注解中使用fallback屬性設定降級處理類

3,熔斷 :hystrix熔斷機制,用于監控微服務調用情況,當失敗的情況達到預定的門檻值(5秒失敗20次), 會打開斷路器,拒絕所有請求,直到服務恢複正常為止。

        打開-->關閉--半開

4,限流 :限定時間通路次數

1,什麼是斷路器?

  當一個伺服器調用另一個伺服器時,由于網絡原因或自身原因,調用失敗,調用者就會處于等在狀态,當更多的服務調用目前服務,導緻的連鎖反應,就會造成雪崩現象.  

2,斷路器有那三種狀态?

  1,打開狀态,一定時間内,達到一定次數都無法調用,并監控沒有恢複的迹象,斷路器就會打開,下次通路就不會通路該服務

  2.半打開狀态,短時間内服務有恢複迹象,斷路器就會将一部分資料交給該服務.正常調用時,斷路器關閉

  3,關閉狀态,當服務處于正常狀态,可以通路,

3,hystrix有四種防雪崩方式?

  服務降級

  服務熔斷  

  服務隔離:隔離服務之間的互相影響

  服務監控:服務調用時,會以每秒的調用次數,成功次數,記錄下來.

4,服務降級底層是如何實作的?

  hystrix實作服務降級的功能是通過重寫hystrixcommand中的getfallback()方法,當hystrix的

run方法或construct執行發生錯誤時轉而執行getfallback()方法。

1,網關的作用是什麼?

  網關是所有請求的入口,統一管理微服務請求,負責路由轉發,權限控制,負載均衡,安全控制白名單黑名單等.

2,既然nginx可以實作網關?為什麼還需要使用zuul架構?

  zuul是使用java編寫的,可以對springcloud提供更加靈活的服務.

繼續閱讀