ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot集成Eureka服务注册与发现

2020-02-22 16:45:20  阅读:211  来源: 互联网

标签:集成 服务 springboot server eureka client 注册 Eureka


springboot集成Eureka服务注册与发现


git 地址
https://github.com/a18792721831/studySpringCloud.git

1. Eureka简介

1.1 什么是Eureka

和 Consul、Zookeeper类似,Eureka 是一个用于服务注册和发现的组件,最开始主要应用于亚马逊公司旗下的云计算服务平台 AWS。Eureka 分为 Eureka Server和 Eureka Client,Eureka Server 为Eureka 服务注册中心,Eureka Client 为 Eureka客户端。

1.2 Eureka的基本架构

Eureka的基本架构主要包括以下3种角色。

  • Register Service:服务注册中心,它是一个Eureka Server,提供服务注册和发现的功能。
  • Provider Service:服务提供者,它是一个 Eureka Client,提供服务。
  • Consumer Service:服务消费者,它是一个Eureka Cient,消费服务。

服务消费的基本过程如下:首先需要一个服务注册中心 Eureka Server,服务提供者 Eureka
Client 向服务注册中心 Eureka Server注册,将自己的信息(比如服务名和服务的IP地址等)
通过 REST API 的形式提交给服务注册中心 Eureka Server。同样,服务消费者 Eureka Client 也
向服务注册中心 Eureka Server注册,同时服务消费者获取一份服务注册列表的信息,该列表
包含了所有向服务注册中心 Eureka Server注册的服务信息。获取服务注册列表信息之后,服
务消费者就知道服务提供者的IP地址,可以通过Http远程调度来消费服务提供者的服务。

2. Eureka Server

2.1 创建Eureka Server

在这里插入图片描述
在这里插入图片描述

2.2 配置gradle

在这里插入图片描述
其项目结构如上图,.gradle和build的文件夹不需要进行手动创建。
我们使用gradle warpper
在这里插入图片描述
然后修改maven仓库地址

repositories {
    maven{
        url 'https://maven.aliyun.com/'
    }
    maven{
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
    }
    maven{
        url 'https://repo1.maven.org/maven2/'
    }
    mavenCentral()
}

在这里插入图片描述
然后等待重新构建(刚创建成功,gradle会从maven的默认仓库下载依赖,此时下载非常慢,可以手动终止,等待我们添加了其他的仓库后重新刷新下载依赖。效果很明显,使用默认仓库下载一个jar在十几几十秒,但是使用国内的仓库,下载一个jar包只需要不到1秒)

2.3 配置Eureka

创建配置文件application.yml,在resources下
在这里插入图片描述

server:
  port: 8761

eureka:
  instance:
    hostname: 127.0.0.1
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enable-self-preservation: false

logging:
  level:
    org:
      springframework:
        web:
          servlet:
            mvc:
              method:
                annotation:
                  RequestMappingHandlerMapping: trace

spring:
  freemarker:
    template-loader-path: classpath:/templates/
    prefer-file-system-access: false
  • 8761是端口(tomcat启动的端口,对外服务的端口)
  • 127.0.0.1表示eureka访问的域名
  • 因为我们构建的是eureka服务端,所以,eureka Server不需要进行注册,而是eureka Client向eureka Server 进行注册的,所以需要关闭注册。即 register-with-eureka和fetch-registry为false
  • defaultZone是eureka主面板访问地址。其值进行变量替换后就是http://127.0.0.1:8761/eureka/
  • enable-self-preservation设置为false是关闭其自我保护机制(后面有说明)
  • logging是配置tomcat日志打印级别,默认打印信息较少,无法打印tomcat容器发布了哪些接口,但是设置为较详细的日志级别,可以打印发布哪些接口,这样就可以从日志中看出我们的controller是否发布成功
  • feemarker是重中之重,因为eureka刚创建成功时,去访问主面板是无法访问的,从官网的issues看,是认为gradle的缓存问题。不过网上有人说增加这些配置,可以解决这一问题。我没有深入,只是配置这个之后,重新刷新gradle构建,确实可以访问了。
    接下来在启动类增加eureka server的注解
    @EnableEurekaServer
    在这里插入图片描述

2.4 启动eureka server

在这里插入图片描述
然后在浏览器验证
在这里插入图片描述
提示没有开启自我保护机制,而且,其注册的eureka client也是空的。

3. Eureka Client

3.1 创建 Eureka Client

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后与2.2同样进行配置gradle(这里其实可以将仓库配置到root的gradle中,但是貌似不生效,不知道为什么,存疑,后续研究gradle时解决。)

3.2 配置Eureka

在这里插入图片描述

server:
  port: 8762

eureka:
  client:
#    register-with-eureka: false
#    fetch-registry: false
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka/


logging:
  level:
    org:
      springframework:
        web:
          servlet:
            mvc:
              method:
                annotation:
                  RequestMappingHandlerMapping: trace

spring:
  freemarker:
    template-loader-path: classpath:/templates/
    prefer-file-system-access: false
  application:
    name: eureka-client-test
  • 在 eureka client中需要注销注册,默认开启,因为eureka client需要向eureka server进行注册的。
  • defaultZone就是eureka server的注册地址
  • application:name是eureka client在eureka server面板中展示的名称
    其余配置与eureka server配置相同。
    当然,其注解是client
    在这里插入图片描述

3.3 启动eureka client

请注意,如果需要同时启动多个tomcat容器在一个idea中,需要在run dash board面板中。
在这里插入图片描述
正常情况下,会自动弹出提示,配置是否展示run dashboard。如果没有弹出,请百度。
此时刷新eureka面板
在这里插入图片描述

3.4 eureka client 服务发布者

在eureka中有三个角色:
eureka server
eureka client 服务发布者(服务提供者)
eureka client 服务消费则(服务调用者)

我们创建了eureka server和一个eureka client,并且需要将这个eureka client作为服务提供者,对外提供接口。
所以,我们需要创建controller
在这里插入图片描述
controller提供了两个接口,分别是hi和hello接口,返回String,并且get访问
在这里插入图片描述
接口自测
在这里插入图片描述
在这里插入图片描述

4. eureka的一点思考

在学习eureka的时候,我学习到这里,其实有一个疑问,我们创建了eureka server,eureka client并且提供了两个接口。那么,eureka cleint的调用者呢。
就是我们创建了对外接口,并且将对外接口以及接口服务器的信息放到了eureka server中,且所有的eureka集群都有这些信息,那么是怎么调用的呢?
这一块在后面的一个框架中,这个框架暂时实现了,提供一个平台,用于服务器的注册,以及相关信息的记录,并保证所有的服务器信息共享。
调用的是Ribbon,Ribbon使用服务器信息进行远程调用,当然,远远不止,一些网关路由,负载均衡,熔断机制,都和服务注册与发现有关。
这里存疑。

a18792721831 发布了157 篇原创文章 · 获赞 70 · 访问量 10万+ 私信 关注

标签:集成,服务,springboot,server,eureka,client,注册,Eureka
来源: https://blog.csdn.net/a18792721831/article/details/104444686

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有