2016年会成为Java EE微服务年吗?

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介:

进入2016年时间还不是很长,让我们回顾下去年年底的一个预言。去年12月,来自C2B2的Steve Millidge预测,2016年将会成为Java EE微服务年。在一定程度上,这是基于Steve在JavaOne上的演讲,他在演讲中详细地讨论了这个主题。此外,Steve还是Payara的联合创始人,Payara的目标用户也是对微服务感兴趣的Java EE开发人员。Steve还认为,SOA和微服务之间的差别很小,这种观点我们以前听说并且报道过。他在视频中指出:

“微服务与SOA没什么不同。它还是关于SOA”。

当然,现在还存在争论,因为他的背景和当前的工作重心,Steve可能会发现自己很难保持客观的态度。不过,早在2014年,微服务还处于起步阶段,Adam Bien就描述了理想的Java EE微服务:

[...]理想的Java EE微服务是一个单[实体控制边界]组件,在一个WAR包中,部署在单台服务器/域中。在这种情况下,开发人员可以单独地发布和重新部署单个组件(又称微服务)。WAR包之间不可能直接调用方法,因此,WAR包将不得不使用比如JAX-RS来彼此通信。

我们在去年年底就微服务、DevOps和Java EE相关内容采访了Markus Eisele,他详细论述了自己为什么认为Java EE将会在微服务生态圈的发展中扮演重要的角色。还有一些其他使用Java EE编写微服务的方法,包括TomEE和WildFly。KumuluzEE是JavaOne 2015 Duke选择奖的其中一个获奖者,该框架是一个Java EE微服务框架。该框架的联合创建者Matjaz Juric解释说:

KumuluzEE是第一个使用标准Java API的微服务框架。微服务架构的重点是将应用程序开发成服务并将这些服务单独部署;没有一个框架提供自动化部署和配置,是不可能使用Java EE实现真正的微服务架构的。

让我们看一些人们如何看待微服务和Java EE的其他例子,这会非常有趣,因为有些人严格来讲并不属于传统的Java EE领域。例如,早在2014年,Alex Soto就论述了为什么Java EE和RxJava是一个很棒的方案。不过,并不是每个人都认可使用Java EE能使开发人员采用微服务。正如Rick Hightower所说的那样:

如果你将一个WAR文件部署到一个Java EE容器,那么你很可能不是在做微服务开发。如果你在一个容器或EAR文件中包含超过一个WAR文件,那么你肯定不是在做微服务开发。如果你将服务部署为AMI或Docker容器,而且你的微服务有一个main方法,那么你可能是在编写微服务。

而且,Rick也不认为微服务与SOA相同:

事实上,它们在许多方面是完全相反的。例如,SOA往往采用WSDL,后者是一种非常严格的、强类型的服务端点定义方式。WSDL和XML模式中所有的未知量都来自XML。

当然,我们已经多次讨论过,SOA和Web Service常常没有关系。不过,Rick及其他一些人确信,Java EE太过臃肿或者说笨拙,以其为基础构建微服务并不合适。Jeppe Cramon认为,Java EE之所以是一个糟糕的基础还有更为根本的原因:

如果我们将两路(同步)通信与小/微服务结合使用,并根据比如“1个类=1个服务”的原则,那么我们实际上回到了使用Corba、J2EE和分布式对象的20世纪90年代。遗憾的是,新生代的开发人员没有使用分布式对象的经验,因此也就没有认识到这个主意多么糟糕,他们正试图重复历史,只是这次使用了新技术,比如用HTTP取代了RMI或IIOP。

如果微服务和SOA密切相关,那么可能会有一种观点,就是微服务可以像SOA那样采用一种技术无关的方式。你认为呢?2016年会成为Java EE微服务年吗?如果有的话,Java EE会在微服务中扮演什么角色?

本文转自d1net(转载)

相关文章
|
1天前
|
消息中间件 Java API
解密微服务架构:如何在Java中实现高效的服务通信
微服务架构作为一种现代软件开发模式,通过将应用拆分成多个独立的服务,提升了系统的灵活性和扩展性。然而,实现微服务之间的高效通信仍然是许多开发者面临的挑战。本文将探讨在Java环境中实现微服务架构时,如何使用不同的通信机制来优化服务之间的交互,包括同步和异步通信的方法,以及相关的最佳实践。
|
16天前
|
NoSQL Java Redis
Spring Boot集成Redis全攻略:高效数据存取,打造性能飞跃的Java微服务应用!
【8月更文挑战第3天】Spring Boot是备受欢迎的微服务框架,以其快速开发与轻量特性著称。结合高性能键值数据库Redis,可显著增强应用性能。集成步骤包括:添加`spring-boot-starter-data-redis`依赖,配置Redis服务器参数,注入`RedisTemplate`或`StringRedisTemplate`进行数据操作。这种集成方案适用于缓存、高并发等场景,有效提升数据处理效率。
70 2
|
1月前
|
消息中间件 NoSQL Java
使用Java构建可扩展的微服务架构
使用Java构建可扩展的微服务架构
|
1月前
|
监控 Java API
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
46 0
|
1月前
|
消息中间件 监控 Java
在Java应用中实现微服务间的消息队列通信
在Java应用中实现微服务间的消息队列通信
|
1月前
|
消息中间件 存储 SpringCloudAlibaba
会员系统01----基于Java开发的 | BTC,完整的SpringClound微服务包含内容
会员系统01----基于Java开发的货币交易所 | BTC,完整的SpringClound微服务包含内容
|
1月前
|
负载均衡 监控 Java
Java中的可扩展微服务架构
Java中的可扩展微服务架构
|
1月前
|
负载均衡 监控 Java
Java微服务架构设计与实现详解
Java微服务架构设计与实现详解
|
1月前
|
负载均衡 Java 微服务
Java中的可扩展微服务架构设计案例解析
Java中的可扩展微服务架构设计案例解析
|
1月前
|
监控 Java 开发者
使用Java开发微服务架构的挑战与解决方案
使用Java开发微服务架构的挑战与解决方案