2017-04-02 61 views
0

目前我正在使用多个REST服务来处理我的数据。 工作流程是这样的:链接服务 - Java

用户请求车的速度: 问SpeedService最近期速度=> SpeedService从PositionService要求汽车的latests位置和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; 

但是每当我试图并发用户模拟 - 运行多个卷曲查询 - REST服务中断是由于SocketTimeouts,我想是因为多个请求在相同的ServerSocket发送?有没有办法实现这种“服务链”?

回答

1

你的想法是合理的,但不能用这种天真的方法来实现。

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

还有处理这个问题的框架,AKKA浮现在脑海。

如果你的目标是关注点只是分离(每个服务涉及的是问题的一部分,并调用其他服务,以获得它所需要的),你可以使用相关的类未做http请求从服务器本身。

如果您希望能够在几个节点上分配您的服务,则应该依赖像akka这样的框架,自己做这件事是不可行的。