首頁  >  文章  >  Java  >  使用 Java Spring Boot 建立可擴展的微服務:最佳實踐和技術第 -1 部分

使用 Java Spring Boot 建立可擴展的微服務:最佳實踐和技術第 -1 部分

PHPz
PHPz原創
2024-08-17 18:51:32775瀏覽

整體架構

  • 如果我們在單一專案中開發所有功能,那麼它被稱為基於整體架構的應用程式。

  • 我們將應用程式打包為 jar/war 以部署到伺服器中。

  • 由於整體應用程式包含所有功能,它將成為 fat jar/war。

優點
1) 易於開發和管理。
2) 一切都在一處可用。
3) 只需配置一次。

缺點
1)維護困難
2)單點故障
3) 如果我們執行任何更改,則整個專案將重新部署和測試。
4) 開發人員可能不了解整個模組,因此更難開始修復問題。
5) 如果某個模組的負載太大,我們需要創建完整應用程式的多個實例,這會佔用大量空間,因為每個模組彼此緊密耦合。

Building Scalable Microservices with Java Spring Boot: Best Practices and Techniques part -1

為了克服單體式的問題,微服務架構應運而生

微服務架構

  • 微服務不是一種程式語言、框架或 API。微服務是一種架構設計模式。

  • 微服務建議以鬆散耦合的方式開發應用程式功能。

  • 在微服務架構中,我們不會在單一專案中開發所有功能。我們將專案功能劃分為多個 REST API。

  • 微服務不只與java相關。任何特定於程式語言的專案都可以使用微服務架構。

微服務是我們開發小型服務的一種方法,每個服務都在自己的容器/進程/伺服器上運行,服務應該是輕量級的並且可獨立部署。這可以實現更快的開發、部署和可擴展性。

正如你所看到的,單體應用程式的員工模組、客戶模組、地址模組和課程模組現在都轉換成了小型服務,所以這裡它們就像員工服務、客戶服務、地址服務和課程服務。在單體應用程式中,使用單一資料庫,但在微服務應用程式中,每個服務都有自己的資料庫。他們現在相互依賴。每個服務都在相互通信,其餘的調用。

Building Scalable Microservices with Java Spring Boot: Best Practices and Techniques part -1

優點

  • 技術獨立性(我們可以使用Python、Go等多種技術開發後端API)
  • 資料庫獨立性。

  • 每個服務都是相互獨立的(鬆散耦合),因此我們可以獨立部署每個服務。

  • 如果在任何服務中執行任何更改,則無需部署所有服務,只需部署一個服務即可。

  • 開發一項服務不需要了解整個應用程式。

  • 單一微服務的故障不會影響整個應用程序,增強整體彈性。

  • 更小的程式碼庫和關注點分離使維護和偵錯更易於管理。

  • 由於其較小且獨立的性質,各個微服務可以根據需求獨立擴展,而無需擴展整個應用程式。

  • 每個服務都可以進行不同的測試。

缺點

  • 如果我們想要在一個服務配置中執行更改,那麼我們需要對每個服務配置執行更改,例如,我所有專案中的每個 application.properties 檔案中都存在一個公共屬性。
company.name=tier3Hub

因此,如果我們想要更改公司名稱,那麼我們需要更改所有服務的名稱。

  • 由於服務之間的相互依賴性和交互,測試基於微服務的應用程式可能會更加複雜。

  • 每個服務都會處理一定數量的請求,之後如果我們發送的請求多於服務就會關閉,因此我們需要該服務的多個實例,並且在我們需要的服務的不同實例中路由請求負載平衡器平衡來自客戶端的請求和不同實例中的路由。但是用 Java 寫負載平衡器很困難。

為什麼選擇 Java 來實現微服務

Java提供了一個名為Spring-Boot的框架來開發Rest API,Spring-Boot提供了很多功能,例如自動配置、嵌入式伺服器,如果我們正在開發服務,那麼需要在伺服器上部署sech服務而spring -Boot提供了tomcat伺服器,因此每個服務都運行在tomcat的不同連接埠上。例如,員工服務在連接埠 8080 上運行,課程服務在連接埠 8081 上運行,並且每個服務都有自己的伺服器。

Building Scalable Microservices with Java Spring Boot: Best Practices and Techniques part -1

在 spring-Boot 的幫助下,提供了快速開發、更少配置、生產就緒應用程式和 stater 專案的功能

Spring框架下有一個名為Spring Cloud的專案提供了現成的微服務支持,Spring Cloud提供了一些通用的工具和技術來快速開發通用的微服務模式。

Spring Cloud 專注於為典型用例提供良好的開箱即用體驗,並提供可擴展機制以覆蓋其他用例

  • 分散式/版本化配置
  • 服務註冊與發現
  • 路由
  • 服務到服務的呼叫
  • 負載平衡
  • 斷路器
  • 分散式訊息傳送
  • 短暫的微服務(任務)
  • 消費者驅動和生產者驅動的合約測試。

微服務架構

我們沒有固定的微服務架構,開發人員根據專案需求客製化微服務架構,大多數專案都會使用微服務架構中的以下元件。

1) 服務註冊中心(Eureka 伺服器)

2) 服務(REST API)

3)服務間通訊(FeginClient)

4) API 閘道

5) 管理伺服器

6) 拉鍊

結論

Java 中的微服務改變了我們軟體開發的方式,將靈活性、可擴展性和彈性提升到了一個新的水平。 Java 豐富的生態系統與 Spring Boot、Micronaut 等框架相結合,使其成為建立能夠滿足現代應用程式需求的微服務的絕佳選擇。

當我們探索這種架構時,就很清楚為什麼微服務比傳統的整體應用程式更受歡迎。它們提供模組化和獨立性,允許團隊單獨開發、部署和擴展服務。在雲端原生功能日益成為標準的世界中,這一點尤其有價值。然而,這個過程也暴露了一些挑戰,例如確保資料一致性、管理服務間通訊以及維護跨服務的強大安全性。

隨時了解工具和實踐的最新進展對於使用微服務的 Java 開發人員至關重要。環境不斷發展,那些適應的人將最有能力充分利用這種架構的潛力。 Java 微服務的未來看起來充滿希望,框架和工具不斷改進,並且得到越來越多渴望分享知識和經驗的開發人員社群的支持。

在 Java 中採用微服務意味著為創建更具彈性、可擴展性和可維護性的應用程式打開了大門。透過遵循最佳實踐並致力於持續學習,開發人員可以釋放軟體開發的新可能性,從而帶來更創新和高效的解決方案。

以上是使用 Java Spring Boot 建立可擴展的微服務:最佳實踐和技術第 -1 部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn