当前位置: 首页 > article >正文

Eureka使用总结(自用)

目录

什么是Eureka

有趣故事

Eureka做什么?

Eureka服务端:

maven依赖:

Application:

配置:

至此,完成对Eureka服务端的实现,我们对子项目进行运行:

访问localhost:6868/,如果显示主页,则说明服务端运行成功

 Eureka客户端:

yml:

其余类这里不过多展示,同样运行application,成功运行

 

 


什么是Eureka

是指服务注册与发现组件,用于实现服务的自动注册与发现,Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。服务端和客户端均采用Java语言编写。

Eureka作为初代的服务注册和发现组件,其基本思想和原理对于后来的Nacos有深远的影响,在nacos中也能隐约看到其身影

本文简单演示Eureka的搭建,为后续实训项目接轨

有趣故事


Eureka的故事来源于人人追求真善美的古希腊,“Eureka”是希腊语,意思是“我发现了!”

这个有魔力的单词是来源于阿基米德。在公元前200多年,他在洗澡时发现了证明王冠是否纯金的方法(黄金密度),他激动地一边大喊“Eureka!”一边跳出澡盆奔去王宫,连衣服都忘了穿。后来人们用Eureka这个词来形容洞察浮现的瞬间。

SMS、库存、积分服务器,服务迁移变更等需要修改相应的URL地址,怎么不修改URL地址?

在微服务中,spring-provider对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂的互联网环境,一个项目肯定会拆分出十几,甚至数十个微服务。此时如果还人为管理地址,不仅开发困难,将来测试、发布上线都会非常麻烦

这就好比是 网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多人想要约车,但是无奈出租车太少,不方便。私家车很多却不敢拦(没有人告诉哪些车私家车可以拉人),而且满大街的车,谁知道哪个才是愿意载人的。一个想要,一个愿意给,就是缺少引子,缺乏管理啊。

此时滴滴这样的网约车平台出现了,所有想载客的私家车全部到滴滴注册,记录你的车型(服务类型),身份信息(联系方式)。这样提供服务的私家车,在滴滴那里都能找到,一目了然。

此时要叫车的人,只需要打开APP,输入你的目的地,选择车型(服务类型),滴滴自动安排一个符合需求的车到你面前,为你服务,完美!

Eureka做什么?

Eureka就好比是滴滴中心,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。

同时,服务提供方与Eureka之间通过“心跳” 机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。

这就实现了服务的自动注册、发现、状态监控。

Eureka服务端:

在项目中搭建Eureka子模块 ,目录参考如下:

maven依赖:

<?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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.flowerfog</groupId>
        <artifactId>staff_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>org.example</groupId>
    <artifactId>staff-eureka</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!--feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flowerfog</groupId>
            <artifactId>staff-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flowerfog</groupId>
            <artifactId>staff-common-model</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

Application:

package org.flowergfog;

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

/**
 * Eure服务端
 */
@SpringBootApplication
@EnableEurekaServer
public class EureApplication {

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

配置:

#eureka服务的配置文件
server:
  port: 6868 #服务端口
spring:
  application:
    name: staff-employee #指定服务名
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/staff?useUnicode=true&characterEncoding=utf8
    username: root
    password: root
eureka:
  client:
    registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是所有无需注册
    fetchRegistry: false #是否从Eureka中获取注册信息
    serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
      defaultZone: http://127.0.0.1:${server.port}/eureka/

至此,完成对Eureka服务端的实现,我们对子项目进行运行:

 

访问localhost:6868/,如果显示主页,则说明服务端运行成功

 

 

 Eureka客户端:

就是简单的在配置文件中搭建对url访问的权限

yml:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:6868/eureka/
server:
  port: 9003
spring:
  application:
    name: staff-employee #指定服务名
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/staff?useUnicode=true&characterEncoding=utf8
    username: root
    password: root
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true
  redis:
    host: 127.0.0.1
    port: 6379

其余类这里不过多展示,同样运行application,成功运行

 

 

至此,Eureka的简单实现完成

 

 


http://www.kler.cn/a/463538.html

相关文章:

  • 1.1.1 认识时间复杂度
  • 非docker方式部署openwebui过程记录
  • UniApp | 从入门到精通:开启全平台开发的大门
  • HackMyVM-Airbind靶机的测试报告
  • Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决
  • SQLite简介:轻量级数据库入门
  • JS中批量创建对象的三种模式(小白笔记)
  • 使用MFC编写一个paddleclas预测软件
  • 嵌入式系统 第七讲 ARM-Linux内核
  • CSS系列(48)-- Custom Highlight API详解
  • 如何实现分片上传功能:基于 Vue 和 iView 上传组件的详细教程
  • 如何寻找到文件在电脑中安装的位置
  • C++ 变量:深入理解与应用
  • 端口被占用
  • 【ArcGIS微课1000例】0136:制作千层饼(DEM、影像、等高线、山体阴影图层)
  • UML类图示例-CPP
  • C# OpenCV机器视觉:目标跟踪
  • 【数据结构】(Python)差分数组。差分数组与树状数组结合
  • vs2022编译opencv 4.10.0
  • Spring Boot项目启动时显示MySQL连接数已满的错误
  • 1Panel自建RustDesk服务器方案实现Windows远程macOS
  • 2021.12.28基于UDP同信的相关流程
  • Python-Pdf转Markdown
  • sudo mkdir -p /etc/docker其中的 -p 什么意思?
  • ubuntu 如何使用vrf
  • PyTorch快速入门教程【小土堆】之torchvision中的数据集使用