学习微服务日记一:
1、Eureka 和 Nacos 的区别
共同点:
- 都支持服务注册和服务拉取;
- 都支持服务提供者的心跳检测机制;
区别:
- nacos支持服务提供端的主动检测,临时实例提供的是心跳检测,非临时实例提供的是主动检测机制;
- 临时实例心跳不正常会被移除实例列表,非临时则不会;
- Nacso支持服务列表的消息推送模式的变更,推送小心会更加及时;
- Nacos集群采用的是AP方式,当非集群模式中存在非临时实例则是CP模式,而EureKa采用的是AP模式;
2、Eureka 和 Nacos 之负载均衡
NacosRule:
- 优先调用namespace服务集群内的轮询列表
- 本地集群找不到,则去别的集群找,并且会发送报警信息
- 确定了可以的实例后,再采用随机的机制挑选
EurekaRule:
3、微服务的远程调用
- RestTemplate调用:
String url = "http://{服务名称}/{调用路径}" + 请求参数 Object obj = restTemplate.getForObject(url,Object.class);
存在问题:
- 代码阅读性差,编码不规范,容易造成代码的冗余
- 参数复杂,难以维护
- Feign 调用
- 引入Feign的依赖
- 启动类上配置@EnableFegianClients
- 自定义一个接口 调用过程如下:
@FegianClient(“{需要调用的接口的服务名称}”)
public interface ObjectInterface {
@GetMapping("/getById/{id}")
Object getObjectById(@PathVariable Long id)
}