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

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

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

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

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

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

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

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

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

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

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

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

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

    相关文章

      网友评论

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

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