微服务实战 Eureka注册中心及集群搭建_注册中心部署应用服务器集群

目录

一、SpringCloud体系简介

二、Eureka服务端开发

创建项目父工程

创建服务端子工程

三、Eureka服务端集群搭建

四、创建Eureka客户端

五、项目启动验证

六、Spring cloud版本介绍


一、SpringCloud体系简介

微服务架构已在云原生架构中发挥着举足轻重的作用,而SpingCloud无疑是微服务架构的集大成者,云计算最佳业务实践。

SpringCloud体系主要包括以下组件:

  • 服务注册与发现:如Eureka、Consul、Nacos、zookeeper等;
  • 服务配置管理:如SpringCloud config、zookeeper、Nacos、Apollo等;
  • 服务调用:如Feign、Ribbon、RestTemplate等;
  • 服务熔断:如Hystrix、Sentinel等;
  • 服务网关:如SpringCloud Gateway、Zuul等;
  • 客户端负载均衡:如Ribbon等;
  • 服务链路跟踪:如Sleuth等;
  • 服务消息总线:如SpringCloud Bus等;
  • 分布式消息:如SpringCloud Stream+RocketMQ等;
  • 分布式事务:如Seata等。

Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目spring-cloud-netflix中,实现SpringCloud的服务发现功能。Eureka包含Eureka ServerEureka Client两个组件。

  • Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息。
  • Eureka Client是一个java客户端,用于与Eureka Server交互,客户端同时也有一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

二、Eureka服务端开发

创建项目父工程

  1. 新建maven父项目parent,用于统一管理依赖。
  2. 引入pom依赖,这里使用的SpringCloud版本是Hoxton.SR3
<modelVersion>4.0.0</modelVersion>
    <groupId>com.cxy965</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <description>A maven project to study maven.</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>${tomcat.scope}</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

创建服务端子工程

  • 创建注册中心第一个服务端项目registry
  • 引入eureka-server的依赖
    <groupId>com.cxy965</groupId>
    <artifactId>registry</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>com.cxy965</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
  • 编写启动类,增加**@EnableEurekaServer**注解,表示为服务端
package com.cxy965.demo;

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

/**
 * @Author:公众号:程序员965
 * @create 2022-06-06
 **/
@EnableEurekaServer
@SpringBootApplication
public class RegistryApplication {
    public static void main(String[] args) {
        SpringApplication.run(RegistryApplication.class, args);
    }
}
  • 新建application.yml配置文件,定义端口等信息
server:
  port: 8001
spring:
  application:
    name: registry
eureka:
  instance:
    hostname: 0.0.0.0
    lease-renewal-interval-in-seconds: 10 #服务的注册涉及到心跳连接,默认为每30s
    lease-expiration-duration-in-seconds: 30 #服务被移除的时间默认为90s
  client:
    healthcheck:
      enabled: true #开启心跳
    register-with-eureka: false
    fetch-registry: false
    serviceUrl:
      defaultZone:  http://${eureka.instance.hostname}:${server.port}/eureka/
    registry-fetch-interval-seconds: 30 #eureka client间隔多久去拉取服务注册信息,默认为30秒

这样第一个Eureka服务端就开发完成了,接下来我们创建集群。

三、Eureka服务端集群搭建

如果要搭建服务端集群,需要开启 Eureka 集群配置,各服务端启动时 Eureka Server 会将注册信息向其它 Eureka Server 进行同步,因此搭建高可用集群架构只需要将 Eureke Server 配置指向其它可用的 serviceUrl 即可。

  • 复制上面 Eureka 单个服务端项目,创建集群第一个服务eurekaserver1;
  • 修改application.yml配置文件;

在上面 Eureka 单个服务端项目的基础上,修改配置文件中的 register-with-eurekafetch-registry以及serviceUrl.defaultZone参数,如下:

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。*

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值