针对微服务架构优化企业Java
Eclipse MicroProfile计划是在JavaOne 2016上发起的,JavaOne是服务器供应商和Java用户组的创意,目的是解决企业Java微服务领域的缺点。 Java EE的发布速度减慢到无法应对Swift发展的微服务趋势的挑战的程度。 MicroProfile通过将个人,供应商和社区组织进行开放式协作来解决此问题,从而为EE生态系统提供微服务。
什么是Eclipse MicroProfile?
MicroProfile指定了Java EE API和技术的集合,它们共同构成了核心基准微服务,旨在提供跨多个运行时的应用程序可移植性。
MicroProfile 1.0规范包括30多个Java Enterprise规范的子集,它们是:用于RESTful端点的JAX-RS 2.0,用于扩展和依赖项注入的CDI 1.1,以及用于处理JSON消息的JSON-P 1.0。 为什么只是这三个? 这是因为这表示构建微服务所需的API最少。
预计2.0版将更加广泛,并计划包含积压的部分功能,这些功能包括:配置,通过JSON Web令牌 (JWT)进行的安全性,运行状况检查, JSON绑定 ,监视,OpenTracing和容错功能。 另外,它将使所有API与Java EE 8保持一致。
许多受人尊敬的服务器供应商都提供运行时。 支持MicroProfile架构的是:IBM的WebSphere Liberty , Tomitribe的TomEE, Payara ,RedHat的WildFly Swarm和KumuluzEE 。
社区支持来自伦敦的Java社区和SOUJava以及许多个人谁给他们的时间和精力。
Eclipse MicroProfile的动机
Java EE的成熟已导致发行节奏减慢,这对于微服务社区来说太慢了。 但是,这并没有阻止Java Enterprise技术用于开发微服务,实际上,Java EE中的微服务已经做了很多努力。
每个供应商都在就正确的微服务方式实施自己的见解,这个空间变得越来越分散。 显然,如果不寻求凝聚力,那么供应商分散是不可避免的结果。 因此,在更好地进行微服务的指导下,厂商和用户组之间进行了协作。
随着Java EE的完整配置文件变得如此庞大,最后有30多个API,在构建被称为“ micro”的东西时,尤其是当您不打算使用这些API中的绝大多数。 必须找到一种更苗条,更好的解决方案。
目标
在这些动力中,有四个压倒一切的目标,所有参与开源项目的人都力求追求。 这些目标可以概述如下:
避免在供应商和实现者之间分散,以解决对微服务空间采用统一方法的需求。 通过微服务的通用策略,这导致服务器供应商之间的微服务互操作性。
通过懒惰的共识快速构建,以允许快速开发和迭代。 这导致了高频发布节奏,满足了社区快速周转的需求。
通过Eclipse组织的框架在Java EE空间中创建更多开源技术。 当这些技术转移到JSR格式时,这允许组织充当规范领导者。
最终目标是为Java社区流程 (JCP)提供规范请求 (JSR),该规范请求由开发人员和企业可以依赖并实际需要的明智方法和实现来支持。
MicroProfile尝试从Java EE技术的角度理解微服务,而不是与Oracle竞争,而是在边缘进行创新并向JSR反馈。
1.沙盒开放贡献方法
Eclipse MicroProfile具有一种独特的开放贡献方法,该方法允许通过MicroProfile沙箱存储库立即启动。 您只需派生沙盒存储库 ,创建一个不同的子目录,编写您的想法,并提交所需的任意数量的拉取请求,以探究提案背后的概念。
即使尚未活跃在社区中,任何人都可以通过这种方式做出贡献。 这种方法提供了零进入门槛,并允许任何有志于做出贡献的人捕捉想法。
不断发展您的想法是毫不费力的。 在社区论坛上启动一个新线程以宣布您的想法,并等待几天(72小时)以收集反馈。 考虑并响应反馈,进行适当更新,并在不适用反馈时提供理由。 一旦您的想法被接受,就可以通过懒惰的共识,将您的贡献迁移到其自己的存储库,在该存储库中开始进行规范,API和测试套件的工作。
如果您不想一个人工作,可以在Google网上论坛中公开表达您的想法,以寻求社区的支持。 这是所有讨论发生的地方。 您可以找到其他有相同兴趣并愿意在您的想法上与您合作的人。
2.挑战人们对Java EE的重要性的看法
传统上对Java企业版的看法是,它笨重,笨重且部署缓慢,这在它的早期生命中都是如此,但是由于Eclipse MicroProfile的努力,这种看法正在成功地受到挑战。
在MicroProfile Eclipse开发人员资源页面上,可以找到体系结构会议应用程序键代码示例,您可以使用该示例代码来自行测试MicroProfile Java EE应用程序的轻量级特性。 如果您没有时间,请观看此精彩的演讲 。
关键代码示例包括四个微服务和一个前端应用程序。 在演示中,每个微服务都是使用MicroProfile体系结构开发的,并部署在四个参与的供应商的服务器之一上。
一个maven插件将应用程序编译为WAR,并将其与服务器运行时一起打包为JAR。 它使用java -jar命令通过命令行启动。 查看下表,您会发现JAR大小很小,启动时间也很短。 这些数字使任何其他Java EE框架都可以赚钱。
供应商 | 微服务 | JAR大小/ Mb | 启动时间/秒 |
WebSphere自由 | 会议投票 | 35 | 7 |
苍蝇群 | 届会 | 65岁 | 6 |
帕亚拉 | 会议时间表 | 33 | 5 |
汤姆 | 扬声器 | 35 | 3 |
每个供应商的实现都利用服务器体系结构的优势来优化部署。 例如; IBM的WebSphere Liberty使用“功能”来选择所需的Java EE技术并打包应用程序所需的内容。 WildFly Swarm使用“分数”来“调整大小”服务,以确保部署中仅包括所需的API。
所有供应商的共同特点是优化了打包部署的方式。 仅包含足够的代码即可使其工作,从而可生成最小大小的超级JAR。
3.高节奏释放哲学
不同版本之间的Java EE发行周期通常需要数年,对于标准驱动的生态系统来说,这是完全正确的。 标准组织不是为了创新而是为了标准化而存在。 一旦将其充实并证明可以工作,他们就会收集经过验证的想法。
尝试在标准组织内部进行创新会挫败陷阱,事实证明这是灾难性的。 CMP(容器管理的持久性)是委员会猜测人们想要的东西并弄错了它时发生的事情的一个示例。
微服务的世界瞬息万变,对于社区来说,多年的发布周期太长了。 MicroProfile的目标是通过缩短周期并使其更具迭代性来对此进行改进。 这个想法是尝试建议,看看什么有效,什么无效,然后以“快速迭代,快速失败”的过程进行。 坏主意很快就会被淘汰,只留下好主意。 随着技术的成熟,可以将它们提交给JCP,以供将来的JSR考虑。
缩短发布周期的目的是经常交付某些东西,即使这只是一个主意。 比提出很多想法要晚两年,这被认为是更可取的。
MicroProfile当前计划的发行版在Eclipse MicroProfile网站上公开宣布。
4.在所有阶段都完全透明
事实证明,导致社区真正想要的解决方案的指导思想是完全透明。 这是Eclipse MicroProfile采取的方法。 所有讨论都是在Google网上论坛进行的,所有讨论都在这里开始并蓬勃发展,任何人都可以发表评论或提出新想法。
每两周进行一次Google Hangouts,这是整个过程不可或缺的一部分,欢迎所有人参加会议。 他们会在社区论坛上提前宣布, 会议记录会以Google文档的形式发布,以供所有人查看。
在Eclipse Project网站上认可了贡献者,在该站点上,谁是最大的个人和组织贡献者以及哪个公司成员最活跃,这一点是透明的。
5. CDI中心编程模型
上下文和依赖注入规范是Java EE生态系统中功能最强大,功能最丰富的规范之一,并且经常被其他API所利用。
它最强大的两个功能是拦截器和观察器。 拦截器执行与业务逻辑正交的跨领域任务,例如审计,日志记录和安全性。 开发人员需要的各种微服务属性的基本功能。
内置事件通知模型实现了观察者模式,以提供功能强大且轻量级的事件通知系统,可以在整个系统范围内利用该事件通知系统。
在这些功能之上,您可以获得服务器和客户端的预期分离(依赖注入的本质)以及整个CDI规范,包括定义bean的生命周期,类型安全注入,范围,生产者方法,限定符和完整服务提供者的能力。允许第三方集成的接口(SPI)。
显而易见,为什么选择此API作为基准Java EE微服务的核心依赖项。
如何参与?
参与其中再简单不过了。 跳至Google网上论坛 ,选择一个可以调整您的兴趣的话题,然后开始阅读和评论。 喜欢说话吗? 然后参加每两周一次的Google Hangouts并表达自己。 如果您有尚未讨论的功能想法,那么为什么不启动线程并获得一些反馈。 如果您想深入一探,则可以派生microprofile-sandbox存储库并进行编码。 您无法介入其中。
您要点击的链接
进一步阅读
我已经发表了更多有关Java EE的文章。 以下是您可能感兴趣的主题的简短列表:
- Java EE:过去,现在和未来
- 上下文和依赖注入 (CDI)
- 企业Java Bean (EJB)
- JSP,JSP和表达语言
- RESTful Web服务
- Java Persistence API简介 (JPA)
- 什么是JAX-RS批注?
- @Context注释用于什么?
- JAX-RS @Consumes和@Produces批注
- Bean验证失败管理
学到更多
如果您想了解有关Java EE的更多信息,请尝试我的Lynda.com视频培训课程。 它们涵盖了多种Java EE技术:
翻译自: https://www.javacodegeeks.com/2017/09/eclipse-microprofile-5-things-need-know.html