springboot集成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使用服务器信息进行远程调用,当然,远远不止,一些网关路由,负载均衡,熔断机制,都和服务注册与发现有关。
这里存疑。
上一篇: Hibernate入门
下一篇: tensflow实现手写识别代码
推荐阅读
-
Eureka实现微服务注册发现
-
springboot集成Eureka服务注册与发现
-
SpringCloud Eureka实现服务注册与发现
-
SpringBoot的服务注册与发现示例
-
最简单的Spring Cloud教程第一篇:服务的注册与发现(Eureka)
-
SpringCloud Eureka实现服务注册与发现
-
SpringBoot的服务注册与发现示例
-
《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置
-
《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置
-
最简单的Spring Cloud教程第一篇:服务的注册与发现(Eureka)