RestTemplate&Openfeign&Dubbo在远程调用的区别

2023-12-14 16:44:22
功能RestTemplateOpenfeignDubbo
功能定位HTTP 客户端HTTP 客户端RPC 框架
服务调用方式同步调用同步调用同步调用、异步调用
传输协议支持HTTP、HTTPSHTTP、HTTPS自定义协议、HTTP、HTTPS
注解支持需要手动封装请求和解析响应注解方式定义接口,无需额外封装注解方式定义接口,无需额外封装
服务注册和发现需要手动配置服务端地址,无集成注册中心集成服务注册中心,自动发现服务集成注册中心,自动发现服务
负载均衡策略需要手动实现负载均衡策略集成负载均衡策略集成负载均衡策略
服务熔断与降级需要手动实现熔断和降级集成熔断和降级集成熔断和降级
服务接口定义需要手动定义接口和实现类需要手动定义接口,自动实现需要手动定义接口,自动实现
跨语言调用支持支持不支持
性能一般较好很好
超时配置简单比较麻烦-

注意事项:

  • RestTemplate是Spring提供的一个HTTP客户端,可以用于调用RESTful风格的接口。
  • Openfeign是Spring Cloud中的一个组件,基于RestTemplate封装,支持使用注解方式定义服务接口,集成了服务注册和发现功能。
  • Dubbo是一个高性能的RPC框架,支持多种协议和负载均衡策略,适用于大规模分布式系统。

RestTemplate示例代码:

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

public class RestTemplateExample {

    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();

        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", "Bearer <access_token>");

        HttpEntity<String> entity = new HttpEntity<>(headers);

        ResponseEntity<String> response = restTemplate.exchange(
                "http://api.example.com/users", HttpMethod.GET, entity, String.class);

        System.out.println(response.getBody());
    }
}

OpenFeign示例代码:

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient(name = "example-client", url = "http://api.example.com")
public interface ExampleClient {

    @GetMapping("/users")
    String getUsers();
}

Dubbo示例代码:

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;

@Service
public class ExampleService {

    @DubboReference
    private ExampleDubboService exampleDubboService;

    public String getUsers() {
        return exampleDubboService.getUsers();
    }
}
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

@DubboService
@Component
public class ExampleDubboServiceImpl implements ExampleDubboService {

    @Override
    public String getUsers() {
        return "User1, User2, User3";
    }
}

以上代码演示了使用RestTemplate、OpenFeign和Dubbo调用远程接口的示例代码。RestTemplate是一个非常常用的HTTP客户端,可以用来发送HTTP请求;OpenFeign是一个声明式的HTTP客户端,可以通过定义接口的方式来调用远程接口,无需手动编写HTTP请求代码;Dubbo是一个分布式服务框架,可以通过RPC方式调用远程接口。

?

?

文章来源:https://blog.csdn.net/weixin_44808225/article/details/134996247
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。