先举个例子:电商系统,用户下单可以使用卡券支付。此时,订单的金额会有两部分构成:商品金额 和 卡券抵扣金额。通常,这样的信息在订单详情页也会展示出来。那么,我们的订单表里,关于金额,应该有三个字段:商品金额、卡券抵扣金额 和 订单金额。
先举个例子,在ToB的系统中,客户通常会通过销售代表来引入和维系。那么,系统里会有一个保存客户与销售代表之间关系的 客户关系表 。当客户产生交易后, 交易表 除了要记录客户信息外,还要记录当时的销售代表。因为在企业实际经营过程中,客户与销售代表的关系会发生变更,例如某某销售代表离职或调岗,其负责的客户会转交给其他销售代表。
交易表 记录交易发生时的销售代表,就是我所说的“当时”。
相应地,在企业管理系统里,会有两种查看或统计销售业绩的需求,第一种是依照当时的客户关系来查看,另一种是依照当前的客户关系来查看。
第一种需求很好实现,因为在 交易表 里记录了销售代表。
那么,第二种需求怎么实现呢?
第二种需求就是通过 交易表 与 客户关系表这两张表进行关联来实现。这似乎也很容易理解。
那么,在分布式系统中,当 交易表 和 客户关系表分属在 交易系统 和 CRM系统 时,对于上面的第二种需求,该如何实现呢?
我先列举两个不当的解决方案。
1.
2.
比较好的解决方案,可以将 CRM系统 的 客户关系表 的数据同步到 交易系统 里。这样就可以像上面那样的两表关联来实现了。
你也许会担心数据的一致性问题。对于这个担心,可以考虑使用消息队列的方式,保证消息的可靠传输。然后,由 交易系统 发起,定期与 CRM系统 比对客户关系数据。毕竟, 客户关系表 是个瘦表,数据量并不大。
标签:代表,销售,金额,当时,客户,当前,卡券,客户关系 From: https://www.cnblogs.com/buguge/p/16907571.html