目录
RPC和HTTP
1、RPC
RPC:remote produce call 远程过程调用,类似的还有RMI。自定义数据格式,底层基于TCP通信,速度快,效率高 早期的webservice,现在热门的dubbo。RPC需要使用同一的语言互相调用,HTTP不规定语言,只规定了网络传输的数据格式。
2、HTTP
HTTP:一种网络传输协议,只规定了网络传输时的数据格式,并没有规定使用什么语言,基于TCP,【一般跨语言就选springcloud】
2.1、Http客户端工具
a、Httpclient
b、OKHttp
c、HttpUrlConnection【spring的RestTemplate默认使用】
2.2、RestTemplate模板工具类
spring提供了一个RestTemplate模板工具类,对基于Http的客户端进行了封装,并且实现了对象与json的序列化与反序列化
3、RestTemplate模板工具类的应用
3.1、引入依赖
<!--web启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.2、配置模板bean
@EnableCircuitBreaker // 服务熔断
@EnableDiscoveryClient // 内部既能兼容eurake又能兼容zookeeper
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
//@SpringCloudApplication
public class ConsumerApplication {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class);
}
}
3.3、在调用方添加被调用方相同的pojo类
3.4、利用模板对象实现服务间调用
3.5、被调用方接口实现
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public User queryById(@PathVariable("id")BigDecimal id) {
return userService.queryById(id);
}
}