2. 畅购商城之Eureka微服务搭建

第2章 Eureka微服务搭建

1. Eureka微服务搭建

1.1 Eureka介绍

1.1.1 Eureka是什么?

Eureka是基于REST服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移,功能类似于Dubbo的注册中心Zookeeper,所以在 Spring Cloud微服务架构中通常用作注册中心。我们称这个服务为 Eureka Server还有一个与之交互的客户端称之为 Eureka Client

1.1.2 Eureka实现原理

在这里插入图片描述
Eureka采用C-S的设计架构,即包括了Eureka Server(服务端),Eureka client(客户端)

  • Eureka Server提供服务注册,在各个节点启动后,会在Eureka Server中进行注册
  • Eureka Client是一个Java客户端,用于和服务端进行交互,同时客户端也是一个内置的默认使用轮询负载均衡算法的负载均衡器。在应用启动后会向Eureka Server发送心跳(默认30秒)。如果Eureka Server在多个心跳周期内没有接受到某个节点的心跳,Eureka Server将会从服务注册表中将这个服务移出(默认90秒)。
  • 服务发现有两种模式:一种是客户端发现模式,一种是服务端发现模式。Eureka采用的是客户端发现模式

1.2 Eureka微服务搭建

1.2.1 pom.xml配置

创建模块thankson-springcloud-eureka并修改pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>changgou</artifactId>
        <groupId>com.thankson.springcloud</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>thankson-springcloud-eureka</artifactId>
    <packaging>jar</packaging>
    <description>注册中心</description>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>

1.2.2 appliation.yml配置

在resources目录下创建配置文件application.yml

server:
  port: 8761

spring:
  application:
    name: eureka
eureka:
  instance:
    #设置当前实例的主机名称
    hostname: localhost
    #定义服务失效的时间,单位:秒
    lease-expiration-duration-in-seconds: 20
    #定义服务续约任务(心跳)的调用间隔,单位:秒
    lease-renewal-interval-in-seconds: 10
    #不使用主机名来定义注册中心的地址,而使用IP地址的形式,如果设置了属性,则使用该属性配置的IP,否则自动获取除环路IP外的第一个IP地址
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    #IP地址
    ip-address: localhost
    #状态页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置
    status-page-url-path: /info
    #健康检查页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置
    health-check-url-path: /health
    #健康检查页面的URL,绝对路径
    health-check-url: /
  client:
    #是否注册为服务 服务端必配,禁止自生注册
    register-with-eureka: false
    #是否检索服务 服务端必配,表示自己就是注册中心,不需要去检索服务
    fetch-registry: false
    #eureka默认空间的地址
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    healthcheck:
      enabled: true
    registry-fetch-interval-seconds: 5
  server:
    #关闭自我保护(生产时打开该选项) 关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提供者,如果关闭服务注册中心将不可用的实例正确剔除
    enable-self-preservation: false
    #扫描失效服务的间隔时间(缺省为60*1000ms)
    eviction-interval-timer-in-ms: 10000

1.2.3 添加启动类

com.thankson.springcloud.eureka文件夹下创建EurekaApplication.java

public class EurekaApplication {

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

}

1.2.4 测试

启动EurekaApplication.java,访问链接http://localhost:8761
在这里插入图片描述

2. common模块搭建

thankson-springcloud-common为父工程创建出thankson-springcloud-common-utilthankson-springcloud-common-component两个模块。

2.1 功能介绍

common模块结构如下:
在这里插入图片描述

thankson-springcloud-common-util

工具类公共模块  包含DateUtils、RandomUtils、ReflectionUtil、DateUtils等

thankson-springcloud-common-component

组件公共模块:主要包括canal、redis、rabbitMQ等

2.2 util模块

在src/main/java目录下创建文件夹 com.thankson.common.util,并添加需要用到的工具类
在这里插入图片描述

2.3 component模块

在src/main/java目录下创建文件夹 com.thankson.common.component,并添加需要用到的工具类
在这里插入图片描述

3. 结束语

至此,eureka与common模块已开发完毕。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章