簡體   English   中英

如何使用Spring Boot實施“負載均衡器”?

[英]How to implement “load balancer” using spring boot?

根據請求正文的內容,我需要將http請求重定向到URL_1URL_2

我開始執行控制器:

@RestController
public class RouteController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/**")
    public HttpServletResponse route(HttpServletRequest request) {
        String body = IOUtils.toString(request.getReader());
        if(isFirstServer(body)) {
            //send request to URL_1 and get response
        } else {
            //send request to URL_2 and get response
        }
    }
}

請求可能是GETPOST OT PUTPATCH等。

您能幫我寫那個代碼嗎?

我前段時間曾問過一個類似的問題。 請參閱服務器端重定向以進行REST調用以獲得更多上下文。

(據我目前的理解),最好的方法是從初始端點手動調用所需的端點。

@RestController
public class RouteController {

    @Value("${firstUrl}")
    private String firstUrl;

    @Value("${secondUrl}")
    private String secondUrl;

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/**")
    public void route(HttpServletRequest request) {
        String body = IOUtils.toString(request.getReader());
        if(isFirstServer(body)) {
            restTemplate.exchange(firstUrl,
                                  getHttpMethod(request), 
                                  getHttpEntity(request), 
                                  getResponseClass(request), 
                                  getParams(params));
        } else {
            restTemplate.exchange(secondUrl,
                                  getHttpMethod(request), 
                                  getHttpEntity(request), 
                                  getResponseClass(request), 
                                  getParams(params))
        }
   }
}

getHttpMethod示例實現:

public HttpMethod getHttpMethod(HttpServletRequest request) {
    return HttpMethod.valueOf(request.getMethod());
}

getHttpEntitygetResponseClassgetParams類似實現。 它們用於將數據從HttpServletRequest request轉換為exchange方法所需的類型。

對於Spring MVC應用程序似乎有很多更好的方法,但是我想這不適用於您的上下文。

您可以實現此目標的另一種方法是定義自己的REST客戶端並在其中添加路由邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM