美文网首页
为什么要做数据服务层? - 业务层和数据库脱离耦合

为什么要做数据服务层? - 业务层和数据库脱离耦合

作者: semwar | 来源:发表于2017-10-21 22:14 被阅读0次

在互联网应用中,同一业务库通常会有很多依赖,比如58速运的订单依赖的业务系统有司机系统,用户系统,结算,优配系统,多个后台系统……。这么多系统依赖它,都会对数据进行查询和修改操作,那么引申出下面问题:

1.多个系统对数据修改,出现数据写冲突怎么办?

2.数据量的增长,查询越来越成为瓶颈,要分库分表怎么办?

3.要加查询实时缓存,多个系统对数据更改,感觉越来越复杂。

上述问题,问题1,有人说通过加分布式锁或者乐观锁。缺点:每个系统都加锁导致系统间锁的耦合越来越多,一个锁出了问题,改动可能涉及到多个系统修改,改动复杂度高。

图1 分库分表改动,业务层全部改动

问题2,业务系统和数据库耦合得多,导致数据的迁移不能灵活应对。

问题3,如果我要对主键查询做缓存,像实时更新缓存,加一个缓存key,每个系统修改数据都要对缓存key做过期处理,同样增加了系统对key的耦合。

那么有没有一种方式可以解决上述问题,屏蔽业务系统对数据操作的复杂性。我们需要把业务系统和数据库脱离耦合。假设我们抽取出数据服务层,上层业务系统不关心对数据的存取和操作,只需要调接口。对数据的操作锁,缓存数据操作数据分片路由都交给数据服务层去做。

图2 分库分表只需改动数据服务层

相关文章

  • 为什么要做数据服务层? - 业务层和数据库脱离耦合

    在互联网应用中,同一业务库通常会有很多依赖,比如58速运的订单依赖的业务系统有司机系统,用户系统,结算,优配系统,...

  • 关于Java 实体映射工具 MapStruct使用

    为了符合“高内聚,低耦合”思想,现在主流使用三层架构模式,即:表示层(UI)、业务逻辑层(BLL)和[数据访问层,...

  • 分库分表

    原因:数据量过大导致数据库性能降低。 a. 垂直分库:按照业务将 不同 的表分类放到不同数据库上。 解决业务层耦合...

  • iOS 一个模块化,接口化的网络请求组件JCNetWokingM

    做iOS开发有一段时间,接触了许多的网络请求组件。但是很多网络请求组件对业务的耦合性比较高,很难脱离业务层。对网络...

  • SSH框架之旅-spring(1)

    1.Spring 框架介绍 Spring 是一个开源的轻量级 Java 开发框架,可以解决业务逻辑层和其他层的耦合...

  • 数据技术篇

    大数据阶段 数据采集层(1)数据库同步(DataX/同步中心)(2)消息中间件(离线、实时) 数据计算层 数据服务...

  • 产品规划和运营规划

    产品规划:核心功能点、产品的架构、主要功能规划、产品路线图、产品原型 产品架构图:数据库层、数据服务层、应用层、表...

  • 三层

    三层结构 Model实体层直接与用户交互的层,登陆页面 DAL数据层封装所有与数据库交互的操作 BLL业务层业务处...

  • DAO层

    DAO层 DAO 是 Data Access Object(数据访问对象的缩写),DAO层是业务逻辑层与数据库层之...

  • 读书笔记|为产品经理总结阿里大数据之路

    阿里大数据体系分为四层,由下而上分别是数据采集层、数据计算层、数据服务层和数据应用层。 一、数据采集分为日志采集和...

网友评论

      本文标题:为什么要做数据服务层? - 业务层和数据库脱离耦合

      本文链接:https://www.haomeiwen.com/subject/zwhuuxtx.html