使用 Resttemplate 作为简单的 API 网关
Using Resttemplate as a simple API gateway
我正在使用 Resttemplate 在 spring-boot 项目中构建一个简单的 API 网关。当我的网关收到来自客户端的请求时,它通过 RESTful 调用将请求分派给另一个服务,然后将响应传回给客户端。
我的代码片段如下:
@RestController
@RequestMapping("api/v1/message")
public class GatewayController {
@PostMapping
public ResponseEntity<Response> dispatchRequest(@RequestBody Request request) {
validateInput(request);
Response response = restTemplate.post(URL_OF_ANOTHOER_SERVICE, request, ...);
return ResponseEntity.ok(response);
}
}
我每秒大约有100多个请求,我知道Resttemplate是线程安全的。
我的问题:
- Resttemplate可以做这样的工作吗?会不会成为瓶颈?
- 还有其他建议吗?
非常感谢。
你可以试试Spring Cloud Gateway or Spring Cloud Netflix.
除非您愿意,否则您不需要从头开始构建网关。即使你愿意,你也可以考虑安全性、成熟度和维护等方面
SpringCloud Netflix 的一些模块
已进入维护模式,因此,Spring Cloud Gateway 可能是一个不错的选择,因为 GJohannes 已引用
我正在使用 Resttemplate 在 spring-boot 项目中构建一个简单的 API 网关。当我的网关收到来自客户端的请求时,它通过 RESTful 调用将请求分派给另一个服务,然后将响应传回给客户端。
我的代码片段如下:
@RestController
@RequestMapping("api/v1/message")
public class GatewayController {
@PostMapping
public ResponseEntity<Response> dispatchRequest(@RequestBody Request request) {
validateInput(request);
Response response = restTemplate.post(URL_OF_ANOTHOER_SERVICE, request, ...);
return ResponseEntity.ok(response);
}
}
我每秒大约有100多个请求,我知道Resttemplate是线程安全的。
我的问题:
- Resttemplate可以做这样的工作吗?会不会成为瓶颈?
- 还有其他建议吗?
非常感谢。
你可以试试Spring Cloud Gateway or Spring Cloud Netflix.
除非您愿意,否则您不需要从头开始构建网关。即使你愿意,你也可以考虑安全性、成熟度和维护等方面
SpringCloud Netflix 的一些模块 已进入维护模式,因此,Spring Cloud Gateway 可能是一个不错的选择,因为 GJohannes 已引用