前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >寻求Java微服务的简单性

寻求Java微服务的简单性

作者头像
程序你好
发布2018-07-23 10:06:56
1.5K0
发布2018-07-23 10:06:56
举报
文章被收录于专栏:程序你好程序你好

简单性有很大的价值。当事情很简单时,它们更容易理解、更容易扩展和更容易修改。他们是更好的。简洁是对架构或框架的终极褒奖。 在本文中,我将研究四个不同的框架—-Spring Boot, Javalin, Vert.x 和 Micronaut。

来寻求简单的方法。

简单并不意味着容易

我写这篇文章的灵感之一是Rich Hickey的一篇精彩的演讲,题目是《简单易做》。

这是这次演讲的幻灯片,突出了简单和容易的区别:

简单容易,但不是一回事。简单是复杂的反义词,容易是困难的反义词。

我不会在这里重复整个演讲(我真的建议你自己去看),但要强调几点:

  • 简单是我们的目标,我们希望事情不复杂
  • 容易是有益的,但如果它有隐藏的复杂性,它可以是非常危险的

让我们来看看Java框架中简单和复杂的历史。

Enterprise Java, Spring – 复杂和困难

在转到微服务框架之前,让我们先看看从哪里开始。

在微服务出现之前,我们有两种主要的方法用于用Java编写的大型服务器端应用程序:Enterprise Java和Spring框架:

我认为这两种框架既困难又复杂,当然,通过很好地理解Spring或JavaEE并学习如何使用它们,您可以使它们变得“简单”,但这并不能消除底层的复杂性。

似乎我并不是唯一一个认为这些都是问题的人,因为JavaEE(目前的Jakarta EE)社区正忙于MicroProfile的工作,Spring的爱好者们很快会把我引向了Spring Boot项目。

这里我不将重点放在MicroProfile上,因为它仍然相对较新的,Java EE到Jakarta EE的转换正在进行中。如果您感兴趣,我建议您检查Jakarta EE官方网站、MicroProfile官方网站及其GitHub资源库。

Spring Boot 容易的和健壮的

谁不喜欢Spring Boot呢?好吧,这是互联网,所以我敢肯定有相当一部分人不会!不管怎么说,Spring Boot是企业世界的游戏规则改变者。编写服务变得非常简单。

Spring Boot还通过将庞大的Spring生态系统划分为可组合的小部分来提供简单性。自动配置是消除服务开发人员巨大复杂性的法宝。

你想知道自动配置是如何工作的吗?查看2.0.3.RELEASE的源代码。它非常复杂,但完全由框架团队管理。他们决定吸收这种复杂性,并在这方面做得很好!

那么Spring框架本身呢?它可能非常复杂,但也非常健壮。选择实际上取决于开发人员——包括哪些内容,以及应该远离哪些内容。

我认为Spring Boot简单性如下:

  • 开发很容易开始
  • 自动配置的巨大复杂性是由框架团队处理的
  • 框架固有的复杂性
  • 仅仅依靠框架的关键部分就可以简化框架的复杂性

当处理非常困难的问题时,这种方法被证明是成功的。让我们看看其他框架。

简化事情Micronaut

Micronaut要比Spring Boot年轻得多。在写作的时候,我们的版本是1.0.0。M1,所以有很大的变化空间。

Micronaut自称是:

用于构建模块化、易于测试的微服务应用程序的现代、基于jvm的全栈框架。

它与Spring Boot有许多相似之处。我们有:

  • 依赖注入
  • 违约和自动配置
  • 内置多种云本地功能

是什么让Micronaut有趣呢?再次提到Micronaut文件:

  • 快速启动时间
  • 减少内存占用
  • 最少使用反射
  • 最小的使用代理
  • 简单的单元测试

我会加上我自己——它是从头开始写,头脑简单。问题是——随着框架的成熟,它会变得过于类似于Spring Boot吗?

这是一个新项目是它最大的优点也是最大的风险。当然,它并不依赖于可能的沉重和复杂的Spring,但与此同时,Spring是健壮的、受欢迎的和工作良好的。

我看到Micronaut的简单方法:

  • 开发很容易开始
  • 尝试构建比Spring Boot更简单的解决方案,同时仍然提供默认设置和自动配置
  • 该框架支持Micronaut是从零开始的
  • Micronaut是新的,所以未来仍在决定

我真的很喜欢Micronaut,因为它可以与Spring Boot的竞争。它尝试了一种非常类似的方法,但从一开始就考虑使用微服务进行更精简和编写。

如果你想达到终极的简单性,你会怎么做?

简单和容易的Javalin

如果您希望使您的微服务变得非常简单,那么您应该查看微框架。或者你应该这样做吗?让我们将Javalin作为microframework家族的一个示例。

那么,是什么让Javalin如此简单呢?它只有大约2000行源代码。它确实是一个微框架。有了这样一个简化的代码库,您可以实现真正的简单性。如果您有任何困难,源代码足够简单,可以理解和修复。

这种简单的代价是什么?Javalin没有Spring Boot提供的那么多。您没有Javalin数据(我的Spring数据介绍)或Javalin数据流(我的Spring云数据流)之类的项目。您甚至没有依赖注入!

轻量级有问题吗?这是个有趣的问题。现在,有了Kubernetes、Service Mesh和其他微服务技术,对服务本身的复杂性的需求就减少了。我写过关于微框架的兴起,我相信我们正在见证这一趋势的开始!

我认为Javalin的简单方法是:

  • 简约的代码库
  • 与服务的交互非常简单
  • 微服务的最小可行功能集。
  • “Do it yourself”的方法

您能将Javalin方法的简单性和风格与功能更全面的框架结合起来吗?相信你可以!我们将在Vert.X上完成这个展示。

追逐简单Vert.X

VertX是这里提到的第二大流行框架(Spring Boot之后)。它不仅针对微服务(Spring Boot也不针对微服务),它将自己描述为:

Eclipse Vert.x 是用于在JVM上构建反应性应用程序的工具包。

反应/功能方法的核心是简单。它很简单,但不容易。我们需要一些时间来理解,也许还需要将我们的方法从非功能性世界中转移出来。

在我看来,Javalin似乎是一种简单的方式,可以将您的脚趾浸入到这种风格和风格中。X提供更成熟的企业产品。两者都是伟大的,而且绝对是有意义的。即使是Spring Boot也在尝试使这个反应/功能模型可行。

如果您想了解在Vert.x中编写一个简单的REST服务是什么样子的。在GitHub上有很好的例子。

我看到了Vert.X简单方法如下:

框架完全围绕反应/功能模型构建

提供可以与更传统的企业产品竞争的特性列表

为了简单的本质,牺牲了进入的轻松

将框架分割成许多可组合的部分

如果你不害怕一些最初的困难,为了处理一些简单的东西的核心,Vert.X是一个有趣的选择!

总结

有许多可用的微服务框架和方法。比我在这里评论的要多。他们每个人都努力使开发变得简单和容易。这些方法之间存在着权衡,不同的权衡将吸引不同的受众。

我希望本文能给您提供一种看待框架和开发方法的不同方式,并可能激励您尝试一些困难但简单的东西!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单并不意味着容易
  • Enterprise Java, Spring – 复杂和困难
  • Spring Boot 容易的和健壮的
  • 简化事情Micronaut
  • 简单和容易的Javalin
  • 追逐简单Vert.X
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档