@
zarte 我用微服务的方式跟用数据库表的方式是一样的,宏服务提供数据要聚合多个表的数据,那么微服务提供数据也要聚合多个服务的数据。
从例子上看,查询的主体是订单,订单里会存商品 ID,商品里会存卖家用户的 ID,所以首先是查订单,查出订单后根据订单里的商品 ID 去商品服务查商品信息,然后再根据商品信息里的卖家用户 ID 来查用户信息,因为商品、用户数据可能有重复,所以每一步查询条件可以去重,查出来的数据可以重用。
乍一看可能会觉得这样比较麻烦,这就是微服务拆分需要权衡的事情,我自己做订单业务的时候是把订单、商品、SKU 、活动优惠等放在一个支付微服务中,用户数据集中放在用户微服务上,相应的订单成交后发货和产生的权益又有各自的微服务,这样能做到既不会有过于繁重的跨服务调用,又能做好微服务之间的开发、性能、故障的隔离以及复用。
整体上建议微服务设计以加法为主(服务由少逐渐变多),一开始业务简单的时候可以做宏服务,等某一功能模块具备一定的规模和独立性后再考虑拆成微服务。