- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 构建微服务指南
1
要构建微服务, Java 是一个非常好的选择。如何在容器中使用 Java 构建微服务?
本文为你讲述了三种构建方案,无论是哪种方案,要实现微服务,使用 Java 生态圈的
组件都是经过业界验证的。
概览
在 Java 生态系统中构建微服务的策略有三种,分别为:无容器、自成容器、外置容器。
以无容器的方式提供微服务,会把整个应用打包,包含所有依赖,打进一个 fat JAR
包中。
自成容器的微服务同样也是打成单个 JAR 包, JAR 包中会包含带有第三方类库的嵌入
式框架。
外置容器的微服务方式,会把整个 Java EE 容器和服务的实现打包进一个 Docker 容
器。
基于微服务的架构给架构师和开发者带来了新的挑战,不断出现的新语言和开发工具
使我们得以应对这个挑战。 Java 也不例外,本文将探索在 Java 生态系统中构建微服
务的新思路。
介绍
本文不讨论微服务的好坏,也不讨论你是否应该一开始就以微服务架构来设计应用,
或者是否应该将已有的庞大应用重构成微服务架构。
这里讨论的方法并不是仅有的方法,但它们会为我们看到其他可能带来启发。虽然本
文的重点是 Java 生态系统,但其中的概念对其他语言和技术也通用。
我在本文命名了几种方式为“无容器”、“自成容器”、“外置容器”。这些术语并
未被广泛使用,但是它们能足以区分每种方法的特点,我会在以下小节中讨论。
无容器方案
在无容器的方式中,开发者把 JVM 上的所有组件都看作应用的一部分。
无容器的方式使用单个 JAR 包部署(所谓的” fat JAR部署”),意味着,这个应用
以及它所有的依赖,都被打包成一个 JAR 文件,这个 JAR 可被作为独立的 Java 进程
启动。
2
$ java -jar myservice.jar
这方法其中一个优点是,可以根据需要非常简单地停启服务,以达到扩容或缩容的目
的;另一个优势是方便实现分布式部署,只需要同步一个 JAR 文件就可以了。
另一方面,它的缺点是类库依赖的兼容性问题。例如你需要使应用支持事务特性,你
只能靠自己了,或者需要引入支持这个功能是第三方类库。以后,每当你需要支持其
他特性,例如说,持久化,就很可能会遇到类库之间的兼容性问题。
自成容器方案
单 JAR 包的部署方式有一个变体,就是把你的服务基于一个内置框架构建。通过这种
方法,框架可以提供服务所需要的特性,开发者可以自行选择哪些特性被包含在服务
内。
你可能会争论说这和”无容器”方案不是一模一样吗?但是,在这我想特地区分开它
们,因为“自成容器”的方案实际上会提供一套具兼容性的第三方类库。
3
这种方案的实践通常涉及 Spring Boot 或 Wildfly Swarm 等框架。
Spring Boot
Spring Boot 和 Spring Cloud Netflix 项目对构建 Java 微服务有良好的支持。
Spring Boot 允许你从 Spring 系列的组件中挑选不同的部分出来,连同其他出色的外
部工具一起,和你的应用打包进一个 JAR 文件中, Spring Initializr 让你可以通过一个
复选列表的表单就完成这些工作。一个简单的 Hello World 服务在以下例子中可以看
到: Gist Snippet 。
Wildfly Swarm
WildFly Swarm 相当于 Jave EE 版的 Spring Boot ,它让你可以挑选 Jave
文档评论(0)