spring cloud学习一--Eureka服务注册与发现
spring cloud Eureka是基于Netflix Eureka服务发现注册产品的二次封装,它提供了服务注册功能(Service Registry)和服务发现功能(Service Discovery)。它是spring cloud中最核心的组件。
一、Eureka的服务注册
1.注册中心Eurek server
注册中心Eurek server搭建起来非常简单,
1.引入maven:spring-cloud-starter,
spring-cloud-starter-eureka-server
2.在启动类上添加注解:@EnableEurekaServer
,表示这是一个服务注册中心
3.编写application配置文件信息
需要注意的是:
a.从@EnableEurekaServer注解的源码中可以看出,EnableEurekaServer本身也是个客户端,所以需要将他自己注册或者在application文件上添加配置:register-with-eureka:false,表示自己不注册
b.Eurek server有自我保护功能,这个功能的机制是:宁可信其有,不可信其无。意思是:当一个服务注册后,如果这个服务被删除或者服务名字修改后,注册中心不会立即删除这个服务,他会根据这个服务离线的时间来判断,是否是一个无效服务。一般来说推荐把这个功能打开,如果想关掉可以在application文件上添加:enable-self-preservation: false。
Eurek server的创建本身不复杂,只是application文件的配置需要注意。
server:
port: 8761 eureka:
instance:
hostname: localhost
server:
enable-self-preservation: false # 关闭自我保护模式
eviction-interval-timer-in-ms: 5000 # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
client:
register-with-eureka: false #自己不用注册
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
2.服务中心的集群
我们知道在任何的分布式架构中,不管是AP还是CP架构都必须满足P,所谓的P是指即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。简单的来说就是当某个服务器宕机后,任然有其他服务器能够使用。所以Eurek server为我们提供了一套集群方案:将两个服务中心互相注册。
服务注册中的相互注册非常简单,就和client注册一样,在eureka.client.serviceUrl.defaultZone中配置需要集群的注册中心地址就行,用逗号隔开表示可以多个集群
---
spring:
application:
name: spring-cloud-eureka
profiles: peer1
server:
port: 8000
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
---
spring:
application:
name: spring-cloud-eureka
profiles: peer2
server:
port: 8001
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
---
spring:
application:
name: spring-cloud-eureka
profiles: peer3
server:
port: 8002
eureka:
instance:
hostname: peer3
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/
3.服务的注册Eurek client
与Eurek server一样,服务注册不需要太多配置:
1.引入maven:spring-cloud-starter-eureka
2.启动类中添加:@EnableDiscoveryClient
,表示这是一个客户端
3.编写application配置文件信息
spring.application.name=spring-cloud-producer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
最新文章
- OPENGGL深度测试
- Qt ini配置文件读写
- SmartDoc(YUIDoc) 注释编写
- 使用git提交github代码
- IOS之表视图添加索引
- [转载+原创]Emgu CV on C# (二) —— Emgu CV on 灰度化
- wave文件(*.wav)格式、PCM数据格式
- asp.net字符串分割函数用法
- struts2笔记09-动态方法调用
- 网络1712--c语言字符数组作业总结..
- 认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法
- HBase数据字典
- mybatis:SQL拦截器
- Apache服务器中设置端口映射和反向代理的方法
- useradd和groupadd(Linux创建用户\用户组\设置\分配用户权限\多用户远程登录权限)的使用
- 潭州课堂25班:Ph201805201 django 项目 第二十二课 文章主页 新闻列表页面滚动加载,轮播图后台实现 (课堂笔记)
- PHP单例模式 demo
- amazeui+canvas绘制二维码
- HTTP请求header信息讲解
- 微信小程序如何玩转分销
热门文章
- with上下文管理协议
- luogu P1047 校门外的树 x
- window.frames[iframe].document 在ie可以用,在360、火狐中都不兼容?
- 高级Javascript代码
- flask中获取request的参数的方法
- videojs实践--兼容ie7,8
- R python在无图形用户界面时保存图片
- TimeInOfficePresent
- (\w+)\s*, \s*(\w+)
- elasticsearch安装分词插件