- 事業紹介:ユーザーモジュール、注文モジュール、在庫モジュール、
- プロセスは次のとおりです。
ユーザーの支払い、ユーザーのショッピングポイントを増やす必要がある、
顧客の注文が必要
在庫を減らす必要がある
つまり、情報フィードバックを受け取った後、ユーザーモジュールは対応する操作を単独で実行し、注文および在庫モジュールに通知して対応する操作を実行する必要があります。
3. Eurekaマイクロサービス登録センターの使用
登録センターでは、各サービスがそのマシン上にあるポートがわかっているため、httpリクエストを送信するコードを記述する代わりに、他のサービスにリクエストを送信できるツールが必要です。これはFeignです。
/ **** * @説明:订单実体类 * / @Data @NoArgsConstructor public class Order { private String userId; プライベート整数カウント。 プライベート文字列の記述。 } ** * @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){ / ** * @Description:库存服务 order.setDescrpition( "success!this is orderService、my port is" + port); 返品注文; } } * @Author:wb * / @RestController @RequestMapping( "stockService") public class StockService { @Value( "$ {server.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 」 } / ** * @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); invokeStockを返す; } }
リボンの使用を負荷分散します。
ライブラリサーバーが5台のマシンに配置されている場合、この時点でポーリングメカニズムが使用されます。デフォルトのアルゴリズムはラウンドリボンポーリングアルゴリズムで、これは同じアプリケーションマシンで1回ポーリングするもので、ランダムではありません。現象、リボンの原理は次のとおりです。
元のリンク:https://blog.csdn.net/zajiayouzai/java/article/details/80612729