代码地址:https://github.com/AJ-Spade/cloud2020/tree/master
Zookeeper前置
Eureka(停更),Zookeeper,Consul,Nacos
- Eureka挺更了!!! 现在SpringCloud整合Zookeeper,代替Eureka!
- centos7中 zookeeper位置是/usr/local/services/zookeeper/zookeeper-3.4.9/bin
- zookeeper IP ,即centos的ip 192.168.56.128 此时本机为172.20.10.8
版本说明
- cloud Hoxton.SR1
- boot 2.2.2RELEASE
- cloud alibaba 2.1.0 RELEASE
- java java8
- Maven 3.5以上
- Mysql 5.7以上
Zookeeper
-
使用步骤:打开centos7,关闭服务器防火墙,然后启动zookeeper服务器。
-
服务提供者(cloud-provider-payment8004),搭建步骤:
-
step1:新建module,更改POM,编写YML
#8004表示注册到zookeeper服务器的支付服务提供者端口号 server: port: 8004 #服务别名----注册zookeeper到注册中心名称 spring: application: name: cloud-provider-payment cloud: zookeeper: connect-string: 192.168.56.128:2181
-
step2:编写主启动类,注意注解,分别为:@SpringBootApplication、@EnableDiscoveryClient;
-
step3:编写服务的内容,ssm。但是案例为了简便,只写了controller部分。
-
注意:在pom文件中,需要排除系统自带的3.5.3-zookeeper-beta,引入对应版本的zookeeper,否则会报版本冲突的故障。
-
-
编写好代码后,运行,可以在centos7中的zookeeper中看到微服务:
- step1:进入zookeeper的bin文件路径下,打开终端
- step2:开启zookeeper,命令:zkServer.sh start;开启zookeeper客户端,命令:zkCli.sh;
- step3:然后命令,查看连接上的服务:ls /
-
消费者(cloud-consumerzk-order80)搭建:
-
step1:创建消费者模块(cloud-consumerzk-order80),然后与上面一样的pom文件,和基本一样的yml配置文件,以及相似的主启动类。(只有自身相关信息不同)
-
step2:创建配置类,配置RestTemplate的Bean对象,方便controller中直接注入。并添加负载均衡的功能,注解为@LoadBalanced;
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } }
-
step3:创建controller,调用RestTemplate模板类的getForObject方法,远程调用http服务方法,将返回结果返回至页面中。
@RestController @Slf4j public class OrderZKController { public static final String INVOKE_URL="http://cloud-provider-payment"; @Resource private RestTemplate restTemplate; @GetMapping(value = "/consumer/payment/zk") public String paymentInfo() { String result = restTemplate.getForObject(INVOKE_URL+"/peyment/zk",String.class); return result; } }
-
需熟练掌握
知识点
-
zookeeper是一个分布式协调工具,可以实现注册中心功能;
-
微服务注册进zookeeper中,是临时节点还是持久节点?
是临时节点!一定时间内,缺失心跳,则直接在zookeeper的服务注册表中删除该节点。
tips
-
tool.lu/json 网站可以将json转为标准格式
-
RestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单的访问restful服务模板类。详情见day02内容。