信息模型驱动的微服务拆分设计思考
微服务倾向于分离的数据库。我们将数据分离的时候一定会有这些疑问:
- 如何将数据拆分开来;遵循什么原则;
- 拆分的数据如何组合组织起来进行访问;
其实拆分数据本事也是微服务划分的一个影响因素。尼古拉斯·沃斯(Niklaus Wirth)曾经说过“算法+数据结构=程序”。狭义一点来说,很多公司的系统中,数据本身就是业务价值的载体,经年积累的业务价值都存储在数据中。所以依赖数据为中心是很多微服务划分的重要依据。
业务的变化导致数据模型也是会经常变化的。增加删除字段、实体是经常发生的事情来适配业务的变化。正如算法的设计一样,数据的变化也需要抽象,将相对不变的概念抽取出来,变化的都是那些具体的一些细节。
由于数据本身细节太多(有些业务细节的表,可能有数十到上百个字段),如果将所有的细节放在一起,肯定眼花缭乱,不好一目了然的掌握其中的规律。而且这些细节的增删其实是不影响整体的概念的。而一般设计也是自顶而下的,所以最初的设计都是从基本的信息实体和关系开始。这层方便讲解和沟通,这也就是信息模型,或者说概念模型。