用户付款,需要给用户增加购物积分,
需要客户订单
需要减少库存
也就是说,用户模块接收到信息反馈后,自身进行相应的操作,需要通知订单和库存两个模块也进行相应的操作。
3.Eureka 微服务注册中心的使用
有了注册中心,也知道各个服务在那台机器哪个端口,就需要一个可以替我们向其他服务发送请求的一个工具,而不是我们自己编写代码发送http请求了。这就是Feign.
/**** *@Description:订单实体类 */ @Data @NoArgsConstructor public class Order { private String userId; private Integer count; private String descrpition; } ** * @Description:订单服务 * @Author:wb */ @RestController @RequestMapping("orderService") public class OrderService { @Value("${server.port}") private String port; @RequestMapping(value = "unifiedOrder", method = RequestMethod.POST) public Order unifiedOrder(@RequestBody Order order){ order.setDescrpition("success!this is orderService,my port is " + port); return order; } } /** * @Description:库存服务 * @Author:wb */ @RestController @RequestMapping("stockService") public class StockService { @Value("${server.port}") private String port; @RequestMapping(value = "reduceStock", method = RequestMethod.GET) public String reduceStock(@RequestParam Integer count){ return "this is stockService,my port is " + port + ",count is " + count; } } 创建FeognClient 客户端调用接口 @Component @FeignClient(name = "service-client-stock") public interface OrderAndStockFeignClient { @RequestMapping(value = "stockService/reduceStock", method = RequestMethod.GET) String invokeStock(@RequestParam(value = "count") Integer count); } /** * @Description:用户服务 * @Author:wb */ @RestController @RequestMapping("userService") public class UserService { @Autowired private OrderAndStockFeignClient orderAndStockFeignClient; @RequestMapping(value = "pay", method = RequestMethod.GET) public String unifiedOrder(Integer count){ String invokeStock = orderAndStockFeignClient.invokeStock(count); return invokeStock; } }
负载均衡Ribbon的使用。
下面问题来了,如果库服务器部署5在五台机器中,这时候就要用到轮询的机制了,默认的算法是Round Ribbon轮询算法,就是相同application机器一次轮询,不会出现随机现象,Ribbon原理是:
原文链接:https://blog.csdn.net/zajiayouzai/java/article/details/80612729
原文:https://www.cnblogs.com/dousil/p/12692920.html