在思考和尝试进行元数据与微服务相结合的工作时,偶然发现已有厂家做了类似分享,而且讲述得更深刻,更规范,图文并茂,所以本文不打算细讲,不画图,不班门弄斧。
需要进行结合的前提条件是,系统北向接口较多,外部接口不统一;最好是复杂系统,简单应用引入反而徒增工作,系统内部拆分较细,特别是微服务化之后。元数据的引入,也是为了解决以上问题,对外,可当做防腐层,屏蔽对内影响;对内,接口上统一描述,提供可检索功能,进而可以在开发流程上将元数据作为微服务管理的依据。
实现上,需要有一个地方(应该是服务之外)来管理元数据,比如在编排层。和普通数据一样,需要先申明,并且按领域区分。然后是元数据实例管理,简单地来说,每一笔交易一个实例。实例与内部微服务会有一套实例与请求报文、应答报文与实例的映射管理;对外接口,也会有一套接口请求报文与实例、实例与接口应答报文的映射管理,两套管理类似。具体可以拿实例的交易类型、订单类型等业务公共字段作为映射配置的查询依据。
以上就是最基本的功能。接下来是联想的一些功能,比如元数据申明后,可以搞一套统一视图,提供检索功能,查找或开发扩展微服务时使用。视图上可以展示元数据要素热度,可用于反映相关领域业务热度。可以在映射管理中,新增字典类的映射子管理,新增错误码、错误信息的映射子管理等等,即支撑一些特定的映射逻辑,形成资产,提升开发效率。类似地,可以新增一些公共的加密、模糊化插件,来满足特殊的元数据要素要求。交互多,映射逻辑也就多,为避免重复实现,可以抽象出映射模板,像XSLT的template。
系统更加庞大的时候,就有跨域的情况。理论上不同领域的元数据,除了具备标识性质的要素,不应该有其他要素上的重叠、冲突。因此跨域的元数据管理也能够用于解决业务边界问题。