平台设计-多数据源支持

简介: 平台倡导分布数据库,最简单的分库逻辑是按业务领域

平台倡导分布数据库,最简单的分库逻辑是按业务领域,例如人力资源系统一个库,客户关系管理一个库(举个例子而已,在平台正式的系统中,人力资源系统又细分为核心库、绩效管理库、薪资管理库等)。一个微服务对应单个数据源。

      看过很多项目,号称是微服务架构,但是多个微服务实际上联的是同一个库;各个微服务之间实际上不相互调用,需要取数据时,直接从对应表里拿数据,从而导致有大量的重复代码(公用的表对应的实体类、数据访问层、甚至服务层)。平台不倡导这种模式。

      但是万事不能绝对,有种场合必须使用多数据源。例如涉及到数据同步、数据传输的应用,就需要多数据源。平台的后台服务框架支持多数据源,只配置一个数据源时为单数据源;配置多个时就是多个。

     一套架构即可以支持单数据源,也可以支持多数据源,听上去很容易,实际做起来很难很复杂。平台的技术体系是JPA+Hibernate,单数据源时很简单,根本不需要了解太多底层,事实上很多程序都不清楚底层是如何运作的。多数据源配置就很复杂,按照网上的教程配置好后,不出意外的是不能用。网上大部分东西都是你抄我,我抄你,是不是真正自己试过,我持怀疑态度。好不容易调通了,但是怎么兼容单数据源和多数据源又是问题。一个一个错误的消除,最终OK了。

      平台上大部分技术都通过开源获得的,例如druid、nacos、springcloud、feign等等,平台自身的价值如何体现?其实这个问题很好理解,例如国产大飞机C919的零部件都是外购的,那C919的价值何在?系统集成不是件简单的事情。

相关文章
|
12天前
|
SQL 物联网 大数据
TDengine的主要特性有哪些?
【5月更文挑战第13天】TDengine的主要特性有哪些?
28 10
|
12天前
|
JSON Oracle 前端开发
基于jeecgboot的大屏设计器开发——数据源设计(一)
基于jeecgboot的大屏设计器开发——数据源设计(一)
12 0
|
12天前
|
数据库
基于jeecgboot的大屏设计器开发——数据源设计(三)
基于jeecgboot的大屏设计器开发——数据源设计(三)
13 1
基于jeecgboot的大屏设计器开发——数据源设计(三)
|
12天前
|
数据库
基于jeecgboot的大屏设计器开发——数据源设计(二)
基于jeecgboot的大屏设计器开发——数据源设计(二)
14 1
|
12天前
|
人工智能 供应链 监控
推荐一款TinyEngine低代码引擎!支持自定义DSL 生成定制的源码、跨技术栈!
推荐一款TinyEngine低代码引擎!支持自定义DSL 生成定制的源码、跨技术栈!
|
6月前
|
数据库
易搭工作流引擎用是什么开源 还是阿里自研产品,零代码平台场景页面映射数据库表是动态创建,采用什么框架处理,怎么让系统产生高并发能力。易搭权限有没有了解,求解。
易搭工作流引擎用是什么开源 还是阿里自研产品,零代码平台场景页面映射数据库表是动态创建,采用什么框架处理,怎么让系统产生高并发能力。易搭权限有没有了解,求解。
|
8月前
|
canal 存储 关系型数据库
Spring Boot业务系统如何实现海量数据高效实时搜索
我们都知道随着业务系统的发展和使用,数据库存储的业务数据量会越来越大,逐渐成为了业务系统的瓶颈。在阿里巴巴开发手册中也建议:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表,如果预计三年后数据量根本达不到这个级别,请不要在创建表时就分库分表。数据库最终都是存储在磁盘上,随着数据量变大,会导致数据操作变得缓慢,无论是计算还是IO,但是话又说回来,单表数据量大就一定要进行分库分表操作吗?答案是否定的,因为分库分表本身是一个“很重”的操作,这里就不卖关子了,直接来看看分库分表带来的以下问题和挑战
430 1
Spring Boot业务系统如何实现海量数据高效实时搜索
|
8月前
|
设计模式 Java Spring
一个项目如何支持多种第三方对接如何实现?
一个项目如何支持多种第三方对接如何实现?
|
10月前
|
消息中间件 XML 存储
集成的方式
系统集成-功能集成
72 0
|
数据可视化 关系型数据库 数据挖掘
「集成架构」2020年最好的15个ETL工具(第三部)
「集成架构」2020年最好的15个ETL工具(第三部)