Spring Cloud是目前用于开发微服务的主流框架之一,咱们都知道在微服务架构中最为基础、核心的模块,就是服务注册与发现。git
在Spring Cloud里咱们可使用它的Eureka模块来实现服务注册与发现,Spring Cloud Eureka是基于Netflix Eureka作了二次封装,它主要负责完成各个微服务实例的自动化注册和发现功能。算法
Eureka包含两个组件:Eureka Server和Eureka Clientspring
Eureka Server提供服务注册服务,各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储全部可用服务节点的信息,服务节点的信息能够在界面中直观的看到架构
EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具有一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。若是Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒) app
一、单点部署 若是是idea,能够直接直接new project >> springinitializr >> cloud discovery 按着步骤操做,就能够搭建一个单点eureka server负载均衡
二、集群部署 通常生产环境都是三个或以上节点,集群中的每一个节点也是把本身当一个提供者相互注册 application.yml配置以下框架
server: port: 8761 spring: application: name: eureka profiles: active: dev security: basic: enabled: false # 启用身份认证 user: name: lipeng # 定义用户名 password: lipeng. # 定义密码 --- spring: profiles: prd-1 eureka: instance: hostname: register1 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ instance: prefer-ip-address: true ip-address: 200.200.0.166 server: #配置属性,但因为 Eureka 自我保护模式以及心跳周期长的缘由,常常会遇到 Eureka Server 不剔除已关停的节点的问题 enable-self-preservation: false eviction-interval-timer-in-ms: 5000 --- spring: profiles: prd-2 eureka: instance: hostname: register2 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ instance: prefer-ip-address: true ip-address: 200.200.0.171 server: #配置属性,但因为 Eureka 自我保护模式以及心跳周期长的缘由,常常会遇到 Eureka Server 不剔除已关停的节点的问题 enable-self-preservation: false eviction-interval-timer-in-ms: 5000 --- spring: profiles: prd-3 eureka: instance: hostname: register3 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ instance: prefer-ip-address: true ip-address: 200.200.0.167 server: #配置属性,但因为 Eureka 自我保护模式以及心跳周期长的缘由,常常会遇到 Eureka Server 不剔除已关停的节点的问题 enable-self-preservation: false eviction-interval-timer-in-ms: 5000
打包后部署时在启动命令中增长 --spring.profile.active=prd-1/prd-2/prd-3 启动后以下:
这样才算部署成功,若是上面两个节点是在unavailable-replicas中则是没有成功的。ide
通常是不建议在k8s中使用eureka,不过有时候若是须要的话,则部署时最好填写域名。设置该变量就行 微服务
这个就比较简单了,网上有不少例子 pom依赖fetch
<!--注册中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
增长注解 yml配置
spring: profiles: dev eureka: instance: prefer-ip-address: true lease-renewal-interval-in-seconds: 5 lease-expiration-duration-in-seconds: 20 hostname: ${spring.application.name} client: serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ registry-fetch-interval-seconds: 10
实际上defaultZone只须要配置一个节点,其余节点也会自动同步。 启动服务就能够看到
详细代码见:https://gitee.com/lpxs/lp-springcloud.git,上面的是配置中心的部署demo。