SpringCloud-03 注册中心搭建

一,什么是注册中心

        服务注册中心 :Service Registry

        注册中心可以说是微服务架构中的” 通讯录 “,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。         服务实例将自身服务信息注册到注册中心。这部分服务信息包括服务所在主机IP 和提供服务 的 Port,以及暴露服务自身状态以及访问协议等信息。 服务实例请求注册中心获取所依赖服务信息。服务实例通过注册中心,获取到注册到其中的 服务实例的信息,通过这些信息去请求它们提供的服务。 SpringCloud-03 注册中心搭建

二,注册中心有什么作用

服务注册中心(下称注册中心)是微服务架构非常重要的一个组件,在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能: 1. 服务发现:
  • 服务注册/反注册:保存服务提供者和服务调用者的信息
  • 服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能
  • 服务路由(可选):具有筛选整合服务提供者的能力。
2. 服务配置:
  • 配置订阅:服务提供者和服务调用者订阅微服务相关的配置
  • 配置下发:主动将配置推送给服务提供者和服务调用者
3. 服务健康检测
  • 检测服务提供者的健康情况

三,常见注册中心

  • Zookeeper
        zookeeper它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说 zookeeper= 文件系统 + 监听通知机制。
  • Eureka
        Eureka是在 Java 语言上,基于 Restful Api 开发的服务注册与发现组件, Springcloud Netflflix中的重要组件
  • Consul
        Consul是由 HashiCorp 基于 Go语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,采用 Raft 算法保证服务的一致性,且支持健康检查。
  • Nacos
        Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。简单来说 Nacos 就是注册中心 + 配置中心的组合,提供简单易用的特性集,帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。 Nacos 还是 Spring Cloud Alibaba 组件之一,负责服务注册与 发现 。         最后我们通过一张表格大致了解Eureka 、 Consul 、 Zookeeper的异同点。选择什么类型的服务注册与发现组件可以根据自身项目要求决定。 SpringCloud-03 注册中心搭建

四,Eureka 的概述

4.1 Eureka 的基础知识

        Eureka是 Netfix 开发的服务发现框架, SpringCloud 将它集成在自己的子项目 spring-cloud-netfix中,实现 SpringCloud 的服务发现功能。 SpringCloud-03 注册中心搭建

上图简要描述了 Eureka 的基本架构,由 3 个角色组成: 1 、 Eureka Server
  • 提供服务注册和发现
2 、 Service Provider
  • 服务提供方
  • 将自身服务注册到Eureka,从而使服务消费方能够找到
3 、 Service Consumer
  • 服务消费方
  • 从Eureka获取注册服务列表,从而能够消费服务

4.2 Eureka的交互流程与原理

SpringCloud-03 注册中心搭建

 图是来自Eureka官方的架构图,大致描述了Eureka集群的工作过程。图中包含的组件非常多,可能比较难以理解,我们用通俗易懂的语言解释一下:

  • Application Service 相当于本书中的服务提供者,Application Client相当于服务消费者;
  • Make Remote Call,可以简单理解为调用RESTful API;
  • us-east-1c、us-east-1d等都是zone,它们都属于us-east-1这个region;

由图可知,Eureka包含两个组件:Eureka Server Eureka Client,它们的作用如下:

  • Eureka Client是一个Java客户端,用于简化与Eureka Server的交互;
  • Eureka Server提供服务发现的能力,各个微服务启动时,会通过Eureka Client向Eureka Server 进行注册自己的信息(例如网络信息),Eureka Server会存储该服务的信息;
  • 微服务启动后,会周期性地向Eureka Server发送心跳(默认周期为30秒)以续约自己的信息。如果Eureka Server在一定时间内没有接收到某个微服务节点的心跳,Eureka Server将会注销该微服务节点(默认90秒);
  • 每个Eureka Server同时也是Eureka Client,多个Eureka Server之间通过复制的方式完成服务注册表的同步;
  • Eureka Client会缓存Eureka Server中的信息。即使所有的Eureka Server节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。

五,注册中心搭建

我前面已经搭建了一个微服务,不过是服务消费方直接硬编码请求服务提供方。

springCloud01: springCloud01-20211225 练习springCloudSpringCloud-03 注册中心搭建https://gitee.com/vegetarian/spring-cloud01.git下面使用注册中心,来操作一下。

5.1 搭建Eureka服务中心

        1,搭建eurekaServer 模块

        2,引入eureka 依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

        3,设置eureka 配置文件

server:
  port: 9003
spring:
  application:
    name: eureka-order
eureka:
  instance:
      hostname: localhost
  client:
    registerWithEureka : false # 是否将自己注册到注册中心
    fetchRegistry : false # 是否从eureka中获取注册信息
    serviceUrl : #配置暴露给eureka client 的请求地址
      defaultZone : http://${eureka.instance.hostname}:${server.port}/eureka/

        4,配置eureka 启动类

package com.zjk.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

@EnableEurekaServer : 激活Eureka Server端配置

然后启动eurekaServer 模块,在浏览器访问配置文件的端口,出现下面页面即是访问成功!

SpringCloud-03 注册中心搭建

上一篇:Eureka Server 原理解析


下一篇:springcloud入门(七)之config配置中心