基于Spring Boot 2.0.3的Spring Cloud Eureka Server与Client
Posted jeffma
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Spring Boot 2.0.3的Spring Cloud Eureka Server与Client相关的知识,希望对你有一定的参考价值。
springBootVersion = ‘2.0.3.RELEASE‘
springCloudVersion = ‘Finchley.RELEASE‘
1、服务发现和服务注册
服务发现:如何提供给客户端一个可用的服务?客户端自己找,还是服务器端帮它找。
● 客户端发现:客户端查询服务注册表,然后使用负载均衡算法从中选择一个实例,并发出请求。
● 服务器端发现:客户端通过负载均衡器向某个服务提出请求,负载均衡器查询服务注册表,并将请求转发到可用的服务实例。
服务注册:
● 自注册:服务实例自己注册
● 第三方注册模式:服务注册器会通过查询部署环境或订阅事件的方式来跟踪运行实例的更改。一旦侦测到有新的可用服务实例,会向注册表注册此服务。服务管理器也负责注销终止的服务实例。
2、Region和Zone
Region:根据地理位置我们把某个地区的基础设施服务集合称为一个区域。通过AWS的区域,一方面可以使得AWS云服务在地理位置上更加靠近我们的用户,另一方面使得用户可以选择不同的区域存储他们的数据以满足当地法规遵循方面的要求。
Availability Zone:AWS的每个区域一般由多个可用区(AZ)组成,而一个可用区一般是由多个数据中心组成。AWS引入可用区设计主要是为了提升用户应用程序的高可用性。因为可用区与可用区之间在设计上是相互独立的,也就是说它们会有独立的供电、独立的网络等,这样假如一个可用区出现问题时也不会影响另外的可用区。
感觉是容灾备份的概念,比如某公司在北京有两个机房,一个在亦庄,一个在上地,每个机房都有一个Eureka Server,这两个Eureka Server的Region和Zone的配置
Eureka Server1
Region:beijing
Zone:yizhuang
Eureka Server2
Region:beijing
Zone:shangdi
3、Eureka架构
4、Eureka 实战
【最简单的Eureka Server】
1)主类
@EnableEurekaServer
2)application.yml (Standalone Eureka Server)
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
在浏览器中输入http://localhost:8761/
3)依赖
compile(‘org.springframework.cloud:spring-cloud-starter-netflix-eureka-server‘)
如果gradle找不到Eureka的包,在build.gradle中添加如下内容
原因:Due to Gradle’s dependency resolution rules and the lack of a parent bom feature
ext { springCloudVersion = ‘Finchley.RELEASE‘ } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } }
【注册服务到Eureka Sever】
1)主类
@EnableEurekaClient
@EnableDiscoveryClient 更通用,不限于Eureka
2.0 不需要加这个注解,只要类路径下有spring-cloud-starter-netflix-eureka-client。
2)application.yml
spring: application: name: user-service eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/
3)依赖
compile(‘org.springframework.cloud:spring-cloud-starter-netflix-eureka-client‘)
如果gradle找不到Eureka的包,Due to Gradle’s dependency resolution rules and the lack of a parent bom feature
参见Eureka Server中build.gradle的相关配置。
以上是关于基于Spring Boot 2.0.3的Spring Cloud Eureka Server与Client的主要内容,如果未能解决你的问题,请参考以下文章
258.Spring Boot+Spring Security:记住我(Remember-Me): 基于简单加密token的方案
Spring Boot + Spring Security解决UsernameNotFoundException无法被捕获的问题