Eureka 注册中心

认识Eureka

Eureka就好比是滴滴,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。

同时,服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。

这就实现了服务的自动注册、发现、状态监控。

  • Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址
  • 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
  • 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

入门案例

结合上一篇springcloud的案例写的 大家可以去了解一下点击此处

编写EurekaServer

使用spring提供的快速搭建工具

导入依赖

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
        <!-- SpringCloud版本,是最新的F系列 -->
		<spring-cloud.version>Finchley.RC1</spring-cloud.version>
	</properties>

	<dependencies>
        <!-- Eureka服务端 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
            <!-- SpringCloud依赖,一定要放到dependencyManagement中,起到管理版本的作用即可 -->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>
</project>

编写一个启动类

/**
 * 使用Eureka的步骤 :
 *          1.导入依赖坐标
 *          2.在启动类上加入@EnableEurekaServer注解 启动Eureka的服务
 *          3.配置yaml文件 修改端口号避免端口冲突
 * 这是一个新建的类
 */
@EnableEurekaServer//注解  代表启动Eureka的服务
@SpringBootApplication
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class);
    }
}

yaml配置文件

server:
  port: 10087 #更改一个端口号避免冲突
  eviction-interval-timer-in-ms: 300000 #配置失效剔除 30秒一次
eureka:  #配置eureka集群之间的相互注册
  client:
    service-url:     #配置另一个注册目标的地址
      defaultZone: http://127.0.0.1:10086/eureka  #覆盖默认配置  key value结构
    register-with-eureka: false #这个配置表示不注册自己  不然自己注册自己时会报错 默认值是true
spring:   #配置注册服务的名称
  application:
    name: eureka-server
#instance:
#    prefer-ip-address: true  #表示我希望使用IP地址
#    ip-addres: 127.0.0.1 #指定IP地址

把服务提供者userservice注册到eureka上

添加客户端依赖

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

启动类上加入注解

/**  服务的提供方
 * 使用Eureka客户端的步骤:
 *    1、添加客户端依赖
 *    2.在启动类上加注解
 *    3.在配置文件中加入配置 配置地址 服务名
 * 使用这个注解代表 使用注册中心
 * @EnableDiscoveryClient注解可以兼容 多个注册中心
 * @EnableEurekaClient  这个注解代表只能使用Eureka
 * 这是一个新建的类
 */
@EnableDiscoveryClient //引入
@SpringBootApplication
@MapperScan("cn.itcast.user.mapper")
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class);
    }
}

配置文件yaml

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis
    username: root
    password: 12345
  application:
    name: user-service
mybatis:
  type-aliases-package: cn.rpf.user.pojo
eureka:  #配置eureka集群之间的相互注册
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka #覆盖默认配置  key value结构
  instance:
    prefer-ip-address: true  #表示我希望使用IP地址
    ip-addres: 127.0.0.1 #指定IP地址            服务的提供方注册信息   每三十秒心跳一次
    lease-renewal-interval-in-seconds: 30  #配置心跳 默认是30秒 每隔30秒与Eureka进行一次续约 心跳频率过高会增大负担
    lease-expiration-duration-in-seconds: 90 #最小的过期时长  默认30秒发一次心跳 如果90秒还没发代表挂了

服务使用方注册到eureka上
导入依赖

 <!--服務的调用方 引入eureka客户端依赖-->
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
       </dependency>
   </dependencies>

启动类

/**
 * 服务的调用方
 *    使用eureka步骤:
 *       1.引入eureka依赖
 *       2.启动类上加入注解  @EnableDiscoveryClient  无论是调用还是提供 都是使用客户端
 *       只有Eureka提供服务的
 *       3.配置yaml文件
 */
@EnableDiscoveryClient
@SpringBootApplication
public class UserConsumerDemoApplication {

    @Bean
    public RestTemplate restTemplate() {
        // 这次我们使用了OkHttp客户端,只需要注入工厂即可
        return new RestTemplate();
    }

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

配置文件

server:
  port: 8088
spring:
  application:
    name: consumer-service
eureka:  #配置eureka集群之间的相互注册
  client:
 service-url:    # 配置两个Eureka地址   高可用
    defaultZone: http://127.0.0.1:10087/eureka #覆盖默认配置  key value结构
    instance:
      prefer-ip-address: true  #表示我希望使用IP地址
      ip-addres: 127.0.0.1 #指定IP地址      服务的适用方要去eureka拉取服务
      fetch-registry: true #配置要不要拉取服务
      fetch-interval-seconds: 30 #配置拉取间隔时长

测试

访问eureka的管理网页
http://localhost:10087/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值