搜尋
首頁Javajava教程使用 Java Spring Boot 建立可擴展的微服務:最佳實踐和技術第 -1 部分

整體架構

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

  • 我們將應用程式打包為 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
在Java應用程序中緩解平台特定問題的策略是什麼?在Java應用程序中緩解平台特定問題的策略是什麼?May 01, 2025 am 12:20 AM

Java如何緩解平台特定的問題? Java通過JVM和標準庫來實現平台無關性。 1)使用字節碼和JVM抽像操作系統差異;2)標準庫提供跨平台API,如Paths類處理文件路徑,Charset類處理字符編碼;3)實際項目中使用配置文件和多平台測試來優化和調試。

Java的平台獨立性與微服務體系結構之間有什麼關係?Java的平台獨立性與微服務體系結構之間有什麼關係?May 01, 2025 am 12:16 AM

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸縮性和便攜性。 1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GRAALVM與Java的平台獨立目標有何關係?GRAALVM與Java的平台獨立目標有何關係?May 01, 2025 am 12:14 AM

GraalVM通過三種方式增強了Java的平台獨立性:1.跨語言互操作,允許Java與其他語言無縫互操作;2.獨立的運行時環境,通過GraalVMNativeImage將Java程序編譯成本地可執行文件;3.性能優化,Graal編譯器生成高效的機器碼,提升Java程序的性能和一致性。

您如何測試Java應用程序的平台兼容性?您如何測試Java應用程序的平台兼容性?May 01, 2025 am 12:09 AM

效率testjavaapplicationsforplatformcompatibility oftheSesteps:1)setUpautomatedTestingTestingActingAcrossMultPlatFormSusingCitoolSlikeSlikeJenkinSorgithUbactions.2)contuctualtemualtemalualTesteTESTENRETESTINGINREALHARTWARETOLEALHARDOELHARDOLEATOCATCHISSUSESUSEUSENINCIENVIRENTMENTS.3)schictcross.3)schoscross.3)

Java編譯器(Javac)在實現平台獨立性中的作用是什麼?Java編譯器(Javac)在實現平台獨立性中的作用是什麼?May 01, 2025 am 12:06 AM

Java編譯器通過將源代碼轉換為平台無關的字節碼,實現了Java的平台獨立性,使得Java程序可以在任何安裝了JVM的操作系統上運行。

在平台獨立性的平台獨立性上使用字節碼優於本機代碼的優點是什麼?在平台獨立性的平台獨立性上使用字節碼優於本機代碼的優點是什麼?Apr 30, 2025 am 12:24 AM

ByteCodeachievesPlatFormIndenceByByByByByByExecutedBoviratualMachine(VM),允許CodetorunonanyplatformwithTheApprepreprepvm.Forexample,Javabytecodecodecodecodecanrunonanydevicewithajvm

Java真的100%獨立於平台嗎?為什麼或為什麼不呢?Java真的100%獨立於平台嗎?為什麼或為什麼不呢?Apr 30, 2025 am 12:18 AM

Java不能做到100%的平台獨立性,但其平台獨立性通過JVM和字節碼實現,確保代碼在不同平台上運行。具體實現包括:1.編譯成字節碼;2.JVM的解釋執行;3.標準庫的一致性。然而,JVM實現差異、操作系統和硬件差異以及第三方庫的兼容性可能影響其平台獨立性。

Java的平台獨立性如何支持代碼可維護性?Java的平台獨立性如何支持代碼可維護性?Apr 30, 2025 am 12:15 AM

Java通過“一次編寫,到處運行”實現平台獨立性,提升代碼可維護性:1.代碼重用性高,減少重複開發;2.維護成本低,只需一處修改;3.團隊協作效率高,方便知識共享。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。