springcloud05——Zookeeper实现支付微服务

2年前 (2022) 程序员胖胖胖虎阿
155 0 0

springcloud05——Zookeeper实现支付微服务

前 言
🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端
☕专栏简介:深入、全面、系统的介绍springcloud与springcloud Alibaba微服务常用技术栈
🌰 文章简介:本文将使用zookeeper作为集群注册组件,建议收藏备用,创作不易,敬请三连哦
🥒文章推荐:
zookeeper入门到精通01——zookeeper入门
zookeeper入门到精通02——zookeeper的本地安装操作
zookeeper入门到精通03——zookeeper集群搭建
zookeeper入门到精通04——zookeeper集群选举与集群操作
Zookeeper入门到精通05——Zookeeper客户端命令行操作
zookeeper入门到精通06——zookeeper客户端API创建节点
zookeeper入门到精通07——zookeeper客户端API节点操作与原理

微服务架构与springcloud 01——微服务入门
微服务架构与springcloud02——父工程构建及支付模块实现
微服务架构与springcloud03——项目热部署与消费者订单模块
微服务架构与springcloud04——Eureka服务注册与发现
大厂面试真题|面经

文章目录

  • 一、准备工作
    • 1.1 技术架构
    • 1.2 集群启动
    • 1.3 网络检测
  • 二、支付服务进zookeeper
    • 2.1 新建项目
    • 2.2 pom文件
    • 2.3 yml文件
    • 2.4 主启动类
    • 2.5 controller
    • 2.6 测试

一、准备工作

1.1 技术架构

使用Zookeeper服务注册与发现与使用Eureka基本上是一致的,其技术架构如图
springcloud05——Zookeeper实现支付微服务

1.2 集群启动

笔者为了贴近实际生产,使用了zookeeper集群。如果您还没有zookeeper集群,推荐参考下面两个博客进行安装与搭建。当然,您要是只使用一台zookeeper服务器也是可以的,后面我就不再赘述了。

zookeeper入门到精通02——zookeeper的本地安装操作
zookeeper入门到精通03——zookeeper集群搭建

关闭防火墙。

systemctl stop firewalld
systemctl status firewalld

依次开启zookeeper集群的服务器。

zkServer.sh start

如果您参考了我的博客编写了一键启动的脚本,也可以这样。

zk.sh start

依次查看状态,确定是否启动成功。

zkServer.sh status

或者使用j脚本一键查看。

zk.sh status

springcloud05——Zookeeper实现支付微服务

1.3 网络检测

查看网络通信是否正常。先在虚拟机服务器上使用如下命令查看ip。

ifconfig

springcloud05——Zookeeper实现支付微服务

然后在客户端主机ping一下zookeeper集群的各台主机,确保网络畅通。
springcloud05——Zookeeper实现支付微服务

二、支付服务进zookeeper

2.1 新建项目

为了区分,中间空个8003。新建工程cloud-provider-payment8004。
springcloud05——Zookeeper实现支付微服务

2.2 pom文件

pom文件。其实就是替换下eureka就行,其它的与8001微服务是一致的。注意和数据库有关的依赖不要引入,因为我们接下来不使用数据库,也不会进行数据库的配置,如果引入就会出错哟。


<dependencies>
    <!-- 这两个依赖一般绑定在一起使用       -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!--引入自定义的api通用包,可以使用Payment支付bean-->
    <dependency>
        <groupId>com.wangzhou.springcloud</groupId>
        <artifactId>cloud-api-commons</artifactId>
        <version>${project.version}</version>
    </dependency>

    <!--替换掉eureka依赖-->
    <!--SpringBoot整合Zookeeper客户端-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        <exclusions>
            <!--            先排除自带的zookeeper3.5.3-->
            <exclusion>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!--        添加zookeeper3.4.10版本(引入对应版本的依赖)-->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.10</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

</dependencies>

服务器下载的zookeeper的jar包版本要与自己下载的zookeeper软件版本一致哦,如下图可以查看到服务器使用的zookeeper版本,不一致就可以排除掉原来的,再替换添加对应版本(上面就做了这件事)。
springcloud05——Zookeeper实现支付微服务

2.3 yml文件

application.yml文件也搞好。很简单,写端口号,以及zookeeper的ip,记住这样的核心理念。

#端口号
server:
  port: 8004


spring:
  application:
    #服务别名——注册到zookeeper注册中心的名称
    name: cloud-provider-payment
  cloud:
    zookeeper:
      connect-string: 192.168.106.43:2182,192.168.106.44:2182,192.168.106.45:2182 #linux的ip加暴露的端口号

2.4 主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain8004 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8004.class, args);
    }

}

2.5 controller

我们前面已经按照mvc的框架写过很多次了,这里主要介绍spring boot对zookeeper的集成。因此我们就直接在controller中对业务进行处理了。

@RestController
@Slf4j
public class PaymentController {

    @Value("${server.port}")
    private String serverPort;

    @RequestMapping("/payment/zk")
    public String paymentzk() {
        return "springcloud with zookeeper:" + serverPort + "\t" + UUID.randomUUID().toString();
    }

}

2.6 测试

启动zookeeper客户端(笔者修改过端口号,修改为2182,如未修改可以不指定ip与端口号,直接使用./zkCli.sh)

./zkCli.sh -server ip:port

springcloud05——Zookeeper实现支付微服务
查看节点信息

[zk: localhost:2182(CONNECTED) 0] ls /
[sanguo1, sanguo2, zookeeper]

启动8004模块。springcloud05——Zookeeper实现支付微服务
访问下:http://localhost:8004/payment/zk
springcloud05——Zookeeper实现支付微服务
zookeeper就正式整合到支付微服务咯。在zookeeper客户端使用命令查看下,可以看到注册的详细信息哟。
springcloud05——Zookeeper实现支付微服务
这篇文章就介绍到这里咯,如果小伙伴在准备秋招,可以多背背面试题,刷刷算法,推荐:大厂面试真题|面经,真的超级全哦

版权声明:程序员胖胖胖虎阿 发表于 2022年10月24日 上午5:16。
转载请注明:springcloud05——Zookeeper实现支付微服务 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...