认识Eureka (F版)
Spring Cloud
为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态)。使用Spring Cloud开发人员可以快速地完成实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作
Eureka
学过 Dubbo
的一定不会陌生 ZooKeeper
,那么学 Spring Cloud
的就不能陌生 Eureka
。它是 Netflix
开源的一款基于REST(Representational State Transfer)风格的服务发现框架,目前已被 Spring Cloud
集成在其子项目 spring-cloud-netflix
中,用于 Spring Cloud
的服务注册发现功能。
- 纯正的
Servlet
应用,jar/war 包部署 - 使用
Jersey
框架实现自身的RESTful HTTP
接口 - peer 之间的同步与服务的注册全部通过 HTTP 协议实现
- 利用
JDK Timer
实现 心跳检测、定时清理过期服务、节点同步等功能(动态添加删除节点、弹性) - 使用
Google
的guava
包管理内存缓存 - 目前 2.0 已经停止开源,但在
Finchley
版中Spring Cloud
所采用的是 1.9.x 版本(持续维护),所以完全不用担心,同时Spring Cloud
还提供了Eureka
、Consul
、ZooKeeper
、Etcd
等多款服务注册发现功能的框架,完全不用担心会在一棵树上吊死
Eureka 的 Server 与 Client
Eureka Server:
提供服务注册与发现,Client
节点启动后,会向Eureka Server
发送注册事件,Eureka Server
注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。基于Jersey
框架实现自身的RESTful HTTP
接口,只要满足规范任何语言程序都能向其进行注册Eureka Client:
任何形式的客户端,只要满足Eureka Server
订制的注册标准。
你好 Eureka Server
搭建一个 Eureka Server
是最为容易的,只需要一个依赖即可完成。在 Finchley
版本中 artifactId
与早期的有所差异,所以大家在使用 Spring Cloud
一定要注意自己所使用的版本,如果询问它人相关问题,也应该告知对方你所采用的版本
依赖
1 |
<!-- 此处我只给出了 Eureka Server 需要用到的包依赖, |
配置文件
在 src/main/resources
目录下创建一个 bootstrap.yml
的文件,文中我已经将部分需要注意的配置项罗列出来,并附写好相关说明,更多配置可以参考 EurekaInstanceConfigBean
、 EurekaClientConfigBean
、 EurekaServerConfigBean
。绝大多数情况下对于 Eureka Server
只需了解每个配置的作用及其意义即可,因为错误的配置反而会破坏原有的保护特性
1 |
server: |
主函数
与往常 Spring Boot
启动类类似,不同的是多了一个 @EnableEurekaServer
注解,用来标识当前工程是Eureka Server
,到此我们 Server 就算是搭建完成了。
1 |
package com.battcn; import org.springframework.boot.SpringApplication; |
访问 http://localhost:7071/
能看到如下内容就代表项目搭建成功,图中红色的表示我们关闭了 Eureka
保护模式,在网络波动的情况下 Eureka Server
可能无法及时的保护客户端实例
Eureka Server UI
你好 Eureka Client
搭建一个 Eureka Client
也是相当容易的,只需要两个小小的依赖即可完成。
依赖
1 |
<!-- 此处我只给出了 Eureka Server 需要用到的包依赖, |
配置文件
下面罗列一部分需要注意的配置项,需要注意的都已经写好相关说明,更多配置可以参考 EurekaInstanceConfigBean
、 EurekaClientConfigBean
、 InetUtilsProperties
以下配置适用于大部分情况
1 |
server: |
扩展知识
如果你觉得 Eureka Server UI
中默认显示的 instance-id
让你看着不爽,你可以试着在根目录下创建一个 application.properties
填写如下内容,因为Spring Cloud
和 Spring Boot
启动装载的配置有优先级之分,bootstrap
文件优先于 application
文件之前装载,所以一些配置只在 application
中生效
1 |
# 默认值:XB-201704242009:eureka-client:7072 |
主函数
与往常 Spring Boot
启动类类似,不同的是多了一个 @EnableDiscoveryClient
注解,用来标识当前工程是Discovery Client
。因为 Spring Cloud
提供了非常多的服务注册发现的组件,如 euerka
、zookeeper
、consul
、etcd
、所以为统一标识客户端身份,所以它用的是 @EnableDiscoveryClient
注解
1 |
package com.battcn; import org.springframework.boot.SpringApplication; |
Eureka Server UI
最新文章
- mac 安装brew
- 我的ORM汇总
- Winform无边框窗体的移动和阴影
- 颜色线性渐变-CAGradientLayer
- [Unity3D] 和Unity3D的一些事
- IntelliJ IDEA 15激活
- wordpress使用video.js与七牛云存储实现无广告视频分享应用
- javascript 命名空间的实例应用
- Android Support v4,v7,v13
- Python 学习日志(一)
- JavaScript&ldquo;闭包&rdquo;精解
- STM32通过FSMC驱动3.2寸液晶屏实现的音乐频谱
- noip借教室 题解
- 方法的重写与重载的区别(Override与Overload)。重载的方法是否可以改变返回值的类型
- Docker 学习5 Docker容器网络
- js 变量作用域
- delphi 多线程之System.TMonitor (续一)
- Azure 认知服务 (1) 概述
- 学习 swift (1)
- Mac 硬盘中各个文件夹详解
热门文章
- Java实现 LeetCode 260 只出现一次的数字 III(三)
- Java实现 LeetCode 121 买卖股票的最佳时机
- Java实现 蓝桥杯 算法提高最小方差生成树
- char 型变量中能不能存贮一个中文汉字?为什么?
- windows10+office2019各版本激活密钥
- hql 转 sql
- iOS/swift 单选框和复选框
- 恕我直言你可能真的不会java第1篇:lambda表达式会用了么?
- js银行卡四个数字一个空格
- Android Studio出现:Cause: unable to find valid certification path to requested target问题解决