SpringBoot 整合 Zookeeper 接入Starring微服务平台
背景
最近接的一个项目是基于公司产品Starring做的微服务支付平台,纯后台项目,实现三方支付公司和银行接口来完成用户账户扣款,整合成通用支付接口发布给前端调用。
但是扯蛋了,这边前端什么都不想做,只想我们提供一个链接,用户可以选择支付方式进行支付,这样的话相当于咱们又得起一个WEB版的收银台Project。
最近SpringBoot挺流行的,那就单独给起一个H5项目跑几个页面,调用后台的支付接口就完事了,如下?
最终的系统架构成了这样吧,随便画一画,请客官别吐槽。
公司的产品的服务都是发布到Zookeeper注册中心的,结果我们SpringBoot收银台成了直连某个IP端口,要是交易量一起来把直连的12001压垮了怎么办?
这样显然会存在问题,就因为一个收银台项目把整个微服务支付平台变成了单节点,所以我们收银台SpringBoot项目也必须连到上面的ZK中去查找平台服务。
环境
SpringBoot 2.2.1.Release
解决思路
从单web项目转成基于zookeeper调用的微服务项目:
1、Registry:服务注册,公司产品Starring 采取Zookeeper 作为我们的注册中心,我们现在要做的就是订阅服务。
2、Provider:服务提供者(生产者),提供具体的服务实现,这个是支付后台提供的服务。
3、Consumer:消费者,从注册中心中订阅服务,这个就是我们这边收银台要实现的功能啦。
4、Monitor:监控中心,RPC调用次数和调用时间监控,这块公司存在
从上图中我们可以看出RPC 服务调用的过程主要为:
1、生产者发布服务到服务注册中心
2、消费者在服务注册中心中订阅服务
3、消费者调用已注册的服务
操作步骤
A、配置文件
B、创建自己的Zookeeper连接
C、查找自己需要的服务
D、服务调用
A、配置文件
1、Maven 配置文件 pom.xml,引入zookeeper和zkclient两个包。
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.6</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.101tec