项目已经结束了,但是其中有一些没有讲到
1 购买商品减库存
减库存是一件容易的事,但是当有多台服务器的时候呢,好几个集群一起减库存,如果由于网络原因延迟了,库存变成0的时候另外一个服务还在减库存。
这种情况加上一个事务是解决不了问题的,因为它只能对当前的集群产生效果,就算都加事务也都是管着自己的,所以这时候就要想其他的办法。
解决:
通过原生sql语句查询就可以轻松解决,在sql语句上添加一条判断条件:
@Update(" update tb_stock
set
stock = stock - #{num}
where
sku_id = #{skuId}
and
stock >= #{num}")
int decreaseStock(@Param("skuId") Long skuId, @Param("num") Integer num);
这个不管有多少集群,库存不够就不给你减,轻松解决问题。
2 微服务间安全问题
微服务之前的地址如果暴露了也有可能出现安全问题。
解决:
这个项目中微服务之间的通信是靠fegin调用的,要解决安全问题,就需要授权中心了。
简单地说就是把微服务也当做用户,有账号和密码,也有鉴权,通过jwt加密,在调用微服务之前进行token校验,业务的逻辑变得很麻烦,我也没实现,,只是了解有这种方法。不过这是一种解决办法。
等想起来其他问题再来添加,不过我感觉应该不会加了,因为懒。