元数据驱动的微服务架构(上)

news/2024/7/5 1:43:57

本次分享有两个部分:

  1. 微服务架构需要元数据

  2. 介绍微服务与元数据的关系。

一、微服务架构需要元数据

640?wx_fmt=png&wxfrom=5&wx_lazy=1

企业IT架构已经发展了多个阶段,一方面是服务化架构的发展,在SOA阶段主要解决应用间集成问题,但随着企业业务的发展,单个应用逐渐成为“巨石型”应用,难以扩展也难以维护。


微服务架构应运而生,微服务架构专注于单个应用的内部,将“巨石”应用拆分成为多个微服务,以微服务为单独单元开发运营。另一方面是模型化架构式的发展,模型驱动工程也在不断发展,从MDA(模型驱动架构)全面的完全模型自动化,到DSM(特定领域建模)针对特定领域的建模,再发展到DDD(领域模型驱动设计),模型的作用变得更加特定化和轻量化。


640?wx_fmt=png&wxfrom=5&wx_lazy=1

服务化架构和模型化架构其实是统一的。在微服务架构中微服务的粒度小,数量多,微服务的设计与微服务之间的连接需要一套规范,同时需要一套可以对话的统一“语言”。


传统的模型方式的核心目标是能够自动生成代码,故定义过于复杂。而微服务间的“语言”的目标与传统不同,用元数据作为“语言”驱动整个微服务架构是不错的选择。


640?wx_fmt=png&wxfrom=5&wx_lazy=1

我们看看元数据表示了什么内容,我在之前一篇文章中从心理学的角度详细说明了元数据是什么。(若阅读此文,请微信搜索文章标题“轻松理解元数据,只需懂点心理学”)元数据就是计算机的认知维度,可以说,掌握了元数据就掌握了信息的维度,只有充分利用好元数据(也就是信息的维度),通过合理的元数据建模(维度整合),对元数据进行科学管理(维度完善),才能让让计算机更好地认知企业系统。


元数据管理的核心内容是,信息的概念和信息之间的连接。概念表示对某个业务所有维度的集合,连接是对业务维度之间关系的描述。通过这样的描述,能够使元数据成为微服务直接对话的“语言”,还能够通过“语言”规范微服务体系的设计。

二、微服务与元数据的关系

640?wx_fmt=png&wxfrom=5&wx_lazy=1

定位模型与元数据的概念之前,我们不得不提到MOF(元对象设施或者元对象机制 MetaObject Facility),它是OMG(国际标准化组织)元模型和元数据的存储标准,提供在异构环境下对元数据知识库的访问接口。我们可以看到每个层次的上一层是下一层的模型,本层次的描述语言在它的上一层模型中。

我们今天重点关注M1层元数据,也就是通常说的“数据模型层”。M1层(元数据)对应在日常我们项目开发过程中进行的ER模型图模型设计。也就是说我们进行所有的数据层设计其实都是元数据的建模过程。


640?wx_fmt=png&wxfrom=5&wx_lazy=1

我们来看一下平时是如何进行模型设计的,也就是进行元数据的设计,数据的描述。我们一般建模过程会将其分解成更小的、更简单的元素,通过多个模型之间的关系描述复杂的事物逻辑。一般从需求开始,无论是用户的需求还是技术需求,能力是实现需求的桥梁与纽带,借助现有的技术手段进行实现的支撑。随着建模过程逐渐深入,建模可以分为概念模型-逻辑模型-物理模型,层层递进最终物理模型会确定数据库实现方式,将数据表固化到数据库中。

我们再来看建模的手段工具,最有效的简化方式是图形建模,也就是我们通常所说的ER图建模。多数建模方法都建立在可视化语言的基础上。比如UML实体-关系图建模,这就是最常见的语义模型建模方法。 基于语义分析模型的元数据模型,主要是建立模型的实体与实体之间的关系,包括元数据模型之间关系的建立,元数据之间的输入输出接口等。


640?wx_fmt=png&wxfrom=5&wx_lazy=1

那么问题就来了,之前我们碰到的数据往往是集中存储的。如果数据模型的存储是分散的,多个元数据模型群之间的数据描述是不一致的,多个模型之间互相访问与数据共享应该遵照什么样的标准呢?我们是不是也要设计一套符合所有模型之间交互的语义模型?这种模型之间的所有交互需求都可以满足吗?


640?wx_fmt=png&wxfrom=5&wx_lazy=1

