服务链 - Java

Chaining of services - Java

目前我正在使用多个 REST 服务来处理我的数据。 工作流程如下:

用户请求车速: 询问 SpeedService 最近的速度 => SpeedService 从 PositionService 请求汽车的最新位置,PositionService 通过调用 DatabaseService 来实现这一点,以便从汽车中获取原始的未处理数据。但是,我遇到问题的部分是使用另一项服务调用一项服务。我现在通过调用 api.

实现了这一点

示例:

Client client = ClientBuilder.newClient();
        WebTarget target = client.target("http://mylocalRestserver.example/webresources/").path("speed");
        target = target.queryParam("carId", carId);
        Invocation invocation = target.request(MediaType.APPLICATION_JSON).buildGet();
        Speed speed = new Genson().deserialize(invocation.invoke(String.class), Speed.class);
        return speed;

然而,每当我尝试模拟并发用户时 - 运行 多个 curl 查询 - REST 服务由于 SocketTimeouts 而中断,我假设是因为在同一个服务器套接字上发送了多个请求?有什么办法可以实现这个"chaining of services"?

你的想法很好,但不能用这种幼稚的方法来实现。

您要实现的是位置透明度,同时保持系统响应,这不是一件容易的事。

框架可以解决这个问题,我想到了AKKA。

如果您的 objective 只是关注点分离(每个 服务 处理的是问题的一部分并调用其他服务来获得它需要的东西),您可以只需使用相关的 类 而无需从服务器向其自身发出 http 请求。

相反,如果您希望能够跨多个节点分布您的服务,您应该依赖像 akka 这样的框架,自己动手是一项不可行的任务。