温馨提示:同步在其他平台发布的热评好文:如何设计出优美的Web API?,现阅读量超过了2400,小伙伴们千万不要错过哦!CSDN 地址:如何设计出优美的Web API?
紧接昨天的上篇:如何把单体式应用拆解成微服务?【上】,今天我们一起来看看各种具体拆解场景的解决方案:
场景1:数据库表外键引用关系
如果单体式应用中两个功能模块存在数据引用关系,那我们在拆解微服务时如何消除这种外键引用关系呢?首先,停⽌外键引⽤;然后,改成通过RESTful HTTP API⽅式获取原先外键关联的信息。如下图,改造前Payment数据库表中的记录通过外键引用Order,代码层面通常会借助对象关系映射(ORM)框架建立数据对象的关联,改造后代码层面就不能通过ORM框架做关联了。在Payment数据库表的记录中会保存Order的主键值,除此之外还会保存Order的关键属性信息,这样可以避免频繁的跨进程调用,从而可以提高系统的整体效率表现。
下图是改造前的情况:
下图是改造后的情况: