spring-cloud之服务治理组件Eureka

摘要:
Eureka我们今天内容的主角是Eureka,springcloud的服务注册治理组件。在中文中,它的意思是“找到”、“找到”,其作用与其名称大致相同。因此,它在我们的springcloud中的作用是服务注册和服务发现。今天,我们主要分享springcloudEureka组件的配置和简单用法。至于服务之间的通话,我们稍后会解释。

前言

前几天我们分享了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

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

spring-cloud之服务治理组件Eureka第1张

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

客户端配置

下面我们看下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服务地址),即可看到我们的服务注册情况:

spring-cloud之服务治理组件Eureka第2张

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

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

spring-cloud之服务治理组件Eureka第3张

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

spring-cloud之服务治理组件Eureka第4张

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

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

spring-cloud之服务治理组件Eureka第5张

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

<!-- 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的知识体系,健全微服务知识体系。

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

免责声明:文章转载自《spring-cloud之服务治理组件Eureka》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql优化二之锁机制vue之监听事件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何通过命令行创建和设置一个MySQL用户

我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制。如何通过命令行的方式来创建并且设置一个MySQL用户呢? 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行。每个MySQL用户帐号都有许多与之相关连的属性,例如用户名、密码以及权限和资源限制。"权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"...

安装ELK 日志收集

ELK 官网: https://www.elastic.co/cn/what-is/elk-stack ElasticSearch ElasticSearch 是一个高可用开源全文检索和分析组件。提供存储服务,搜索服务,大数据准实时分析等。一般用于提供一些提供复杂搜索的应用 基本概念: Index 定义:类似于mysql中的database。索引只是一个逻...

Navicat连接mysql8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决

Navicat连接mysql8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决 转载自:https://blog.csdn.net/XDMFC/article/details/80263215 好不容易安装好mysql,但又出现了mysq...

spring-cloud-gateway静态路由

为什么引入 API 网关 使用 API 网关后的优点如下: 易于监控。可以在网关收集监控数据并将其推送到外部系统进行分析。 易于认证。可以在网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证。 减少了客户端与各个微服务之间的交互次数。 基本环境见 spring-cloud-gateway 简介, 项目中 provider1 的...

端口转发正反向链接 NC 和 SSH下的用法

SSH 端口转发: SSH开启端口转发需要修改 /etc/ssh/sshd_config配置文件,将 GatewayPorts修改为yes -f 后台执行ssh指令 -C 允许压缩数据 -N 不执行远程指令 -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口 -L 本地端口转发 -D 动态端口转发 正向代理 ssh -fCNL *:12...

根据PID查看具体的容器

根据节点具体的PID如何定位到指定的容器,三种方法 笨方法,根据进程PID定位,如节点运行了很多的java进程,在部署设计时没有什么区别及环境变量,很难区分进程对应的容器 列出具体应用的进程,如下 <root@SIT-K8S-WN7 ~># ps -ef | grep java nflow 1272 1245 9 11:26 ?...