eureka 註冊中心

一、eureka版本更新後,pom依賴名稱變化java

v1.2.7
spring-cloud-starter-eureka-server面試

v2.0.0
spring-cloud-starter-netflix-eureka-serverspring

 

二、經常使用註解json

@EnableEurekaServer註解 表示開啓EurekaServer服務,開啓註冊中心api

@EnableEurekaClient註解 表示將當前服務註冊到Eureka上安全

 

三、常見問題微信

1)以別名方式運行必須調用依賴ribbon負載均衡器 @LoadBalanced,不然會拋出java.net.UnknownHostException異常restful

2)集羣時註冊中心的服務名稱要相同網絡

3)Eureka集羣時,每一個註冊中心上面都會有相關服務,可是螞蟻課堂上面演示爲只有第一個註冊中心上面有服務,當第一個註冊中心關閉後,程序會在30秒後默認將服務放在第二個註冊中心上;微信開發

 

四、Eureka的自我保護機制

默認狀況下 EurekaClient 會定時向 EurekaServer 端發送心跳包,若是EurekaServer在必定的時間內沒有收到EurekaClient發送的心跳包,便會直接從服務註冊列表中剔除該服務(默認90秒內)。

可是若是在短期內丟失了大量的服務實例心跳,這時候EurekaServer就會開啓自我保護機制,不會去剔除該服務。

爲何不會剔除呢?

爲了防止EurekaClient是能夠正常訪問的,可是隻是EurekaClient與EurekaServer網絡訪問不通,防止誤剔除。

應該在什麼環境下開啓自我保護機制?

建議在本地環境禁止自我保護機制,在生產環境開啓自我保護機制。

由於本地測試可能須要頻繁的開啓/關閉某些服務。

關於自我保護機制的一些問題:

最好的體現就是:memberApp負載均衡,先開8400端口,關閉以後再開8401端口,此時你會發現註冊中心上始終都有8400端口的服務;而你關閉自我保護機制後,再重複以上步驟,這個8400端口會迅速消失;

--》idea升級爲2018.2後,這個memberApp負載均衡寫不了了,改變端口重啓服務時idea提示該項目爲單例模式,必須先關閉後重啓。【已解決】

###測試時須要關閉自我保護機制,保證不可用服務及時剔除

enable-self-preservation: false

eviction-interval-timer-in-ms: 2000

 

五、導入atom主題後,idea項目報錯,重構時遇到如下異常:

Error:Cannot run program "C:\Program Files\Java\jdk1.8.0_92\bin\java" (in directory "C:\Users\Administrator\.IntelliJIdea2017.1\system\compile-server"): CreateProcess error=2, 系統找不到指定的文件。

--》當初只顧看Event Logs了,沒有檢查SDK是否配置;

--》重裝後,SDK沒有配置,也出現該問題,配置好以後就沒事了;

 

六、DiscoveryClient能夠獲取服務的一些信息

 

七、Feign是一個聲明式的Http客戶端調用工具,採用接口+註解方式實現,易讀性比較強

 

八、因爲考慮到後續的服務降級,好比fallback屬性須要指定類路徑,而類路徑是是訂單服務,而不是會員服務;
--》服務降級取決於調用者,而不是被調用者;

 

九、依賴聚合項目

實體類最好放在接口項目中

Modifier 'public' is redundant for interface methods less... (Ctrl+F1)

Inspection info: Reports any redundant modifiers on interfaces or interface components.

接口不能加@RestController,由於接口不能被實例化

引入依賴時,版本號必須得加

依賴聚合項目想要達到的目的:避免傳統的feign缺點,在order中創建一個類寫着跟memberController同樣的內容,這樣很冗餘;因此就採用maven子父工程,這樣一來,在order中創建的feign類只須要繼承memberService就能夠了。

--》注意這個項目分了Service,ServiceImpl,可是沒有Controller,這個MemberService徹底和以前項目的feign類內容同樣。

 

十、碼雲寫中文,獲取時會亂碼

 

十一、接口產生背景

在面向服務架構和微服務背景下產生,目的都是爲了解耦。

rpc遠程調用中產生的

接口如何進行分類

開放接口:其餘機構合做夥伴進行調用(必須在外網訪問),如螞蟻開放平臺、微信公衆號開發

須要經過appid+appsocet生成accessToken進行通信。

對接支付開發、微信開發會用到。

這樣設計的目的:能夠受權一些接口權限,OAuth2.0協議方式,第三方聯合登錄。

內部接口

通常只能在局域網中進行訪問,服務與服務調用之間關係都在同一個微服務中。

目的是爲了保證安全問題。

面試問答,如今讓你去設計一套公司項目的接口,你會如何設計?

考慮:接口權限(開放接口|內部接口),開放接口要遵循OAuth2.0協議,內部接口要通過網關才能訪問;

考慮冪等性、安全性(https)--採用雙向加密、防止篡改數據(驗證簽名)、使用網關攔截接口,實現黑名單和白名單、 接口使用http協議+json格式,採用restful風格,目的是爲了跨平臺。

而後須要考慮高併發,須要對接口服務實現保護,進行服務降級、熔斷、隔離之類,最後使用統一API管理平臺api swagger

 

十二、後續的Swagger、SpringCloud bus消息總線、SpringCloud消息驅動、SpringCloudStream我沒有實踐,關於消息驅動這一塊我沒看完,由於對於消息隊列很不熟悉,有點聽不懂;

 

 

問題:

註冊中心關閉後,消費者還能夠訪問生產者?

zookeeper的臨時節點和持久節點?

不建議使用 synchronized,使用原子計數器,應爲線程安全,效率很是高,使用cas無鎖機制?

consul上面的order不能訪問member,螞蟻課堂沒有演示該場景?

螞蟻課堂說Controller不要,直接改爲Service;

繼承後,方法註解是否一併被繼承

同一個父/祖父工程下的項目,是否是能夠相互進行依賴

xxl-job

 

備註:

E:\Download Files\ChromeDownload\springcloud資料下載\cloud\文檔\11-18\上課代碼\springcloud-2.0-eureka-server

D:\Computer Files\File_Storage_Address\Software_Data_Center\IdeaProjects

必需要配置spring的倉庫地址,不然jar包下載不下來,就螞蟻課堂最後那句話

相關文章
相關標籤/搜索