微服务环境下,数据如何治理?
传统架构下,数据库各模块之间的设计遵循ACID原则(原子性、一致性、隔离性、持久性),来保证业务数据的正确性。但是单体应用经过拆分后,每个微服务对应独立的数据库,各个服务间通过接口进行数据交互,原来的本地数据库事务的ACID原则在微服务架构中失效了。这就需要有一定的时候补偿机制,来保证微服务数据的最终一致性。常用的方案,如:TCC,可以提供业务回滚逻辑介入,可以让开发人员参与,编写回滚方法达到向后恢复的目的。 这个属于软件架构设计范畴了,似乎我又跑题了,赶紧脉动回来! 那微服务环境下,数据治理到底治什么,在哪治,怎么治? what ,治什么?即:哪些数据需要治理? where ,在哪治?即:在单个的微服务中实施数据治理,还是集中到一个数据平台(数据中台)进行治理? how ,怎么治?即:微服务下的数据治理和传统架构下的数据治理有哪些不一样? 我们带着这三个问题,继续往下看~~ 三 微服务下的数据治理,治什么,在哪治,怎么治? 有人认为微服务架构下,数据治理会遇到很大的挑战,但是在我看来,就是数据源多了些,不论从体系上、方法上、还是从技术上、工具上,微服务就是微服务,数据治理还是数据治理。 1、治什么 微服务下,数据治理的内容也无外乎也是元数据、主数据、指标数据、业务数据。当然,也有处理非结构化数据、半结构化数据、实时数据微服务。数据治理的内容/对象没有变。 2、在哪治 微服务下,数据治理在哪治的问题,要分为两个层面考虑。 一个层面,是关于主数据或基础数据的治理,其重点还是应该放在数据源头治理。比如:“用户中心”微服务管理了用户主数据,“商品中心”微服务管理了商品主数据,那对于用户和商品这两个主数据就应该从“用户中心”、“商品中心”这两个微服务中入手,控制好数据的入口。 另一个层面,是关于分析数据、业务数据、日志数据的治理。对于分析数据,以及一些实时性要求高的业务数据、日志数据的质量,应放在数据中台或数据湖中治理。 3、怎么治 数据治理体系和方法上与传统架构下的数据治理没有任何区别,我们主要从技术层面来看。从技术方面来讲,微服务下的数据治理,一般有两种选择:第一种是在线处理数据,第二种是离线处理数据。 在线处理数据的方案就是按照微服务的标准接口来进行,后端服务或系统需要哪个数据就去调用某个微服务提供的接口来获取,然后将返回的数据进行处理后将数据返回。 我们以用户主数据治理为例, 首先 ,在数据标准方面需要定义好数据管控的要素,如:三元素法(姓名、手机号、身份证号码)。 其次 ,通过微服务提供用户的注册服务、查询服务、登录服务等等,供其他服务或系统调用,以达到数据统一的效果。 最后 ,其他服务或系统调用这个微服务的接口,返回数据处理后再返回给该微服务。这种方式,与传统主数据管理不一样的是:微服务下的主数据管理不需要建立“主数据管理平台”这样的“中心化”系统,而是直接调用微服务自身接口提供数据服务。但“去中心化”的微服务也有一个弊端,如果微服务调用过于频繁会给微服务本身造成很大的压力,所以就需要对这些使用频率高的微服务进行分布式和集群处理。 离线处理数据方案,就是将业务数据准实时的同步到另外一个数据库中,在同步的过程中进行数据整合处理,以满足业务方对数据的需求。这个层面,微服务和传统架构下的数据治理模式和技术没有区别,离线数据处理对微服务正常业务处理没有影响。这种方式重点是借助数据湖的能力进行分层治理,一般包括:数据源层(可以将每个微服务都当做一个数据源处理)、数据集成层(采集和处理不同类型数据的中间件,比如:kettle、kafka、Spark、Storm、Flume、Sqoop等)、数据存储层(MongoDB、Redis、ES、HBase、Spark、Hive、HDFS、MySQL等)、数据应用层(ES、SparkSQL、pig、Impala等)。技术选型有很多,以切合公司业务为目标,不同的业务场景选择合适的数据处理组件。 值得一提的是,微服务环境下更需要数据治理,尤其是元数据管理。元数据管理的作用不仅是对微服务中数据的治理,更是对微服务全生命周期的治理。如下图: 参考:EAWorld 在微服务需求规划阶段,定义元数据标准。 在微服务设计阶段,可以查询其他微服务的元数据,以便微服务之间的数据调用。 在微服务的开发、测试、上线、运行阶段使用相同元数据,保证各微服务开发到运营的各阶段元数据的一致性,这是微服务实现“Devops”的基础。 在微服务上线后,元数据可以帮助分析微服务的使用情况,并可以借助元数据的版本溯源分析功能,协助维护微服务的变更。 结束语 微服务架构最开始是在互联网行业流行起来的,随着互联网向传统行业的渗透(或者说传统行业朝着互联网方向转型),微服务架构也逐渐出现在了企业应用开发的选项当中。尽管在核心理念上,微服务和SOA没有太大差别,都是强调模块化、服务化,但随着敏捷开发、持续交付、DevOps理论的不断发展和实践,以及基于Docker等轻量级容器的应用和服务的逐步成熟,微服务已经成为了企业软件架构的未来演进方向。 可以预见,在未来的很长一段时间内微服务架构与传统软件并存的。对于数据治理来讲,传统的数据管理方式可能会受到挑战,但“治理”这两个本身就带着强烈的改革基因,改变一些传统思维,固有习惯,拥抱新技术,面对新挑战,与时俱进,才能达到“让业务更有序、让管理更有效!”的治理目标。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |