文档章节

微服务 WildFly Swarm 简介<十二>

woshixin
 woshixin
发布于 2018/06/20 17:34
字数 1302
阅读 51
收藏 1

我们将看到的最后一个Java微服务框架是一个相对较新的场景,它利用了 JBoss WildFly 应用服务器中已试过且受信任的 JavaEE 功能。WildFly Swarm 是 WildFly 应用服务器的一个完整的拆下来的组件,可以被组装并形成一个利用 JavaEE API 的微服务应用程序,这些组件被称为片段大小的、可重用的组件。组装这些部分就像在 Java Maven(或Gradle) 构建文件中包含依赖项一样简单,而 WildFlyS 负责处理其余部分。

近15年来,应用服务器和 JavaEE 一直是企业 Java 应用程序的操纵者。WildFly(以前的 JBoss Application Server)是一个支持企业的开放源码应用服务器。许多企业大量投资于 JavaEE 技术(无论是开放源码的还是专有的供应商),从他们如何雇用软件人才,以及整体培训、工具和管理。JavaEE 始终能够通过提供 servlet/JSP、事务、组件模型、消息传递和一致性等功能来帮助开发人员构建分层应用程序。JavaEE 应用程序的部署被打包为 EAR ,它通常包含许多 WAR、JAR 和相关配置。一旦您有了Java存档文件(EAR/WAR),您就需要找到一个服务器,验证它是按照您期望的方式配置的,然后安装您的归档文件。您甚至可以利用动态部署和重新部署(虽然在生产中不建议这样做,但它在开发中可能很有用)。这意味着您的档案可以相当精简,并且只包括你需要的商业代码。不幸的是,这导致了 JavaEE 服务器的膨胀,必须考虑到应用程序可能需要的任何功能。它还导致了过度优化,包括哪些依赖项要共享(只需将所有内容放在应用服务器中!)以及哪些依赖项需要隔离,因为它们的变化速度与其他应用程序不同。

应用服务器为在应用服务器的单个实例中管理、部署和配置多个应用程序提供了单一的点。通常,您可以通过在不同节点上创建应用服务器的实例来对它们进行集群以获得高可用性。当太多的应用程序共享一个部署模型、一个进程和一个JVM时,问题就开始出现了。当开发应用服务器中运行的应用程序的多个团队拥有不同类型的应用程序、更改速度、性能或 SLA 需求等时,就会产生阻抗。只要微服务体系结构能够实现快速变化、创新和自治,那么 JavaEE 应用程序服务器和将应用程序集合管理为单一的、集于一身的服务器并不能实现快速更改。此外,从操作的角度来看,精确地管理和监视在单个应用服务器中运行的服务和应用程序变得非常复杂。从理论上讲,单个JVM更容易管理,因为这只是一回事,但是JVM中的应用程序都是独立的部署,应该将其视为独立部署。当我们试图将单个进程中的单个应用程序和服务视为“一件事”时,我们会感到这种痛苦,这就是为什么我们有非常昂贵和复杂的工具来尝试和完成这种反省。团队解决其中一些问题的方法之一是将单个应用程序部署到应用服务器。

尽管 JavaEE 环境中应用程序的部署和管理可能不适合微服务环境,但是 JavaEE 提供给应用程序开发人员的组件模型、API 和库仍然提供了很多价值。我们仍然希望能够使用持久性、事务、安全性、依赖注入等等,但是我们希望在需要的地方按̀顺序使用这些库。那么,我们如何利用我们对 JavaEE (它在微服务环境中所带来的力量)的知识呢?这就是 WildFly Swarm 群适合的地方。

WildFly Swarm 可以使用 pom.xml (或 Gradle 文件),确定您的微服务实际使用的 JavaEE 依赖关系(例如CDI、消息传递和servlet),然后构建一个 JAR (就像 SpringBoot 和 Dropwizard 一样),其中包含运行服务所需的最小 JavaEE API 和实现。这个过程被称为“just enough application server”,它允许您继续使用您熟悉和喜爱的 JavaEE API,并以微服务和传统应用程序风格部署它们。您甚至可以开始使用现有的WAR项目,WildFly Swarm可以自动和正确地审视它们,包括必要的 JavaEE API/片段,而不必显式地指定它们。这是一种将现有应用程序迁移到微服务风格部署的非常强大的方法。

 

原文:

作者源码:https://github.com/redhat-developer/microservices-by-example-source

有什么讨论的内容,可以加我微信公众号:

© 著作权归作者所有

woshixin
粉丝 33
博文 374
码字总数 281324
作品 0
杭州
程序员
私信 提问
WildFly Swarm 2017.12.1 实现了 Eclipse MicroProfile 1.2

WildFly Swarm 2017.12.1 已发布。看看带来了哪些变化? 更新内容: 升级至 WildFly 11.0.0.Final 升级至 Keycloak 3.4.0.Final 实现了 Eclipse MicroProfile 1.2 通过使用 CDI,减少 uber j...

局长
2017/12/16
636
4
微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin
2018/06/21
45
0
WildFly Swarm 2017.3.2 发布,Java 应用服务器

在经过一系列不良天气的影响之后 WildFly swarm 2017.3.0 和 2017.3.1 跳票了,而今天我们很高兴的宣布 2017.3.2 版本发布了。 该版本包含如下新特性: Keycloak Updates Logging noise Aut...

红薯
2017/03/04
659
3
WildFly Swarm 2017.3.3 发布,Java 应用服务器

WildFly Swarm 2017.3.3 发布了,该版本包含如下特性: Health API 更改 (breaking):health AP I从 org.wildfly.swarm.monitor 移动到 org.wildfly.swarm.health。团队表示对这个变更十分抱...

局长
2017/03/13
723
1
WildFly Swarm 2018.5.0 改进了 Eclipse MicroProfile

WildFly Swarm 2018.5.0 已发布,带来了以下的更新内容: 修复和改进 Eclipse MicroProfile 升级 fractions 以与 WildFly 11 配置相匹配 其中关于 Eclipse MicroProfile 的修复和改进如下: ...

局长
2018/05/05
474
8

没有更多内容

加载失败,请刷新页面

加载更多

Podman 使用指南

> 原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod。Podman 的使用体验和 Docker 类似,不同的是 Podman 没有 daemon。以前使用 Docker...

米开朗基杨
43分钟前
5
0
拯救 项目经理个人时间的5个技巧

优秀的项目经理都有一个共同点,那就是良好的时间管理能力。专业的项目经理会确保他们的时间投入富有成效,尽可能避免时间浪费。 时间管理叫做GTD,即Getting Things Done——“把事情做完”...

Airship
今天
6
0
LNMP环境介绍,Mariadb安装,服务管理,mariadb安装3

LNMP环境介绍 Nginx 处理的请求有两种,分为 静态与动态 图片,js,css,视频,音频,flash 等都是静态请求,这些数据都不是保存在数据库里面的 动态请求一般来说,需要的数据是在数据库里面...

doomcat
今天
1
0
前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
7
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部