一,Eureka是什么?和Zookeeper+Dubbo有什么区别
1, Eureka
是Netflix开发的基于Rest服务的服务注册与服务发现的组件,包括EurekaServer用于监控注册的服务和接收请求发送给服务的提供者,EurekaClient为注册者
复制代码
2, Dubbo 是一个微服务整体架构的框架,提供的功能包括服务注册发现,远程调用,监控等待 对标于SpringCloud,而Dubbo的服务发现模块是基于zookeeper的
二,单机部署
1, 部署服务器
复制代码
server:
port: 7002
eureka:
server:
enable-self-preservation: true
instance:
hostname: eureka7002
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka7001:7001/eureka/
复制代码
启动器选择服务
@EnableEurekaServer
@SpringBootApplication
@EnableDiscoveryClient
public class Eureka7001Application {
public static void main(String[] args) {
SpringApplication.run(Eureka7001Application.class,args);
}
}
复制代码
2, 注册服务者
复制代码
eureka:
instance:
instance-id: payment8002
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001:7001/eureka/
复制代码
对外发布服务
@EnableEurekaClient
@SpringBootApplication
@EnableDiscoveryClient
public class Payment8002Application {
public static void main(String[] args) {
SpringApplication.run(Payment8002Application.class, args);
}
}
获取服务信息
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/payment/discovery")
public Object discovery() {
Map<Object,Object> map = new HashMap<>();
List<String> services = discoveryClient.getServices();
for (String s : services) {
List<ServiceInstance> instances = discoveryClient.getInstances(s);
map.put(s,instances);
}
map.put("discoveryClient",discoveryClient);
return map;
}
复制代码
3, 注册消费者
复制代码
server:
port: 80
eureka:
instance:
instance-id: consumer80
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka/
复制代码
/**
* RestTemplate:
* 提供了多种方式访问远程HTTP服务,是一种简单便捷访问restful服务模板类,
* 是Spring提供用于访问Rest服务的客户端模板工具集
*/
@Autowired
private RestTemplate template;
@GetMapping(value = "/consumer/payment/create")
public CommonResult<Payment> create(Payment payment) {
return template.postForObject(PAYMENT_URL + "payment/create", payment, CommonResult.class);
}
复制代码
三,集群部署
1, 部署服务器
复制代码
server:
port: 7001
eureka:
instance:
hostname: eureka7001
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka7002:7002/eureka/
--------------------------------------------------------
server:
port: 7002
eureka:
server:
enable-self-preservation: true
instance:
hostname: eureka7002
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka7001:7001/eureka/
复制代码
2, 注册提供者
复制代码
eureka:
instance:
instance-id: payment8001
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/
-----------------------------------------------------------
eureka:
instance:
instance-id: payment8002
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/
复制代码
3, 注册消费者
复制代码
server:
port: 80
eureka:
instance:
instance-id: consumer80
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/
复制代码