




各位大神將就著看吧,直接用文字發的話,提示有非法詞組,發不了,試了很多次都沒有發成功!!!
uj5u.com熱心網友回復:
我們專案之前也碰到過,最后也沒解決。uj5u.com熱心網友回復:
那最終怎么弄呢?放棄微服務嗎?非常奇怪的是,我之前有一個專案也是使用spring cloud的,不過是部署在自建的一個內網中,沒有任何問題。這次是部署在阿里云上,就出現這樣的問題,難道是阿里云上要配置什么東西嗎?埠已經配置開放了的。
uj5u.com熱心網友回復:
背景:spring cloud應用,注冊中心使用eureka,網關使用gateway,配置中心使用config,其它服務整合了feign和hystrix,有如下幾個服務:
eureka,啟動兩個,相互注冊
gateway,啟用一個
用戶服務,啟動一個,集成了feign和hystrix,會呼叫資料庫服務
業務處理服務,啟動一個,集成了feign和hystrix,會呼叫資料庫服務
資料庫服務,啟動一個。
快取使用redis,訊息使用spring cloud stream集成kafka(首先要安裝zookeeper)
資料庫端的配置就不提供了,主要就是一個整合spring data jpa的一個服務,除了和資料庫有關的配置和連接eureka的配置外,沒有其它配置了。在這里就不一一列出了。
說明:
我在本地開發環境啟動上述服務,啟動完成后30秒左右便可正常進行呼叫,沒有任何問題。
在我打包上傳到阿里云(centos7)上做測驗的時候,發現每個服務啟動后,都要很長時間才可用,我跟蹤了一下,服務啟動了大概要10多分鐘才可用,而且服務間呼叫,第一次也非常慢,
我把ribbon設定為饑餓加載和把hystrix禁用都沒解決。
問題:
1、如上所述,為什么服務在阿里上啟動,要等到10多分鐘才可用,是哪里出了問題?起初我以為是ribbon在作祟,但我把ribbon設定為饑餓加載和把hystrix禁用都沒解決。我試了一下,
我把其它服務正常啟動,達到可用狀態后,我再啟動資料庫服務(因為他是服務的提供者,沒有集成feign和hystrix),同樣要很長時間才可用。
2、服務可用后,第一次服務間呼叫(網關除外,網關是正常轉發的)非常慢,比如用戶認證服務在呼叫資料庫服務時非常慢,基本上很長時間(幾十分鐘)都查不出資料,偶爾有查了很長時間查出來的情況。
其它說明:
除了gateway外,其它服務都是在阿里的內網呼叫,我使用的是內網的IP,事實上是可以通過內網IP進行服務間呼叫的。服務器記憶體8個G,啟動服務后,剩余2個G左右。
PS:代碼就是發不上來,只能發圖(已經在帖子中發了)。
期望有知道解決辦法的大牛幫忙解決一下,非常感謝!
uj5u.com熱心網友回復:
經過跟蹤,問題出在JWT鑒權這里:Claims claims = Jwts.parser().setSigningKey(pubKey).parseClaimsJws(token).getBody();
我把這句代碼拆分:
JwtParser jwts = Jwts.parser();
logger.info("難道是這里嗎?---1");
jwts.setSigningKey(pubKey);
logger.info("難道是這里嗎?---2");
Jws<Claims> cliainmsJws = jwts.parseClaimsJws(token);
logger.info("難道是這里嗎?---3");
Claims claims = cliainmsJws.getBody();
logger.info("難道是這里嗎?---4");
發現代碼執行到 Jws<Claims> cliainmsJws = jwts.parseClaimsJws(token);這句時就不往下執行了,沒找到什么原因。過了7分鐘左右,代碼執行正常。(必須是初次呼叫,超時后過7分鐘左右才正常)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110244.html
標籤:Java EE
