官网可知,Eureka停更了https://github.com/Netflix/eureka/wiki,也就会出现其他的技术选型,比如zookeeper、consul。

Zookeeper的安装配置参考:https://blog.csdn.net/weixin_47061482/article/details/114383392
1)创建clould-payment3服务提供者工程
同样方法新建module(clould-payment3)、改pom、主启动、yml
pom中添加zk相关依赖:
>
>org.springframework.cloud >
>spring-cloud-starter-zookeeper-discovery >
>3.1.2 >
>
主启动类:
@SpringBootApplication
@EnableDiscoveryClient
public class ClouldPyament3 {
public static void main(String[] args) {
SpringApplication.run(ClouldPyament3.class);
}
}
yml文件添加zookeeper相关:
server:
port: 8003
spring:
application:
name: clould-payment #微服务应用的名字
datasource:
type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
driver-class-name: com.mysql.jdbc.Driver #mysql驱动包
url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false #useSSL安全加固
username: root
password: 123456
cloud:
zookeeper:
connect-string: localhost:2181
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.qytest.springclould.entitites
PaymentController.java:
@RestController
@Slf4j
public class PaymentController {
@Value("${server.port}")
private String serverport;
@GetMapping(value = "/payment3/zk")
public String paymentzk() {
return "zk注册中心测试:" + serverport + "\t" + UUID.randomUUID().toString();
}
}
启动zk,浏览器http://localhost:8003/payment3/zk访问测试,我们的payment3工程已经成功注册进zk:

2)验证zk注册中心是临时节点

手工停掉payment3模拟服务不可用,我们可以看到zk节点下为空了,也就是zk是一定心跳检测后立即剔除,zk注册中心是临时节点

重启服务后发现zk节点id是变化的,也进一步验证了临时节点:

报错:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed 一般可能是jar冲突
3)创建clould-order2服务调用者工程
同样方法创建order2工程,引入zk依赖,改yml,启动类等

至此,payment服务提供者、order服务调用者两个应用服务均已注册进zk

小结:zk不支持控制台,通过命令行zkServer.cmd启动,通过zkCli.cmd打开
https://www.springcloud.cc/spring-cloud-consul.html中文教程
https://www.consul.io/downloads 官网下载
1、安装
本地下载安装成功后,解压路径cmd,执行命令 consul agent -dev 启动
打开浏览器访问 Consul 首页 http://localhost:8500

2、创建微服务提供者注册进consul
和前几节一样新建clould-payment4支付工程作为服务提供者

pom文件中添加consul相关依赖:
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consul-discoveryartifactId>
<version>3.1.1version>
dependency>
yml文件:
server:
port: 8004
spring:
application:
name: clould-payment #微服务应用的名字
datasource:
type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
driver-class-name: com.mysql.jdbc.Driver #mysql驱动包
url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false #useSSL安全加固
username: root
password: 123456
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.qytest.springclould.entitites
PaymentController.java
@RestController
@Slf4j
public class PaymentController {
@Value("${server.port}")
private String serverport;
@GetMapping(value = "/payment4/consule")
public String paymentzk() {
return "consule注册中心测试:" + serverport + "\t" + UUID.randomUUID().toString();
}
}
启动回到consul界面,可看到成功注册。

3、创建微服务调用者注册进consul
同样方法参考验证zk时创建的clould-order2创建clould-order3工程,启动验证,至此服务提供者和服务消费者均已注册进consul:

Eureka、Zookeeper、Consul注册中心区别:
经典的CAP理论(粒度考虑的是数据,而不是整体系统策略),分布式架构P是一定要保证的,所以基本上都是AP或者CP
- C(Consistency)强一致性
- A(Availability)可用性
- P(Partition tolerance)分区容错性