MicroProfile 1.2新增功能介绍
Eclipse Foundation最近发布了MicroProfile 1.2版,该版本提供了下列新增API:
\\
- Health Check 1.0\\
- Health Metrics 1.0\\
- Fault Tolerance 1.0\\
- JWT Propagation 1.0\
Health Check API可以判断计算节点是否即将终或关闭,随后会使用正常运行的新实例替换这样的节点。该API包含了内建的类注释@Health
,该类必须实现HealthCheck
接口并覆盖call()
方法。
\\
Health Metrics API为每个计算进程提供了众所周知的监视端点和度量值,并提供了下列内建注释,可添加到任何类或方法中:
\\
@Counted
- 将方法、构造函数或类型标记为计数器(Counter)。 \\@Gauge
- 将方法标记为计量器(Gauge)。 \\@Metered
- 将方法或构造标记为已度量(Metered),并追踪它们的调用频率。 \\@Timed
- 将已注释对象的方法或构造标记为已计时(Timed),并追踪这些已注释对象的调用需要花多长时间完成。 \\@Metric
- 请求注入或注册某个度量值(Metric)。\
Fault Tolerance API提供的新策略以及相应的注释可添加至任何类或方法:
\\
@Timeout
- 定义必须的超时时间。 \\@Retry
- 定义必须进行重试的条件。 \\@Fallback
- 为失败的执行提供了备选解决方案。 \\@Bulkhead
- 防止系统超载或无限等待。 \\@CircuitBreaker
- 隔离失败,让系统的其余部分可以正常运转。\
JSON Web Token(JWT)Propagation API是一种基于令牌的身份验证/授权系统,其中包含一系列互操作标准。
\\
Config 1.1 API按照设计可在运行时注入配置值,此次更新修复了一些Bug,并增加了一些原本不具备的重要功能,借此改善了与相关规范的配合效果。
\\
按照官网介绍,这个版本还提供了其他一些收益:
\\
- 为Enterprise Java微服务的实现提供了更多功能 \\
- 跨越不同MicroProfile实现的互操作性使得用户能够在一个应用程序中自由选择使用一个或多个MicroProfile实现 \\
- 为每个API提供了一套完备的周边资源,包括测试兼容性工具包(TCK)、Javadoc、PDF版文档、API Maven artifact coordinate、Git标签以及可下载内容(规范和源代码)\
按照MicroProfile路线图的未来规划,后续的MicroProfile 1.3版计划在2017年12月15日发布,会新增下列API:
\\
- Open Tracing 1.0\\
- 一种跨越不同微服务的分布式追踪系统(类似Zipkin),可用于解决延迟问题。\
\\
- Open API 1.0\\
- 一种符合Open API规范的API开发者工具框架。开发Swagger Open API 工具的SmartBear Software公司最近已经加入Eclipse MicroProfile Group。\
\\
- TypeSafe REST Client 1.0\\
- 一种可供消耗REST服务的类型安全方式。\
\
MicroProfile 2.0计划在2018年3月31日发布,将包含对下列Java EE 8 API的升级:
\\
- JSON-B 1.0 \\
- JSON-P 1.1 \\
- CDI 2.0 \\
- JAX-RS 2.1\
MicroProfile自从2016年9月发布时,就承诺将在Java中采用微服务。有关此次发布最新版的详细信息可参阅MicroProfile 1.2规范。
\\
IBM CDI和MicroProfile开发主管Emily Jiang,以及Payara公司Java中间件顾问Michael Croft向InfoQ介绍了本次发布的新版本。
\\
InfoQ:你们对于新增的EE4J项目有何看法?
\\
\
Emily Jiang:新增的EE4J项目是开源领域一个了不起的创新。所有社区,包括由于许可条款限制而无法使用Java EE TCK的社区,都能从中获益。该项目已经尽可能保持敏捷、灵活、开放、兼容,Java开发者当然是最大的受益者。希望该项目的新版发布节奏可以进一步加快,借此彻底终结Java EE四年甚至五年为单位的发布周期。TCK的开放可以让所有应用程序服务器获益,尤其是原本因为许可费用缘故,未能进行TCK认证的程序。
\\
希望能有越来越多的Java容器和框架社区以开放和公开为背景展开合作,与Java开发者进行更坦率的交流。每个开发者都能对项目做贡献,提出或讨论问题。我很看好新的EE4J项目,并且希望继续为项目的发展贡献自己的力量。
\
\\
\
Michael Croft:我本人对此很激动,我觉得过去多年来,业界发生的很多事情已经证明了开源软件的力量,尤其是类似Oracle和IBM这样的重量级选手也开始投身社区工作。对于JSF,一些专家组成员已经提出要以社区的力量推动相关规范继续发展。对于EE4J,入门的门槛已经大幅降低,我们已经通过邮件列表和GitHub获得了大量的反馈。
\
\\
InfoQ:在EE4J的贡献中,你们觉得MicroProfile扮演了什么角色?
\\
\
Jiang:MicroProfile已经诞生多年。在一年时间里,已经成功发布了MicroProfile 1.0(CDI 1.2、JAX-RS 2.0、JSON-P 1.0)、MicroProfile 1.1(Config 1.0)和MicroProfile 1.2(Config 1.1、Fault Tolerance 1.0、Health 1.0、Metrics 1.0和JWT 1.0)。已经发布的规范为Java EE提供了众望所归的微服务开发功能。例如Config JSR是JCP在十多年前提出的,但提出之后除了两次失败的尝试,从来没被接受过。
\\
与之相对的,MicroProfile Config只用了几个月就公开发布了,并且获得了大量反馈。MicroProfile社区很有创新精神,完全是由开发者推动的,一切都维持开放和透明。这里取得的所有成果都为敏捷、开放、灵活和兼容设立了绝佳的典范。在类似目标以及Eclipse的推动下,未来的EE4J也将能轻松接纳MicroProfile技术。
\
\\
\
Croft:围绕MicroProfile的诸多努力都是为了以更快的节奏实现创新。从最开始,MicroProfile的目标就在于独立发展,同时依然维持与Java EE的密切关系,毕竟MicroProfile是基于Java EE API发展起来的。
\\
MicroProfile的角色早已通过MicroProfile开发出的第一个API彰显出来了:配置(Config),在最初公布了要迁移至Eclipse之后,该API就以JSR的形式顺利提交。很明显,这两个项目可以通过很多方式相互关联,不过目前依然保持了这样的形式。
\\
我觉得,MicroProfile已经具备继续发展所需的一切。它已经在很大程度上实现了与Java EE/EE4J的兼容,而MicroProfile发展出的任何规范都会直接提交至EE4J。
\
\\
InfoQ:随着MicroProfile 1.3的发布,Open Tracing API 1.0和Open API 1.0能为大家带来些什么?
\\
\
Jiang:MicroProfile Open Tracing定义了一种追踪微服务请求跨越服务边界流动的模型。请求在多个服务之间流动,这是微服务架构中一种常见的情况。这个规范定义了一种基于opentracing.io的API,并定义了相关的行为,可以让服务轻松参与到启用了分布式追踪的环境中。该规范还定义了一种更简单的方法,可以让微服务通过注释使用分布式追踪能力。此外该规范还提供了一个很棒的功能,可以让JAX-RS应用程序无需更改代码,即可自动参与到分布式追踪工作中。
\\
MicroProfile Open API主要是为了提供一个统一的Java API,该API由OpenAPI v3规范定义,所有 应用程序开发者都可以使用它暴露自己的API文档。由于OpenAPI v3规范本身是语言中立的,因此基于Java的Open API也可直接被应用程序服务器所采用。这个规范基于SmartBear的Swagger库,而SmartBear也是MicroProfile成员。MicroProfile Open API规范还将进一步完善API,以更好地满足微服务开发需求。
\\
除了MicroProfile Open Tracing API和Open API,MicroProfile最近还创建了另一个规范:MicroProfile REST Client,计划将与MicroProfile 1.3一同发布。该规范提供了一种类型安全的方法,可通过HTTP调用RESTful服务。这个规范主要侧重于REST客户端,目的在于简化客户端的创建,而客户端与服务器之间的通信可由服务器应用程序处理。
\
\\
\
Croft:在最近一次的“两周电话讨论”中,还真的讨论过这一点。MicroProfile 1.3目前计划在12月发布,并通过状态报告帮助每个项目了解截止期限信息。目前与OpenAPI的情况类似,OpenTracing和Typesafe REST Client API很可能会包含在即将发布的新版中。OpenAPI规范相当庞大,因此主要的挑战还在于TCK。该规范本身可以兼容由Swagger发起的第3版OpenAPI规范,很多开发者其实已经熟悉它了。
\\
Typesafe REST Client主要是为了向开发者提供一种类型安全的方法,通过定义到程序的接口来使用远程REST服务。具体目的与OpenAPI规范有些重合,但围绕这一领域的所有重要讨论都已被延后到1.0版发布之后。此外还有一个领域可能有待讨论:需要通过某种方式从OpenAPI定义生成REST客户端接口,这样才能更自然地融入现有工具中。
\\
最后,OpenTracing让MicroProfile获得了OpenTracing标准,并可兼容诸如Zipkin或Jaeger等追踪方面的实现。
\
\\
InfoQ:Java SE新的发布周期是否会影响MicroProfile和/或EE4J的开发?
\\
\
Jiang:Java SE提速后的新发布周期会对MicroProfile和EE4J的开发产生非常积极的影响,这意味着我们新制定或更新的规范也可以快速用上新增的最新版Java SE功能。目前MicroProfile的编程模型要求至少具备Java 8,一些很棒的功能,例如FunctionalInterface、默认的接口实现等已经广泛应用在MicroProfile规范中。
\
\\
\
Croft:我们的客户围绕Java SE有很多问题,但这些问题主要与Payara Server或Payara Micro有关。我觉得,Java SE可以通过相同的方式做出改变,并且对EE4J和MicroProfile的实现产生远大于规范本身的影响。
\\
然而MicroProfile最初的目标在于创新,着眼于未来,因此我希望在2018年能围绕Java SE的变化展开一些讨论,毕竟Java 8将于明年9月寿终正寝,而Java 11(目前的叫法)将成为新的LTS版本。
\
\\
InfoQ:你们觉得Java 9什么时候可以兼容MicroProfile?
\\
\
Jiang:我们还没有在MicroProfile的GoogleGroup上讨论过这个问题。对于Java 9,一个重要问题在于,由于发布周期加快为六个月,可能无法获得像Java 8那么长的支持时间。因此以后的情况还无法确定。这也会对MicroProfile产生一定的影响。MicroProfile什么时候能够采纳Java 9,这取决于诸如Open Liberty、Wildfly Swarm、TomEE以及Payara等应用程序服务器什么时候能支持Java 9。
\
\\
\
Croft:与Java 9+的兼容主要是实现方面的问题,毕竟已经有很多现有的模块系统,例如Payara Server中的OSGi以及其他一些系统。我怀疑对于Java 9可能不会有官方的支持了,因为Java 9并不是LTS版本,因此对后续Java版本的官方支持可能会从9月开始选择Java 11。
\
\\
InfoQ:您目前在IBM主要负责什么?也就是说,您的日常工作具体在做些什么?
\\
\
Jiang:作为IBM的MicroProfile开发主管兼CDI架构师,我会积极参与有关MicroProfile的讨论并从事与各种规范有关的工作。同时我还负责管理该规范在Open Liberty中的具体实现方式。我还管理着MicroProfile Config和Fault Tolerance规范的开发,并参与了其他规范,例如Metrics、Health、REST Client、Open Tracing等的相关工作。作为MicroProfile社区有影响力的成员,我还尽可能完善整个社区的工作方式,以确保MicroProfile保持敏捷和精益。我十分看好MicroProfile编程模型,并在很多会议(Devoxx US、Devoxx UK、JAX London、Voxxed Belgrade、EclipseCon Europe)上推广MicroProfile,并就如何在后续版本中进行改进收集反馈。此外我还是Configuration JSR共同规范的负责人,主要负责MicroProfile Config现有成果的标准化工作,并确保Config JSR和MicroProfile Config的同步,借此Config JSR的新功能也可以尽快实现到MicroProfile Config中。
\
\\
InfoQ:那么Croft您目前在Payara主要承担什么职责,日常工作都在做些什么?
\\
\
Croft:我的职责非常广泛!目前我担任Payara支持团队的主管,因此首要职责主要围绕我们的客户,其次是整个社区。我有幸能与我自己团队,以及我们公司开发团队中一些非常天才的人以及专职人员共事。我们会共同为产品提供商业支持,写文档和博客文章,在会议上发言,为MicroProfile社区做贡献,提供社区支持,方方面面都包括在内!虽然工作很繁忙,但能获得大量用户的反馈也让我们觉得获益匪浅。
\
\\
参考资料
\\
- Eclipse MicroProfile,作者:Roxanne Joncas(Eclipse新闻邮件,2017年9月20日) \\
- Eclipse MicroProfile Config – 是什么?,作者:Emily Jiang(2017年10月18日) \\
- Java EE的未来,问答David Blevins:Eclipse Foundation、EE4J和MicroProfile,InfoQ发布(2017年10月20日) \\
- 借助Eclipse MicroProfile加快对Java微服务的采用,InfoQ发布(2017年11月8日) \\
- Eclipse MicroProfile:对轻量级现代化Enterprise Java平台的探索,作者:就职于Devoxx Belgium的Mike Croft(2017年11月9日) \\
- 构建弹性微服务?你需要的是Eclipse MicroProfile Fault Tolerance!,作者:Emily Jiang(2017年11月16日)\
阅读英文原文:What's New in MicroProfile 1.2
MicroProfile 1.2新增功能介绍相关推荐
- ABP Framework 5.2 RC 版本发布及新增功能介绍
本文将介绍 ABP Framework 5.2 RC 版新增的主要功能: •单层解决方案模板•API 版本控制•源代码控制移除libs文件夹•对 Swagger UI 隐藏 ABP 默认端点•CMS ...
- Zabbix6.0使用教程 (一)—zabbix新增功能介绍1
使用zabbix的小伙伴应该都有关注到目前zabbix的大版本已经更新到了6.0,后面乐乐将会对如何使用zabbix6.0做一个使用教程的系列,大家可以持续关注,这篇我们主要聊聊zabbix6.0新增 ...
- Fl Studio 20.8英文切换中文正式版下载及新增功能介绍说明
水果做电子音乐,可以说是非常牛逼的,但是唯一的缺点就是只有英文版,对于那些想用水果编曲的音乐人们来说,可以说是一个硬伤,没有中文版,因此也可以说是流失了一批潜在的客户. 随着最近两年的版本升级,Cub ...
- 会声会影Video Studio 2023 旗舰版新增功能介绍
会声会影2023旗舰版(Corel VideoStudio Ultimate 2023)(亦称绘声绘影)是一款功能强大的视频编辑软件,入手非常简单,可以帮助用户制作优秀的视频内容,支持视频编辑和视频特 ...
- ABP Framework V4.4 RC 新增功能介绍
新增功能概述 •启动模板删除 EntityFrameworkCore.DbMigrations 项目•CMS-Kit 模块新增 动态菜单管理 功能•对象扩展管理系统新增两个扩展方法:MapEfCore ...
- XMind (2022)新版思维导图新增功能介绍
全新设计,不止缤纷.XMind (2022) 升级版本!不管是更缤纷多彩的智能配色方案,还是复古写意的手绘风格,或是鲜活有趣的插画和贴纸,新版本的 XMind 都能导图迸发出更多活力,盘活思维,激发出 ...
- Premiere Pro 2023下载安装、新增功能介绍
Premiere Pro 2023中文版简称Pr,pr2023是一款视频编辑软件. pr 2023不仅可以帮助用户对各种视频进行剪辑.旋转.分割.合并.字幕添加.背景音乐等基础的处理,还能帮助用户进行 ...
- Zabbix6.0使用教程 (一)—zabbix新增功能介绍2
上一篇我们已经介绍了部分zabbix6.0的新增功能,这期我们将继续为家详细介绍下余下的zabbix6.0新增功能,大家可以往下看. 六.监控项 6.1 自动类型选择 监控项配置表单会自动建议匹配的信 ...
- Studio One5编曲和音频后期制作音乐编辑软件更新及新增功能介绍
Studio One5是一款强大的编曲和音频后期制作软件,它为用户提供了"工作室"概念的服务,从乐曲制作.音频录制,到至关重要的后期混音制作,都可以在这里完成. Studio On ...
最新文章
- (读书笔记).NET大局观-.NET语言(1)
- 梁胜博士亲解Rancher 2.0:K8s之上的Rancher魔法
- (转)类库 框架 模式
- CEO 赠书 | 打破创新神话,揭示创新本质
- 【python】中的“.T”操作:转置
- informix clob转oracle 乱码_Oracle 视图-序列-权限-表-事务
- hexo github pages 搭建博客
- 【slighttpd】基于lighttpd架构的Server项目实战(3)—MasterWorker模式
- 二十年后我发明了保姆机器人作文_机器人保姆我的发明作文450字
- log4j日志 linux配置,Log4j 日志详细用法
- python memoryview_memoryview的用法
- ServiceStack.Redis 连接有密码的Redis问题解决
- python求两个字符串之间最小子串
- 记事本编写java_编写运行最简单的java程序——使用记事本编写java程序
- 中国环氧树脂行业运营模式与营销创新策略分析报告2021-2027年版
- 使用云开发实现微信支付的具体方法
- android无法格式化sd卡,当Android无法格式化SD卡时该怎么做 | MOS86
- 致计算机专业准大一新生
- 清理Elasticsearch中过期的日志索引
- 机器学习算法基础之使用python代码