關于微服務和 Java 需要知道的 5 件事
許多企業在不斷努力加快開發速度,減少客戶遇到的宕機時間 。微服務架構是更快地迭代、更高效地擴展和創建適應能力更強的應用程序的唯一途徑。使用微服務構建的應用程序由各種各樣的服務組成,這些服務執行不同的功能,而且通常是使用不同語言編寫的。
Java 是一種歷史悠久的語言,一些人會問它在微服務環境中是否有用。這篇文章將給出 Java 對現代應用程序(包括微服務)仍有很大價值的一些理由。
以下是您應該知道的關于微服務和 Java 的 5 件事:
1.為什么我應該用 Java 編寫微服務?
Java 成為一種流行的語言選擇是有其充分理由的。它是一種強大的語言,擁有多年的運行任務關鍵型應用程序的經驗,并隨著新編程模式的出現而不斷改進。Java 在企業應用程序中得到普遍應用,培養了一大批擁有 Java 技能的軟件開發人員。利用現有技能很有意義,甚至從頭創建新應用程序時也是如此。微服務為他們提供了陡峭的學習曲線,而且添加一種新編程語言可能增加風險。它給創建、部署和在生產中管理微服務應用程序的過程引入了更多未知因素。
應用程序的前端通常是使用 JavaScript 創建的(尤其是基于 Web 的應用程序)。后端中常常會使用到 Java,用于獲得經得起實踐檢驗的數據管理。整個編程領域仍有很大的變化空間,但毫無疑問,Java 非常適合編寫微服務。
2.Java EE 在微服務領域為我提供了什么?
Java Platform, Enterprise Edition 或 Java EE 是由社區推動的企業 Java 應用程序標準。它提供了各種各樣的規范,受到大量供應商的支持。Java EE 中的許多標準非常適合微服務應用程序:使用 JAX-RS 提供 API,使用 JPA 處理數據,使用 CDI 執行依賴注入和生命周期管理,以便能夠更輕松地在應用程序中執行測試。
3.我應該如何打包 Java 微服務?
微服務應用程序應包含部署所需的一切資源。在不更改代碼或部署包的情況下,單個不可變的部署包應該能夠從開發環境遷移到生產環境,這明顯背離了傳統 Java EE 應用程序的標準。 創建一個 war 文件,然后將它交給運營團隊,讓他們添加應用服務器,這顯然不是微服務最佳實踐。相反,有兩種選擇:已打包服務器或容器。已打包服務器可以是可執行的 JAR 或 zip 文件,這無關緊要。該數據包應包含應用程序、任何依賴項和應用服務器。WebSphere Application Server Liberty、Wildfly Swarm 和 Spring Boot 都提供了此選項。第二個選項 是創建一個容器,通常是 Docker 容器。使用 Docker 容器會創建一個將應用程序分離的額外層。它們可部署到本地和云中,在開發和生產環境之間實現最大的平等性。
4.用于 Java 開發中的基于微服務的工具是否存在?
是,在 Java 中開發微服務時,有許多工具可簡化開發工作。服務發現解決方案(比如 Netflix Eureka、Consul 或 Amalgam8)很容易與 Java 微服務關聯起來。為了提高恢復和容錯能力,Netflix Hystrix 使用了一個 Java 客戶端提供了隔板和斷路器功能。還有其他一些可幫助測試新微服務的不錯工具。您會發現,在測試微服務時使用模擬對象非常有用,JMockit 和 Mockito 簡化了模擬對象的創建。
5.我是否需要在 Java 中編寫所有應用程序?
不需要,您不應該為了使用它而使用它。如果您已經掌握了一些 Java 技能,或者確定微服務的一些功能使用 Java 更容易完成,那么您可以使用 Java。否則,可以挑選適合自己狀況的語言。請保守一點,您應該不想維護一個使用了 10 種不同語言的微服務系統,但也不要害怕使用多種語言。要讓您的工作更輕松,可以采用一種通用數據結構(比如 JSON)和 API 文檔工具(比如 Swagger)。您的微服務應采用一種與語言無關的協議(比如 REST)進行通信,所以它們應始終能完美地協同工作。
更多信息
如您所見,Java 非常適合微服務是有諸多原因的(本文僅介紹了其中一小部分原因)。 如果您想了解有關的更多信息,或者掌握一些最佳實踐技巧,請持續關注我們后續推出的一系列關于 Java 和微服務的文章。
來自:http://www.ibm.com/developerworks/cn/java/j-cn-java-and-microservice-5-reason/index.html?ca=drs-