使用eureka进行微服务注册

开始创建

编辑器:idea
构建工具:maven
jdk:1.8
GitHub地址
喜欢的童鞋点个赞欢迎加入我的qq群:893382070一起学习成长

step1 编写eureka_server

新建一个module
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
yml配置

server:
  port: 8661

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false #表示是否将自己注册到eureka_server默认为true。因为我们这个是server所以设置为false
    fetchRegistry: false #表示是否从eureka_server中获取注册信息。默认为true,我们这个是单点的eureka_server不需要同步其他server节点,所以设为false
    serviceUrl:
      defaultZone: http://localhost:8661/eureka/ #设置与eureka_server交互的地址,查询服务和注册服务都依赖这个地址,多个地址可由逗号分隔

启动访问出现下图即为成功:
在这里插入图片描述

step2 编写eureka Client

Eureka Client包括两个服务模块:Service Provider(服务提供方)和Service Consumer(服务消费方)。

服务提供方

创建过程与server类似
可以使用注解@EnableEurekaClient也可以是@EnableDiscoveryClient
@EnableEurekaClient指是eureka的client
@EnableDiscoveryClient指zookeeper、consul、eureka这些的client
在这里插入图片描述
yml配置

server:
  port: 8662

eureka:
  instance:
    prefer-ip-address: true #表示将自己的IP注册到eureka_server默认为false,不配置代表注册微服务所在操作系统的hostname到eureka_server
  client:
    serviceUrl:
      defaultZone: http://localhost:8661/eureka/
spring:
  application:
    name: service_provider1 #在Eureka Server进行注册时,当前服务的名称

刷新页面可以看到我们已经将其注册到server
在这里插入图片描述

服务消费方

搭建高可用eureka_server集群

背景:在上面我们成功的搭建了单节点的eureka_server,我们知道eureka_client会定时链接eurekaServer获取注册的服务信息并缓存到本地。消费者通过远程api调用时使用本地缓存中的数据,如果server宕机并且某些服务出现不可用,缓存没有更新就会影响服务的调用。所以我们需要搭建eureka_server集群

eureka_server默认支持节点之间相互注册
在yml中如下图:
在这里插入图片描述
默认是开启的

开始搭建

yml文件配置

spring:
  application:
    name: eureka_server_cluster
---
spring:
  profiles:
    active: peer1 #置顶profile为peer1
server:
  port: 8663
eureka:
  instance:
    hostname: peer1 #profile为peer1时主机名设置为peer1
  client:
    #registerWithEureka: false #表示是否将自己注册到eureka_server默认为true。因为我们这个是server所以设置为false
    #fetchRegistry: false #表示是否从eureka_server中获取注册信息。默认为true,我们这个是单点的eureka_server不需要同步其他server节点,所以设为false
    serviceUrl:
      #将自己注册到peer2的eureka上
      defaultZone: http://peer2:8664/eureka/ #设置与eureka_server交互的地址,查询服务和注册服务都依赖这个地址,多个地址可由逗号分隔
---
spring:
  profiles:
    active: peer2 #置顶profile为peer1
server:
  port: 8664
eureka:
  instance:
    hostname: peer2 #profile为peer2时主机名设置为peer2
  client:
    #registerWithEureka: false #表示是否将自己注册到eureka_server默认为true。因为我们这个是server所以设置为false
    #fetchRegistry: false #表示是否从eureka_server中获取注册信息。默认为true,我们这个是单点的eureka_server不需要同步其他server节点,所以设为false
    serviceUrl:
      #将自己注册到peer1的eureka上
      defaultZone: http://peer1:8663/eureka/ #设置与eureka_server交互的地址,查询服务和注册服务都依赖这个地址,多个地址可由逗号分隔

如下图打包:
在这里插入图片描述
配置系统的hosts:
windos系统:
C:\Windows\System32\drivers\etc\hosts
linux、mac:
/etc/hosts
如图增加peer1和peer2
在这里插入图片描述

使用命令:

java -jar eureka_server_cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka_server_cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

分别访问:http://peer1:8663/和http://peer1:8664/
出现下图即为成功
在这里插入图片描述
在这里插入图片描述

现在将之前的provider的yml改为

server:
  port: 8662

eureka:
  instance:
    prefer-ip-address: true #表示将自己的IP注册到eureka_server默认为false,不配置代表注册微服务所在操作系统的hostname到eureka_server
  client:
    serviceUrl:
      #defaultZone: http://localhost:8661/eureka/
      defaultZone: http://localhost:8663/eureka/
spring:
  application:
    name: service_provider1 #在Eureka Server进行注册时,当前服务的名称

启动程序打开peer1和peer2发现都存在下图:
在这里插入图片描述

这样我们就完成了向服务注册到eurekaServer集群上了
同样我们也可以设置defaultZone: http://localhost:8663/eureka/,http://localhost:8664/eureka/指定两个节点虽然不设置数据会自动同步但可以防止意外情况。

为eurekaServer添加用户凭证

eurekaServer默认是允许匿名访问的我们为了安全还是要添加凭证
首先导入maven dependency

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
发布了47 篇原创文章 · 获赞 29 · 访问量 9885

猜你喜欢

转载自blog.csdn.net/weixin_43908849/article/details/103509855
今日推荐