确实是有不同数据模型之间统一标准相互访问的机制。答案也是肯定的。XMI 是 OMG在元数据交换方面的最重要标准之一,同时也是 W3C 认可的标准。允许 MOF元数据(即遵从 MOF 或基于 MOF 的元模型的元数据)以流或文件的形式按照 XML 的标准格式进行交换。

在微服务中每个服务都有自己的数据库这种思路与企业级的传统数据建模过程不同,每个微服务中需要建立自己的数据模型。各微服务的接口API需要定义元数据,接口需要清晰的元数据模型,对象、属性。也就是我们需要元数据的原因,我们需要建一套完整的元数据模型机制,这也就是元数据与微服务之间的关系所在。


关于作者:

王轩EAII-企业架构创新研究院 专家委员

现任普元软件产品部副总兼大数据产品线总经理,2010年加入普元,全面主持普元大数据产品的研发、拓展及团队管理工作。十年大型企业信息化架构设计与建设经验,曾任中国人民银行核心平台架构师。主持参与了国家开发银行大数据项目、中国人民银行软件开发平台、国家电网云计算平台等大型项目建设。王轩对大数据行业有着深入的研究和洞察,并对企业信息化平台建设,企业云计算及大数据平台建设有着丰富经验。

640?wxfrom=5&wx_lazy=1


关于EAII

EAII(Enterprise Architecture Innovation Institute)企业架构创新研究院,是专注于企业架构与业务创新领域的研究机构,致力于金融、电信、能源与政务等行业领域的企业软件架构优化设计与 创新研究,以及分布式计算、服务构件技术、可视化技术、业务流程管理、内存计算、企业移动计算、数据治理等领域的技术研究。


本文转载自微信公众号 中生代技术 freshmanTechnology


http://lihuaxi.xjx100.cn/news/242197.html

相关文章

厦门 服务器管理系统,厦门erp电商管理系统排行榜

优势点1、快捷、方便、好用、可靠,以适应电商的需要。2、系统建设也需要基础理论;并且系统服务器也有与其他平台的优势,强大的互联网功能能解决功能任务。3、在电商领域,提供erp企业级电商平台,为电商平台的服务提供完…

参加Python培训班能找到工作吗?

参加Python培训班能找到工作吗?很多人都比较关心这个问题,尤其是正在参加Python培训的同学,想要了解这个问题,我们必须从Python就业市场、Python就业班优劣以及个人学习效果三个大的方面进行分析。来看看下面的详细介绍。 参加Python培训班能…

最早接触到的计算机编程语言——c语言

最早接触到的计算机编程语言——C语言在经过入学后计算机导论的熏陶后,在大一的下半学期我终于接触到了一门语言,这也是我们最早接触的计算机编程语言——c语言。在初学的时候,感觉这门课程十分晦涩,但是当学习了一段时间以后&…

机器学习中的三对性能度量参数

文章目录1 分类结果混淆矩阵2 错误率和精度3 查准率P和查全率R4 真正例率TPR和假正例率FPR1 分类结果混淆矩阵 2 错误率和精度 错误率:分类错误的样本数占样本总数的比例 精度:分类正确的样本数占样本总数的比例 关系:两者之和为1 3 查准率…

参加软件测试培训前景怎么样

软件测试在近几年的发展前景还是非常不错的,很多人都开始参加软件测试培训班学习技术,要想具体了解参加软件测试培训前景怎么样?来看看下面的详细介绍就知道了。 参加软件测试培训前景怎么样?各大招聘平台上,都能看到测试的影子&#xff0c…

函数式编程(三)

前面两节介绍了纯函数和高阶函数,在函数式编程中,函数就是我们的砖块。我们编写一些可以完成非常具体任务的函数,然后像乐高积木一样将他们搭建起来。 这就是所谓的函数组合。 函数组合 先看两个纯函数 let add10 value > value 10; let…

[elixir! #0007] [译] 理解Elixir中的宏——part.5 重塑AST by Saša Jurić

上一章我们提出了一个基本版的deftraceable宏,能让我们编写可跟踪的函数。宏的最终版本有一些剩余的问题,今天我们将解决其中的一个——参数模式匹配。 今天的练习表明我们必须仔细考虑宏可能接收到的输入。 问题 正如我上一次暗示的那样,当前…

验证(verification)和确认(validation)

验证:看软件产品是否符合需求文档 确认:看软件产品是否满足用户需求 整个软件测试做的事是验证 但是确认似乎才应该是做软件的人的终极目标