SpringCloud-Eureka模块使用小记

SpringCloud-Eureka模块使用小记

之前不了解的时候,觉得微服务能带来什么好处呢。等自己稍微了解点。发现:真香。能带来很多好处,最显而易见的时候能够减少测试工作量。各个模块分开部署,互相影响小,一个模块有问题不会导致另一个模块不可用
SpringCloud包括微服务的一堆模块。最基础应用的两个模块是Eureka和Feign。这两个分别是服务治理(注册,发现各个服务模块)和服务调用(各个模块间的调用)。

这篇文章是介绍Eureka模块的使用的

1. 为什么要使用Eureka服务治理?

  • 服务是什么:可以理解成应用,就是一个个单独的application。对外提供接口(这个接口不是指Interface,更强调controller里面对外提供的路径)
  • 在实际应用中有很多服务。例如说编号0-9 是个服务,每个服务别都会调用另外9个服务。如果你要实现各个服务之间调用。就用0号举例:如果想用其他调用其他服务。自己必须要存储其他服务的实例。最简单的,需要存储其他编号1-9,9个实例的地址。如果有一天,某个服务地址换了。那么需要更新配置。 你看这个时候配置那么多。你还要实时关注配置的变化。会浪费运维人员的精力。
  • 那么Eureka提供了什么功能:相当于所有的服务都在Eureka上注册,都是Eureka的客户端,每个服务不需要存储其他服务的实例地址了。只需要存储实例名字,如果需要就像Eureka服务咨询。即使服务地址变化了。各个服务只需要向Eureka服务端咨询咨询就好了。 有点像老旧的电话系统。Eureka就相当于与总线。我们拨打电话的时候只需告诉总线,我找谁,总线帮我们连通。

2. Eureka服务搭建demo

  1. 首先在父工程引入jar包 type和scope什么意思
    因为cloud有很多模块,这个是为了指定各个不同模块的版本的。不能版本可能不能很好的兼容
<!--定义Spring Cloud的依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
  1. 新建Eureka服务(一个单独的application)。新建一个Springboot项目。
    • 引入spring-cloud-starter-netflix-eureka-server
<dependencies>
    <!--注册中心-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>
  • 配置端口号和服务名字,写在application.properties
#服务端口,随便,不要和其他端口冲突就好
server.port=10000
# 服务名 名字你自己取随便,不要和其他重复就好
spring.application.name=eureka-server
#是否将自己注册到Eureka服务器中,本身是服务器,无需注册
eureka.client.register-with-eureka=false
#是否从Eureka中获取注册信息。因为我本身就是服务器,我不消费。不需要获取其他
eureka.client.fetch-registry=false
#Eureka客户端与Eureka服务端进行通信的地址
eureka.client.service-url.defaultZone=http://127.0.0.1:${server.port}/eureka/
  • 修改启动类,如果没有启动类需要自己新建Springboot启动类
    如果有,加个注解就好了@EnableEurekaServer
package com.code.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * @author dengtiantian
 */
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

启动(浏览器输入:http://localhost:10000注意用你配置的端口号):看到下面的页面说明配置成功,Instances currently registered with Eureka显示的是在Eureka注册的服务。目前是没有的。下面我接着写客户端
在这里插入图片描述
Eureka分为客户端和服务端,服务端是一个单独的application,就是上面配置的。客户端就是其他我们微服务的各个服务。只需要添加注解和引入jar包就可以

  1. 配置Eureka客户端
  • 在我们原来的服务(只是为了搭demo可以新建Springboot项目)里面添加jar包:spring-cloud-starter-netflix-eureka-client
<!--服务注册-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  • 添加配置(application.properties里面)
# 端口号
server.port=9003
# 服务名
spring.application.name=poi
#指定注册中心地址 注意这个地址要和server配置的地址匹配
eureka.client.service-url.defaultZone=http://127.0.0.1:10000/eureka/
#eureka服务器上获取的是服务器的ip地址,否则是主机名
eureka.instance.prefer-ip-address=true
  • 启动类添加注解@EnableEurekaClient。
package com.code.poi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * @author dengtiantian
 */
@SpringBootApplication
@EnableEurekaClient
public class PoiApplication {
    public static void main(String[] args) {
        SpringApplication.run(PoiApplication.class);
    }
}

启动
在看上面Eureka打开的地址。会显示Instances currently registered with Eureka多了一个POI的服务。就是我们的服务
在这里插入图片描述
结束

3. 小结

  1. Eureka分为服务端和客户端。服务端是一个单独的application。用来监控注册在上面的服务是否存活(每30S一次心跳监测,如果连续3次发现某个服务非存活,就会移除这个服务)
  2. 客户端是注册在服务端的服务。可以通过服务端拿到其他客户端的实例地址。这样客户端不用自己存储其他客户端(服务)的实例。其实其他客户端实例地址变化。但是我不需要改什么。因为我使用的时候回想服务端获取
  3. 关于服务间通信,到时候再写一篇文章

猜你喜欢

转载自blog.csdn.net/m0_37628958/article/details/106867508