这里分享一种设计方案,也是用了好久慢慢优化过来的,可以针对大数据场景下非实时的数据挑战,将读写彻底分离开来,利用大数据组件读取,其他数据库集群当作写入,然后同步数据给我们的大数据相关集群,比如ES和Hbase,其中部分业务核心字段,我们可以先利用ES强大的搜索效率去查询出对应的根属性内容,在这里我们可以把根属性理解为基本表,也就是我们所谓的单表,在一对多的场景下,我们可以利用单表的某个业务字段去做rowkey反转,查询Hbase,在这里介绍一下Hbase是根据rowkey进行查询的数据库,可以理解为通过rowkey我们可以获取多条记录,也就是获取这一条数据对应的多表数据,然后对返回值进行一个组装,然后当其他微服务也有类似查询功能的适合,它们就可以给中台搜索层提相关的需求,中台搜索层再写完接口后跟上层的业务系统进行联调,上层业务系统无需关注底层实现以及学习ES或者Hbase的API,直接就可以进行高效的查询,并且这个架构的优势在于它把2个大数据组件的性能都最大化了,ES只存储少量数据,把搜索的效率发挥到最大,通过反转rowkey来定位到具体的Hbase多表数据,来让Hbase数据存储的性能发挥到最大化。