文章
· 九月 15, 2022 阅读大约需 4 分钟

将微服务架构应用于Ensemble

关于微服务架构(MSA)的IRIS定位的初学者指南。MSA在企业级Java世界中的能见度越来越高,因此,了解这股热潮背后的内容是至关重要的。我尝试着写下我的观点并与大家分享。

背景

首先,我必须承认。今年初夏,我的同事要求我收集一些关于匈牙利开发的医疗产品的信息。当我从相关公司得到反馈时,发现该产品是一个模块化系统,基于微服务架构(MSA)。好的。什么是MSA?在网上做了简短的研究,阅读了一些WIKI网页后,我得出结论:啊哈,又是一个 "架构"。我们可以用IRIS在 "架构层面 "遵守 "任何架构"--至少 "在某种程度上"。但也有一些恼人的地方。这让我对MSA有了更多的了解。到目前为止还不错,但是REST不是这篇文章的主要话题吗?MSA和REST之间的关系是什么?我访问的几乎每个网站都在例子中使用了RESTful网络服务。这让我有点怀疑。但总的来说,我赞同对MSA的一般总结:它是SOAP但做得很好。特别是因为有一些关于 "内聚 "和 "耦合 "的句子,我完全不明白。那么,如果MSA只是 "SOAP做得好",为什么我没有看到SOAP的例子?为什么这些例子(几乎)都是RESTful?

在这个问题之前,对我来说,"REST "是一个使用JSON序列化数据交换的网络服务,通过HTTP传输。但是在那个时候,我脑子里有太多的问题,因此我开始阅读REST文献。很快我就找到了起源。REST这个词来自一位叫Roy Thomas Fielding的先生。他在2000年的论文中介绍了它。这个缩写来自于REpresentational State Transfer,用他的话说,是 "分布式超媒体系统的一种架构风格"。好吧。通过阅读论文,很明显,我必须更新我的英语词汇。我清单上的第一项是架构。我再次引用Fielding的话。"一个软件架构是一个软件系统在其运行的某个阶段的运行时元素的抽象化。一个系统可能由许多抽象层次和许多运行阶段组成,每个阶段都有自己的软件架构"。毫无疑问,在这种情况下,架构不是一个概念,不是一个结构。它是对真实部署的运行时的描述。REST不是一个概念。这篇论文精确地定义了REST的实施约束。

那么MSA怎么会出现在这里呢?MSA是一个架构(请记住这个含义)。它不是一个概念,而是一组运行时的元素。对我来说,MSA就是REST++。在我看来,REST的一些约束已经过时了,而这些元素被MSA所挑战。这就是为什么我在这篇文章中谈论MSA而不是REST。

当我意识到这一切的时候,我只想写这篇文章。但后来我发现,如果没有一个共同的、坚实的基础来理解MSA/REST的含义,我就不能正确地解释我自己。因此,我开始了一系列的RESTful实施的初学者指南。虽然我把这些文章称为 "初学者指南",但我坚信,不仅是初学者可以通过阅读这些文章获得一些新的知识。

Ensemble如何与MSA结合??

MSA是一个分布式系统架构。MSA定义了构成该架构的运行时元素。它在很大程度上与企业Java联系在一起(即使有与非Java组件的语言绑定)。难怪作为J2EE开发的主要动力之一spring框架提供了MSA解决方案。但是,如果它与Java的关系如此紧密,IRIS又能为它做些什么呢?

在MSA的核心中,有一个组件调用注册表。其中一个注册表的实现是Apache ZooKeeper。第一次访问这个网站让我有点迷惑(又一次)。该网站告诉我们:"Apache ZooKeeper是一项开发和维护开源服务器的努力,它可以实现高度可靠的分布式协调"。请记住,MSA是一个分布式系统架构。也就是说,注册中心负责客户端的服务发现以及分布式事务协调。当整个数据集的完整性很重要时,管理数据片段的服务必须使用一些协调。这是由注册中心完成的。IRIS准备好了参与这种协调吗?

让我们来看一下:你还记得Fielding是如何定义软件架构的吗?如果你不记得的话,我重复一下其中的一部分。"一个系统可能由许多抽象层次和许多运行阶段组成,每个阶段都有自己的软件架构"。

Ensemble有它自己的优势。我相信你可以列出很多。IRIS适合很多不同的架构,那么微服务架构MSA呢?首先IRIS可以提供RESTful服务,这是通往MSA的必经之路。另外。MSA中一个重要的组件类型是API网关。它的主要目的是将传统的系统封装成微服务。IRIS不仅有API网关组件,而且拥有广泛的 "适配器 "库和图形化的数据转换工具,远远超出了API网关实施者的梦想。

简单说到这里,朋友们。我希望你喜欢这个系列。如果你错过了,这里是本系列文章中以前的文章列表。

n  我们讨论如何创建服务 

n  如何和为什么要 启用 CORS .

n  作为客户消费 服务.

n  如何 传递 服务参数给一个服务.

n  我们还学习了 如何处理 例外.

n  以及 设计 服务API.

n  和最后 设计 服务内容.

讨论 (0)1
登录或注册以继续