- 1、zookeeper常见命令
- 2、zookeeper准备工作
- 3、服务提供者
- 3.1、新建Cloud-provider-payment8005
- 3.2、改pom.xml文件
- 3.3、写application.yml文件
- 3.4、主启动类
- 3.5、编写Controller
- 3.6、启动8005注册进zookeeper
- 3.7、验证测试
- 3.8、思考
- 4、消费者调用支付微服务
- 4.1、新建cloud-consumerzk-order
- 4.2、改pom.xml
- 4.3、写application.yml
- 4.4、Config配置类
- 4.5、主启动类
- 4.6、业务类
- 4.7、验证测试
- 4.8、访问测试地址
- 5、三个注册中心比较
- 5.1、CAP理论
- 5.2、CAP场景
1、zookeeper常见命令
注意点
- 到zookeeper的bin目录下执行相应命令
- zookeeper默认端口号:2181
- consul默认端口号:8500
1、启动服务
sudo ./zkServer.sh start
2、查看服务状态
sudo ./zkServer.sh status
3、停止服务
sudo ./zkServer.sh stop
4、重启服务
sudo ./zkServer.sh restart
5、启动客户端
sudo ./zkCli.sh
2、zookeeper准备工作
关闭防火墙
sudo ufw disable
# 查看防火墙状态
sudo ufw status
3、服务提供者
3.1、新建Cloud-provider-payment8005
3.2、改pom.xml文件
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consul-discoveryartifactId>
dependency>
3.3、写application.yml文件
spring:
cloud:
zookeeper:
connect-string: 192.168.25.3:2181 #zookeeper服务器的地址
#如果为consul做负载,则此处配置consul
consul:
host: localhost
port: 8500
discovery:
#hostname: 127.0.0.1
service-name: ${spring.application.name}
3.4、主启动类
@SpringBootApplication
@EnableDiscoveryClient //该注解应用于向Consul或者ZooKeeper作为注册中心时注册服务
public class Payment8005Main {
public static void main(String[] args) {
SpringApplication.run(Payment8005Main.class,args);
}
}
3.5、编写Controller
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@RequestMapping("/payment/zk")
public String paymentZookeeper(){
return "springcloud with zookeeper: "+serverPort+"\t"+ UUID.randomUUID().toString();
}
}
3.6、启动8005注册进zookeeper
3.7、验证测试
测试1:zookeeper服务器
测试2:浏览器
zookeeper服务节点是临时的
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consul-discoveryartifactId>
dependency>
4.3、写application.yml
server:
port: 80
spring:
application:
name: cloud-consumer
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 当前数据源 *** 作类型
#mysql5.x的没有cj
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root123
cloud:
zookeeper:
connect-string: 192.168.25.3:2181 #zookeeper服务器的地址
#如果为consul做负载,则此处配置consul
consul:
host: localhost
port: 8500
discovery:
#hostname: 127.0.0.1
service-name: ${spring.application.name}
4.4、Config配置类
@Configuration
public class ApplicationContextConfig {
/**
* RestTemplate的作用是完成微服务之间的调用
* @return
*/
@Bean //依赖注入
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
4.5、主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class OrderZKMain {
public static void main(String[] args) {
SpringApplication.run(OrderZKMain.class,args);
}
}
4.6、业务类
@RestController
public class OrderZKController {
@Resource
private RestTemplate restTemplate;
public static final String PAYMENT_URL = "http://cloud-payment-service";
@GetMapping("/consumer/zk")
public String consumer_zk() {
String result = restTemplate.getForObject(PAYMENT_URL + "/payment/zk", String.class);
return result;
}
}
4.7、验证测试
4.8、访问测试地址
5、三个注册中心比较
组件名 | 语言实现 | CAP | 对外暴露接口 | SpringCloud集成 |
---|---|---|---|---|
Eureka | Java | AP(绝情与否可配置) | 可配支持 | HTTP |
zookeeper | Go | CP(绝情) | 支持 | HTTP/DNS |
consul | Java | CP(绝情) | 支持客户端 | 已集成 |
- C:Consistency (强一致性)
- A:Availability (可用性)
- P:Partition tolerance (分区容错性)
类型 | 场景 |
---|---|
CA(不现实) | 单点集群,满足—致性,可用性的系统,通常在可扩展性上不太强大。 |
CP | 满足一致性,分区容忍必的系统,通常性能不是特别高。 |
AP | 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。 |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)