Spring Boot 注册中心 - ZooKeeper

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录

1、什么是注册中心

注册中心是只有在分布式架构中才有的概念注册中心是分布式架构中所有服务器注册信息等相关功能的专用服务器注册的地址是服务器的名称与对应IP地址。分布式环境下的应用在启动时候都会向这个地方来注册自己的网络地址和名称。用一句话来概括注册中心的作用就是存放和调度服务实现服务和注册中心服务与服务之间的通信。

在分布式架构中服务会注册到注册中心应用 a 访问应用 b 时则应用 a 首先通过应用 b 的应用名称向注册中心获取最新的 ip 地址再根据 ip 地址访问应用 b。

2、为什么需要注册中心

① 没有注册中心

在不用服务注册之前去维护这种关系网络呢就是写死 IP 地址。

将其他模块的 ip 和 port 写死在自己的配置文件里甚至写死在代码里每次要去新增或者移除1个服务的实例的时候就得去通知其他所有相关联的服务去修改。随之而来的就是各个项目的配置文件的反复更新、每隔一段时间大规模的 ip 修改和机器裁撤非常的痛苦。

② 有注册中心

有了注册中心之后每个服务在调用别人的时候只需要服务的名称就好调用时会通过注册中心根据服务编码进行具体服务地址进行调用。

常用的注册中心中间件

在这里插入图片描述

服务注册中心的作用就是【服务的注册】和【服务的发现

3、注册中心原理

注册中心主要涉及到三大角色

  • 服务提供者
  • 服务消费者
  • 注册中心

它们之间的关系大致如下

  1. 各个微服务在启动时将自己的网络地址等信息注册到注册中心注册中心存储这些数据。
  2. 服务消费者从注册中心查询服务提供者的地址并通过该地址调用服务提供者的接口。
  3. 各个微服务与注册中心使用一定机制例如心跳通信。如果注册中心与某微服务长时间无法通信就会注销该实例。
  4. 微服务网络地址发送变化例如实例增加或IP变动等时会重新注册到注册中心。这样服务消费者就无需人工修改提供者的网络地址了。

4、注册中心和网关的简单联系

在微服务架构中我们都会使用API网关来作为暴露服务的唯一出口。这样可以将与业务无关的各项控制集中的在API网关中进行统一管理从而使得业务服务可以更加专注于业务领域本身。而在微服务构建的系统内部各个服务之间的调度我们通常采用注册中心和客户端负载均衡的方式来实现服务之间的调用。

所以大致的结构是这样子的

在这里插入图片描述

5、注册中心代码实例

ZooKeeper 资料

① 引入依赖

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.8.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
    <version>3.1.0</version>
    <exclusions>
        <exclusion>
            <artifactId>zookeeper</artifactId>
            <groupId>org.apache.zookeeper</groupId>
        </exclusion>
    </exclusions>
</dependency>

② 修改配置文件

# 表表示注册到 zookeeper 服务的支付服务提供者端口号
server.port=1212

# 服务别名 ---注册 zookeeper 到注册中心名称
spring.application.name=canal-client

# zk连接信息
cloud.zookeeper.connect-string=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

③ 可以用 zk 连接工具看到服务已经注册成功

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Spring