微服务器之间的通信
使用SpringCloud 将微服务器注册到Eureka服务器后,接下来要做的就是这些Eureka客户端(微服务器)之间的通信问题.
使用RestTemplate相互通信
要完成微服务之间的通信就要使用java发送http请求,springCloud为我们准备好了一个工具类RestTemplate.
使用RestTemplet这个工具类不需要导入特殊的包.
服务者和消费者完成相应的controller
在订单服务的主配置类中配置RestTemplate,交给Spring容器
@SpringBootApplication
@EnableEurekaClient //开启Eureka的配置,在主配置上打上这个标签,Eureka相关配置就会自动配置好
public class OrderServiceApplication {
/**
* 配置RestTemplate Bean
* @return
*/
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
// SpringBoot 的启动入口
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
订单服务的controller
@RequestMapping("/orderService")
@RestController
public class OrderServiceController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
//使用RestTemplate发送http请求
return restTemplate.getForObject("http://localhost:2000/userService/"+id, User.class);
}
}
用户服务的controller
@RestController
@RequestMapping("/userService")
public class UserServiceController {
@GetMapping("/{id}")
public User getUserById(@PathVariable(value = "id") Long id) {
return new User(id, "王大锤2000", 20);
}
}
调用订单的url,会自动调用用户的方法,以上就完成了微服务器之间的相互通信.
Eureka服务器高度可用
Eureka服务器高度可用的意思就是Eureka服务器集群(多个服务器做同样的事情),不会因为单一的Eureka服务器宕机,是整个项目宕机.
有了SpringCloud存在使得集群异常简单.
新建一个模块,做为Eureka服务端
就是新建一个Eureka服务端,搭建过程上一篇文章已经写过.
编写服务端配置文件
第一个Eureka服务端
server:
port: 1000
# 配置eurka服务端
eureka:
instance:
hostname: peer1 # 127.0.0.1
client:
fetch-registry: false #禁止自己(Eureka服务端)拉取通信清单
register-with-eureka: false # 禁止在通信清单中注册自己
service-url:
defaultZone: http://peer2:1001/eureka # 向其他Eureka注册自己的url,如果没有做Eureka集群就可以不写
spring:
application:
name: