Springcloud服务注册中心eureka

1.1.服务eureka注册的几个重要的概念

  (1)服务注册:当你的服务需要整合入cloud时,就需要向eureka注册中心注册你的服务。很明显这是你的服务发起的动作,即服务端向客户端发送注册信息,包含服务端的ip,端口等等一系列的元数据。
  (2)服务续约:即eureka客户端定时发送我还活着的信息,这里我们就可以看出eureka客户端用定时器定时(默认30s,可以修改但是不建议)询问服务的生命周期(实际上eureka2.0.x的确是定时器)。
  (3)服务剔除:即当eureka的客户端超过30*3s没有发送服务,就默认该服务已经挂掉,该服务的相关元数据就要从服务端剔除掉

1.2 简要说明eureka的流程

 ​
这是官方说明的文档。
(1)部署了3台eureka服务器,(实则互为客户端),这是部署为eureka的集群中心,后面我们会说明,这里暂时当一台服务器
(2)有4台应用请求端。其中他们都注册到eureka上,并且通过远程协议相互调用服务(这部分展示不用管)
(3)综上所述,实则就是客户请求端向注册中心发送请求。

1.3.简要说明eureka的内存运行


(1)eureka的实现基础:eureka是基于servlet容器实现的
(2)eureka服务端的简单的注册流程:
    初始化ServletContext 
        -》 初始化EurekaServerContext 
            -》 将服务对象实例存储在map中(更具map底层实现实现服务对象实例的更新)
(3)eureka的客户端简单的实现:
     客户端基于shouldRegisterWithEureka与shouldFetchRegistry来实现注册的(discover),如果上述属性不全为false,则开始创建发送心跳和线程池
     并且初始化一个定时刷新的任务。
 
 (4)eureka对外暴露:
     如果我们需要将服务注册到eureka中,我们就需要在该服务的yml文件中配置添加eureka.*相关配置,其中 defaultZone则说明了eureka的对外暴露基于http协议的。
     其实rureka对外暴露服务基于jax-rs标准提供rest方式进行的。

1.4.搭建简单的eureka服务 

(1)applicatuon.yml


spring:
  application:
    name: eureka-server
server:
  port: 8761


eureka:
  instance:
    hostname: localhost                          ###eurekad的配置域名,不建议使用localhost,建议使用虚拟host
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/           ####Zone主要获取分区,在eureka的源码中有说明
    fetch-registry: false
    register-with-eureka: false                       ###是否进行注册,如果时eureka的服务则不需要


(2) springbootAppliaciton.java


@SpringBootApplication        //声明springboot启动类
@EnableEurekaServer       //声明一个eureka的服务段
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}


(3)pom.xml

           主要使用的时springboot2.0.4.RELEASE和spirngcloud-Finchley.SR1版本(注意版本不一致问题很大)

1.5  搭建一个简单的eureka的客户端

    ps:这里关于客户端就不搭建后面每一个服务都可以看作eureka的客户端

 

1.6  关于eureka的集群

   (1)我们在说明eureka的流程时,我们可以看出eureka是用来查看服务是否在线,我们是否需要考虑服务将其记录在相关持                 久化设备中?后面我们会通过zinkip和admin做服务的具体监控。

  (2 )在上述中我们只是搭建了一个服务端,如果服务端挂掉,那么会导致后续的服务注册都不可用,这是我们就需要考虑是                不是多搭建几个服务端,如果一个挂了,就自动注册到其他服务端上?同时我们就需要考虑一个问题,在搭建多个服务                端时,如何控制多个服务段能够保持服务注册一致。

  (3)搭建eureka服务端的集群  (其他的基本不变主要是yml配置和启动方式)     

           Springcloud服务注册中心eureka


   1.6.1:application.yml

spring:
  application:
    name: eureka-ha
profiles:
   springms-config-server
    active: peer2     # 主要**哪个配置文件

1.6.2 application-peer1.yml

  

# 配置 eureka 登录密码,输入地址 http://localhost:8761 时候就需要输入这个用户名密码登录进去
security:
  basic:
    enabled: false
  user:
    name: admin
    password: admin

server:
  port: 1003
 
eureka:
  datacenter: SpringCloud   # 修改 http://localhost:8761 地址 Eureka 首页上面 System Status 的 Data center 显示信息
  environment: Test         # 修改 http://localhost:8761 地址 Eureka 首页上面 System Status 的 Environment 显示信息
  instance:
    hostname: peer3
    instance-id: ${spring.application.name}:${server.port}
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://admin:[email protected]:1001/eureka,http://admin:[email protected]:1002/eureka


其中aoolication-peer2.yml和appliction-peer3.yml配置剧本相似除了端口号修改

主要说明:client.register.-with-eureka和fetch-regiest为true表示这几个互为客户端并且允许相互注册。service-url:其他2个的url

1.6.3 启动参数设置

(1)eclipse多参数启动

     Springcloud服务注册中心eureka

Springcloud服务注册中心eureka

修改名称便于区别

Springcloud服务注册中心eureka

 

(2)以jar启动添加参数

        java -jar   xxx.jar  --spring.proacitve=peer1

具体的代码稍后发布地址