2.推測:Eureka server定時去清理無效節點,首先判斷自我保護機制有沒有設置爲false,若是是直接去判斷哪些是無效節點,而後剔除。判斷的依據是距離上一次收到心跳的時間間隔是否大於某個值(在客戶端配置),是就剔除。若是自我保護機制沒有設置,則系統在定時任務觸發時會判斷每分鐘續約數量是否大於最大續約數的85%,若是大於就不開啓,若是小於就開啓(至關於短期內丟失了大量續約,自我保護機制開啓)
java
4.獲取服務 消費者服務啓動時,會發送一個Rest請求給服務註冊中心,來獲取上面註冊的服務清單。同時該緩存清單默認會每隔30秒更新一次。nginx
6.ribbon.ReadTimeout, ribbon.SocketTimeout這兩個就是ribbon超時時間設置,還有zuul.host.connect-timeout-millis, zuul.host.socket-timeout-millis這兩個配置,這兩個和上面的ribbon都是配超時的。區別在於,若是路由方式是serviceId的方式,那麼ribbon的生效,若是是url的方式,則zuul.host開頭的生效。(此處重要!使用serviceId路由和url路由是不同的超時策略)web
8.ribbon.connectTimeot是請求鏈接的時間,基本上都是很短的,因此這個請求的時間能夠忽略不記,ribbon.readTimeout=5000,所耗費的時間基本上都是在請求的處理時間上。因此計算的公式是(1+maxAutoRetries+maxAutoRetriesNestServer)*5000,該計算公式會得出一個值,hystrix的超時時間最好要大於這個值,若是小於這個值的話,那麼配置重試就沒有意義了,由於當系統還在進行重試的時候,就把這一次的請求熔斷了
spring
10.註冊中心須要集羣,1臺主,其他副,只有主註冊中心有服務註冊,主掛掉後有同步機制同步到其它註冊中心,中心只是拿地址,本地調用zuul網關服務既可做爲提供者也可做爲消費者json
11.服務隔離就是對不一樣方法使用不一樣的線程池,這樣對A方法的高併發不會影響到B方法 nginx:c語言開發 zuul: java語言 緩存
12.Eureka還提供了客戶端緩存的機制,即便全部的Eureka Server都掛掉,客戶端仍能夠利用緩存中的信息調用服務節點的服務 restful
13.get和post的表單請求是能夠獲取到參數的,可是post 的原生字符串請求,也就是application/json類型的請求是獲取不到的,你須要從流中讀取,就是request中getInputStream獲取,可是流只能獲取一次,若是你在過濾器中讀取了流,spring控制器裏就接受不到參數了,固然你能夠從新包裝下request,把參數從新寫回包裝後的request中網絡
14.zuul中的path不能和serviceId中的requestmapping路徑一致
併發