福利导航久久91久久久-福利导航老司机-福利导航撸吧-福利导航入口-福利导航入口在线-福利导航在线-福利地址发布页-福利第一导航寻欲宫-福利电影-福利电影网

當前位置: 首頁 > 產品大全 > 黑馬程序員SpringCloud微服務實戰Day3 從零到一,我的踩坑與Bug攻堅實錄

黑馬程序員SpringCloud微服務實戰Day3 從零到一,我的踩坑與Bug攻堅實錄

黑馬程序員SpringCloud微服務實戰Day3 從零到一,我的踩坑與Bug攻堅實錄

Day3:服務注冊與發現的迷霧與破曉

經過前兩天的環境搭建與基礎概念梳理,Day3的實戰正式進入了微服務的核心環節——服務注冊與發現。本以為照著教程能一帆風順,沒想到卻踏入了一個又一個“坑”,但也正是這些坑,讓我對Eureka、Nacos這些組件的理解從“知道”深化到了“懂得”。

一、核心學習與實戰步驟

1. Eureka Server 搭建:相對順利,主要配置了服務端端口、關閉自我保護模式(為了在測試環境更直觀地看到服務剔除)和實例名。
`yaml
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false # 單機版server,不自我注冊
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
`

  1. 服務提供者(Provider)注冊:在商品服務模塊中引入spring-cloud-starter-netflix-eureka-client依賴,并在配置文件中指向Eureka Server地址。
  1. 服務消費者(Consumer)發現與調用:在訂單服務模塊中同樣引入客戶端依賴,并使用RestTemplateOpenFeign通過服務名進行調用。

二、踩坑與Bug記錄(全網最全實戰陷阱)

坑1:服務實例IP顯示異常,顯示為“127.0.0.1”或主機名
現象:Eureka控制臺的服務實例鏈接不可點,或指向錯誤地址。
原因:Eureka客戶端默認獲取的主機信息可能不正確,尤其是在Docker或多網卡環境中。
* 解決:在服務提供者的application.yml中強制指定IP地址和實例名。
`yaml
eureka:
instance:
prefer-ip-address: true
ip-address: 你的本機實際IP(如192.168.1.100)
instance-id: ${spring.cloud.client.ip-address}:${server.port} # 用IP:端口作為實例ID,更清晰
`

坑2:消費者無法通過服務名解析到提供者,報“UnknownHostException”
現象:訂單服務使用RestTemplate調用http://PRODUCT-SERVICE/product/1時,提示未知主機。
原因RestTemplate默認沒有負載均衡能力,無法將服務名解析為具體的實例地址。
解決:有兩種方案:
方案A(使用LoadBalanced):在創建RestTemplate的Bean上添加@LoadBalanced注解。
`java
@Bean
@LoadBalanced // 關鍵注解!
public RestTemplate restTemplate() {
return new RestTemplate();
}
`

  • 方案B(使用OpenFeign):直接使用聲明式客戶端,更優雅。需在主啟動類加@EnableFeignClients,并編寫接口。

坑3:OpenFeign接口編寫后,注入調用報“BeanCreationException”
現象:FeignClient接口定義無誤,但啟動時Spring容器創建Bean失敗。
原因:最常見的原因是依賴缺失掃描路徑問題
* 解決
1. 檢查是否引入了spring-cloud-starter-openfeign依賴。

  1. 確保主啟動類@EnableFeignClients注解的包掃描范圍能覆蓋到你的FeignClient接口。如果接口不在主類子包下,需指定:@EnableFeignClients(basePackages = "com.example.api")

坑4:服務下線后,Eureka控制臺仍有殘留(自我保護機制)
現象:手動停掉一個服務實例后,Eureka頁面仍顯示該實例,狀態為“DOWN”但未被剔除。
原因:Eureka Server的自我保護機制。當短時間內丟失過多客戶端(如網絡故障),Eureka會進入自我保護模式,保留所有實例,防止“誤殺”。這在生產環境是優點,在測試環境卻會造成困惑。
解決(僅供測試環境)
Server端:關閉自我保護,并縮短清理間隔。
`yaml
eureka:
server:
enable-self-preservation: false # 關閉自我保護
eviction-interval-timer-in-ms: 3000 # 清理間隔(毫秒)
`

* Client端:加快心跳和續約間隔。
`yaml
eureka:
instance:
lease-renewal-interval-in-seconds: 5 # 客戶端向服務端發送心跳的間隔(默認30秒)
lease-expiration-duration-in-seconds: 10 # 服務端收到最后一次心跳后等待時間,超時剔除(默認90秒)
`

三、運維服務視角的思考

今天的踩坑經歷,讓我深刻體會到開發與運維的緊密關聯。在微服務架構下:

  1. 配置即代碼:像instance-idprefer-ip-address這樣的配置,直接決定了服務在注冊中心的“可觀測性”和“可維護性”。清晰的命名和準確的IP是后續進行日志追蹤、服務治理的基礎。
  2. 理解默認配置:框架的默認配置(如Eureka的自我保護)往往為生產環境的穩定性設計。作為開發者兼未來可能的運維者,必須理解其原理,并知道如何在不同的環境(開發/測試/生產)中進行恰當的調整。
  3. 健康檢查與故障快速發現:服務注冊與發現不僅是“上線”,更是持續的健康監控。后續需要集成Actuator健康端點,并考慮如何與監控告警系統聯動,實現從“服務不可用”到“開發人員收到告警”的快速閉環。

四、明日計劃

成功打通服務調用后,明天將向更深處進發:

  • 深入負載均衡:Ribbon與LoadBalancer的原理與自定義策略。
  • 服務容錯堡壘:Hystrix或Sentinel實現熔斷、降級,這是保障系統高可用的關鍵。
  • 期待新的“坑”與突破!

---
****:Day3是一場從“連接失敗”的焦慮到“調用成功”的狂喜的旅程。每一個Bug都不是絆腳石,而是通往更深層理解的階梯。微服務之路,道阻且長,行則將至。

如若轉載,請注明出處:http://www.9i18.cn/product/61.html

更新時間:2026-07-31 19:03:02

產品大全

Top 主站蜘蛛池模板: 豆花性爱精品av | 深夜福利精品三区 | 97极品视频 | 成人a在线| 激情五月综合五月 | 日韩无码精品电影 | 国产凸凹视频一 | 亚洲人人在线视频 | 日本黄色网址在线 | 毛片传媒 | 欧美色色潮喷 | 中文av| 国产噜噜在线视频 | 丁香五月香 | 亚州欧美另类色图 | 男和女操在线网站 | 宅男福利在线视频 | 成人黑料AV | 福利导航网 | 深夜福利偷拍视频 | 精品四区| 日韩超碰 | 日韩电影排行榜 | 在线视频一区二区 | 激情六月欧美 | 欧美精品一区 | 欧美喷潮合集 | 午夜激情福利在线 | 先锋影音AV | 欧美极度变态 | 97在线观看| 精品国产二区 | 国产黑丝一区 | 青青草电影院 | 欧美毛茸茸视频 | 日韩免费视频播放 | 91人人爱爱 | 在线网址无码观看 | 国产欧美中文 | 国产免费视频观看 | 欧美在线|亚洲 |