zoukankan      html  css  js  c++  java
  • spring-cloud之服务治理组件Eureka

    前言

    前几天我们分享了webflux的相关知识点,由于越分享发现内容越多,所以webflux的相关知识就先告一段落,但是就目前分享的内容来说,已经足够让我们对webflux有一个最近基本的认识,至于其他内容,我们后期继续分享。

    昨天天太热了,不在状态,也脉动不回来,所以也就没有分享新的东西。

    今天也热,感觉像进了烤箱一样,但是学习还是不能太懈怠,该坚持的不应该被放弃,而且这燥热的天气必须得有点产出,这样我才稍微觉得生活的有点追求,人也稍微有点精神,所以思前想后,我就决定分享下spring cloud的相关知识了。

    spring cloud算是现阶段比较主流的技术,也是很多公司现阶段面试的必问内容了,早一点做知识储备,这样后面再找工作也不会太过焦虑。

    学习这件事,就应该,苟日新,日日新,又日新,当然也有做好就有知识的学习。好了,话不多说,下面我们直接开始吧。

    Eureka

    我们今天内容的主角就是spring cloud的服务注册治理组件——Eureka,它中文的意思是找到了,发现了,它的作用和它的名称大致相同,所以他在我们spring cloud中所起的作用就是服务注册和服务发现,我们今天主要分享的是spring cloud Eureka组件的配置和简单用法,至于服务之间的调用,我们放在后面讲解。

    创建项目

    首先我们创建一个spring-boot-web项目,核心依赖就是spring-boot-starter:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    

    然后还需要引入spring-cloud-eureka的依赖:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        <version>2.2.9.RELEASE</version>
    </dependency>
    

    这里的版本可以在mvn的仓库查询,地址如下:

    https://mvnrepository.com/search?q=spring-cloud-starter-netflix-eureka-server
    

    eureka配置

    服务端配置

    首先在项目主类上加上@EnableEurekaServer注解,启用Eureka服务端:

    @SpringBootApplication
    @EnableEurekaServer
    public class SpringCloudEurekaDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringCloudEurekaDemoApplication.class, args);
        }
    
    }
    

    然后在application.properties文件中加入如下配置:

    # Eureka 注册服务器主机名称
    eureka.instance.hostname=localhost
    # 是否注册给服务中心
    eureka.client.register-with-eureka=false
    # 是否检索服务
    eureka.client.fetch-registry=false
    # 治理客户端服务域
    eureka.client.service-url.defaultZone=http://localhost:8999/eureka/
    

    第一个配置是设定Eureka的服务器名称,目前没发现有啥用;

    第二个配置项是设置是否注册到服务中心,这个配置默认是true,也就是说默认情况下会自动注册至Eureka,但是由于当前服务是注册中心,所以就没必要再注册了。

    第三个配置项是和第二个配置相对,它是设置是否从服务注册中心获取服务(发现服务),默认情况也是true,由于本服务为服务中心,所以也不需要获取。

    第四个配置设定的是注册中心的服务地址,客户端也需要用到这个。不过,eureka服务其实是不需要要这个地址的,当然配置或者不配置,服务注册中心都可以启动。

    但是如果服务器配置了defaultZone(不论配置什么地址),那么客户端的defaultZone配置必须指定这个地址,而且服务的地址必须是

    eureka服务地址:服务端口/eureka
    

    否则,客户端的启动会报错:

    根据错误来看,应该是服务发现的时候报错了。

    客户端配置

    下面我们看下eureka客户端的配置,首先我们创建一个spring boot项目(这里我就直接用我之前的项目了),然后引入eureka客户端依赖:

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

    然后在application.properties文件中添加如下配置:

    eureka.client.service-url.defaultZone=http://localhost:8999/eureka/
    

    这里设置的就是我们eureka服务的defaultZone地址,这个地址就是我们的服务注册地址。

    如果你的服务版本比较老,那你可能还需要在spring boot服务入口类中添加@EnableDiscoveryClient注解:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class DailyNoteApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DailyNoteApplication.class, args);
        }
    
    }
    

    这个注解的作用是启用服务发现,但是在比较新的版本下,这个配置是默认启用的(我目前的版本是2.2.9,是不需要加这个配置的)

    测试

    服务配置完成后,我们分别启动Eureka服务和我们测试用的spring boot服务,为了便于观察,建议多创建几个服务,另外最好在服务中配置服务名称,这样在查看服务的时候,也便于区分:

    # 应用名称
    spring.application.name=spring-webflux-demo
    

    启动成功后,访问http://localhost:8999eureka服务地址),即可看到我们的服务注册情况:

    中间就是我们注册的服务,这里的服务名就是我们在properties文件中配置的名称,状态status表示服务状态,up表示状态正常。

    我们可以看到DALIY-NOTE服务我们注册了两个服务,所以在右侧显示了两个服务节点,点击右侧节点就可以看到服务健康信息:

    因为我们配置的原因,所以数据显示是空的,但是你可以访问http://laptop-u2emgb33:8081/actuator/,这时候是有数据的:

    这里的健康其实和spring-cloud没关系,是spring boot的监控组件,这一款我们后期专门分享吧。

    如果访问提示404,表示你的项目缺少actuator监控的依赖:

    添加下面的依赖,然后重新启动就好了。

    <!-- actuator监控信息完善 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    

    总结

    以前对spring cloud的认识不够,总是分不清spring bootspring cloud的区别,就算勉强能说上了一两点,心里总是不确定,因为对spring cloud确实了解的不够,这一次我的目标就是破解spring cloud认知壁垒,构建spring cloud的知识体系,健全微服务知识体系。

    今天算是一个简单的入门简介,后面我们持续分享。好了,今天就先到这里吧!

  • 相关阅读:
    [Linux系统] (3)应用安装方式详解(编译安装、rpm包安装、yum安装)
    [Linux系统] (2)用户权限管理
    jQuery.Validate验证库详解
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    原生js记住密码
    静态网站公用的部分模块的引用(设置)方法
    针对特定浏览器起作用的CSS: IE Chrome Firefox CSS Hack
    HTML5 video 视频标签全属性详解
    js for循环,为什么一定要加var定义i变量
    用谷歌浏览器来当手机模拟器
  • 原文地址:https://www.cnblogs.com/caoleiCoding/p/15087478.html
Copyright © 2011-2022 走看看