精心挑選了一些值得一讀的有趣的 Java 和 Spring 文章。這些文章包括容錯、多個休息請求、混合雲策略、自動化 Java 測試、2fa 安全、面向對映程式設計等主題。
1. 在 Java 中呼叫微服務
本文全面概述了在 Java 中呼叫微服務的最佳實踐和實用解決方案,旨在幫助開發人員在微服務架構實現中做出明智的決策。
- 使用 HttpURLConnection實現基本 HTTP 請求:在 Java 中呼叫微服務的最簡單方法是使用HttpURLConnection類。這使您的應用程式可以直接傳送 HTTP 請求並接收響應。
- 使用Apache HttpClient:它支援許多高階功能,例如連線池,這意味著它可以有效地處理許多請求、身份驗證和處理代理。
- 使用Spring的RestTemplate和WebClient:
- 將 Feign 用於宣告式 REST 客戶端:Feign 是一個工具,可讓您編寫非常簡單的程式碼,透過定義介面來進行 HTTP 呼叫。
最佳實踐和常見錯誤
- 使用連線池:效能更好。
- 實施錯誤處理:使用重試、超時和斷路器來使您的應用程式更加可靠。
- 選擇支援良好的庫,例如 Apache HttpClient 或 WebClient,而不是自己管理 HTTP 連線。
- 密切關注您的 HTTP 流量:記錄請求和響應有助於除錯問題。
- 保護您的 HTTP 請求:使用 HTTPS 和正確的身份驗證方法。
2. 在 Spring Boot 和 Kafka 中啟用跟蹤的指南
本文強調,在 Spring Boot 和 Kafka 中啟用跟蹤對於維護和最佳化現代分散式系統至關重要。透過遵循該指南,開發人員可以更深入地瞭解其應用程式,從而提高效能和可靠性。
對於希望使用 Spring Boot 和 Kafka 在微服務架構中實現強大的跟蹤機制的開發人員來說,本指南是寶貴的資源。
儲存庫將包含所有程式碼。
如果我們透過api 釋出訊息,我們應該在消費者中看到。
雖然我們可以看到訊息進入 Kafka 以及消費者。
- 但是:這些訊息只是訊息物件的字串表示形式。並且沒有跟蹤標頭。
- 預設情況下只配置了字串序列化器,無法實現Json序列號
方法#1:
我們可以為 messageKafkaTemplate 建立一個自定義 Bean,並在那裡配置 json 序列化器
方法#2
為此,我們不必建立任何自定義 bean。只需從 spring 屬性檔案配置預設值序列化器
spring: |
雖然我們可以在消費者中接收發布者釋出的訊息,但它沒有列印跟蹤 ID:
- 透過分析日誌來檢視跟蹤 ID 以及它們是否傳播到不同的服務。
- 我們可以使用 zipkin 或 jaeger 等工具來更好地理解。
實現列印跟蹤 ID的兩個步驟:
第一步:我們必須在 kafka 模板中開啟觀察才能釋出帶有跟蹤上下文的訊息。我們需要對消費者做類似的事情。我們必須宣告一個容器工廠 bean,我們可以在其中自定義消費者工廠屬性以啟用觀察。像這樣:
@Bean |
最後一步是告訴 kafka 監聽器使用這個容器工廠,而不是預設的容器工廠,就像這樣:
@KafkaListener(topics = <font>"topic-message", groupId = "message-consumer-group", containerFactory = "messageContainerFactory") |
3. Java 中使用 Failsafe 的容錯
Failsafe 庫是一個向 Java 應用程式新增容錯功能的強大工具。透過利用其功能,開發人員可以建立能夠優雅地處理故障的彈性系統,確保高可用性和可靠性。
本指南有效演示瞭如何實現和配置Failsafe,為增強Java應用程式的容錯能力提供了實際示例和最佳實踐。
4. 如何在 CompletableFuture 中進行多個 REST 呼叫
本文的結論是,這CompletableFuture是一個在 Java 中進行並行非同步呼叫的強大工具,在 REST API 上下文中非常有用。它提供了必要的工具和示例來實現高效、健壯的非同步操作,從而提高應用程式的效能和響應能力。
5. 保護 Spring Boot 堡壘:2FA 方法指南
將 2FA 新增到 Spring Boot 應用程式可顯著增強安全性。透過實施 TOTP、SMS 或基於電子郵件的 2FA 等方法,開發人員可以保護敏感使用者資料並提高整體應用程式安全性。遵循最佳實踐可確保穩健且使用者友好的 2FA 實施。
6. Java 中的面向對映(Map-Oriented)程式設計
面向對映的程式設計是資料操作和轉換的強大範例,具有可讀性、表達性和並行性等優點。透過利用 Java 的 Stream API,開發人員可以實現 MOP 概念,為資料處理任務編寫乾淨、高效且可維護的程式碼。
Map是一把錘子。這是一個非常有用和方便的工具,但我們過多地依賴它Map作為通用工具和靈活的返回型別。 Java 記錄憑藉靜態型別的優勢為我們帶來了新的便利。