【spring cloud学习】4、创建服务提供者

注册中心Eureka Server创建并启动之后,接下来介绍如何创建一个Provider并且注册到Eureka Server中,再提供一个REST接口给其他服务调用。

首先一个Provider至少需要两个组件包依赖:Spring Boot Web服务组件和Eureka Client组件。如下所示:

<dependencies>
<!--Spring Boot Web服务组件 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
</dependency>

    <!--Eureka Client组件 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

Spring Boot Web服务组件用于提供REST接口服务,Eureka Client组件用于服务注册与发现。从以上的Maven依赖可以看出,在Spring Cloud技术体系中,一个Provider首先是一个Spring Boot应用,所以在学习Spring Cloud微服务技术之前必须具备一些基本的Spring Boot开发知识。
然后在Spring Boot应用的启动类上加上**@EnableDiscoveryClient注解**,用于启用Eureka Client组件。

接下来,在Provider模块(或者项目)的src/main/resources的bootstrap启动属性文件(bootstrap.properties或bootstrap.yml)中增加Provider实例相关的配置,具体如下:

spring:
  application:
    name: uaa-provider

server:
  port: 7702
  servlet:
      context-path: /uaa-provider
eureka:
  instance:
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    ip-address: ${spring.cloud.client.ip-address}
    prefer-ip-address: true  #访问路径优先使用IP地址
    status-page-url-path: /${server.servlet.context-path}${management.endpoints.web.base-path}/info     health-check-url-path: /${server.servlet.context-path}${management.endpoints.web.base-path}/health 
client:
    register-with-eureka: true      #注册到Eureka服务器
    fetch-registry: true           #是否去注册中心获取其他服务
    serviceUrl:
      defaultZone: http://${EUREKA_ZONE_HOST:localhost}:7777/eureka/

配置完成后就可以启动provider实例,启动后,打开Eureka Server的控制台界面,可以看到uaa-provider的一个实例已经成功注册。
image.png

前面讲到,Spring Cloud中的一个Provider实例身兼两个角色:服务提供者和注册中心客户端。所以,在Provider的配置文件中包含两类配置:Provider实例角色的相关配置和Eureka Client角色的相关配置。

1.Provider实例角色的相关配置

在微服务集群中,Eureka Server自身是一种特殊的服务提供者,对外提供REST服务,所以可以配置一些Provider实例专属的配置项。

  • (1)eureka.instance.instance-id:此项用于配置Provider实例ID,如果不进行ID配置,默认值的格式如下:“主机名:服务名称:服务端口”
${spring.cloud.client.hostname}:${spring.application.name}:${server.port} 

大多数时候需要将IP显示在instance-id中,只要把主机名替换成IP即可,假设用“IP:端口”的格式来定义,可以使用下面的配置:

eureka.instance.instance-id= ${spring.cloud.client.ip-address}:${server.port} 

从“IP:端口”的格式一看就知道provider在哪台机器上,端口是多少。我们还可以单击Eureka Server控制台的服务instance-id进行跳转,去查看实例的详细信息。跳转链接的默认路径是主机名,如果在链接路径时需要使用IP,就要将配置项eureka.instance.preferIpAddress设置为true。

  • (2)eureka.instance.ip-address:设置当前实例的IP地址。${spring.cloud.client.ip-address}是从Spring Cloud依赖包中导入的配置项,存放了客户端的IP地址。
  • (3)eureka.instance.prefer-ip-address:如果配置为true,就使用IP地址的形式来定义Provider实例的地址,而不是使用主机名来定义Provider实例的地址。
  • (4)eureka.instance.status-page-url-path:定义Provider实例状态页面的URL,此选项配置的是相对路径,默认使用HTTP访问,如果需要使用HTTPS,就使用绝对路径配置。默认的相对路径为/info。
  • (5)eureka.instance.health-check-url-path:定义Provider实例健康检查页面的URL,此选项配置的是相对路径,默认使用HTTP访问,如果需要使用HTTPS,就使用绝对路径配置。默认的相对路径为/health。

2.Eureka Client组件的相关配置

  • (1)eureka.client.register-with-eureka:作为Eureka Client,eureka.client.register-with-eureka表示是否将自己注册到Eureka Server,这里设置为true,表示需要将Provider实例注册到Eureka Server。
  • (2)eureka.client.fetch-registry:作为Eureka Client,是否从Eureka Server获取注册信息,这里设置为true,表示需要从Eureka Server定期获取注册了的Provider实例清单。
  • (3)eureka.client.service-url.defaultZone:作为Eureka Client,需要向远程的Eureka Server自我注册,查询其他的提供者。此配置项用于设置此客户端默认Zone(类似于默认机房)的Eureka Server的交互地址
eureka.client.service-url.defaultZone= http://${EUREKA_ZONE_HOST:localhost}:
7777/eureka/

为了安全和方便,地址中并没有以硬编码方式设置Eureka Server的IP地址,而是使用了事先在操作系统中配置好的指向Eureka IP地址的环境变量EUREKA_ZONE_HOST,之所以这样配置,主要是为了后续在Eureka Server的IP地址发生变化时只需要修改环境变量的值,而不需要修改配置文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33032.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跑步适合戴哪种耳机不掉、公认最好的运动耳机推荐

我们都知道&#xff0c;运动往往让人感到枯燥无味&#xff0c;于是很多人选择听音乐来赋予运动更多乐趣。对于那些热爱运动并经常锻炼的朋友们来说&#xff0c;选择一款出色的运动耳机来提升体验是非常重要的。然而&#xff0c;面对市面上众多的选择&#xff0c;该如何下手呢&a…

ubuntu安装WPS2019以及解决缺少字体问题

环境&#xff1a;ubuntu22.04.2 LTS 步骤&#xff1a; 1.去官网下载最新的WPS&#xff0c;官网地址如下&#xff1a;WPS Office 2019 for Linux-支持多版本下载_WPS官方网站 2.sudo dpkg -i 安装包.deb 3.安装完成&#xff0c;首次用WPS打开某个文档&#xff0c;会出现如下报…

Navicat连接oracle

1、官网下载oracle instant client客户端&#xff08;版本自选&#xff09; Oracle Instant Client Downloads 下载后解压 2、navicat配置 在工具-> 选项 -> OCI 或环境中&#xff0c;选择在步骤 1 解压目录的 oci.dll 3、重新启动 Navicat 4、配置oracle连接即可 参考…

C++类与对象(下)

类与对象&#xff08;下&#xff09; 1.再谈构造函数1.1构造函数体赋值1.2初始化列表1.3explicit关键字 2.static成员2.1概念2.2特性 3.有元3.1有元函数3.2有元类 4.内部类4.1概念及特性 5.匿名对象6.拷贝对象时的一些编译器优化7. 再次理解类和对象 1.再谈构造函数 1.1构造函…

oracle 重复启动监听程序故障

又是一起 oracle 无法连接问题&#xff0c;检查配置都是正常的。 原来是碰到一个oralce的bugl了。 还真就是这个问题&#xff0c;子进程一kill掉&#xff0c;就恢复了。

【Spring Clound】Nacos高可用集群搭建与使用

文章目录 一、Nacos 简介二、Nacos 安装2.1、Nacos 环境依赖2.2、Nacos 服务端安装 三、Nacos 部署3.1、单实例部署3.2、 集群部署3.2.1、集群架构3.2.2、模拟部署 四、微服务集成Nacos4.1、依赖组件版本选型4.2、注册中心4.2.1、服务提供者4.2.2、服务消费者4.2.3、服务调用4.…

目标检测模型中的Bells and wisthles

目标检测模型中的Bells and wisthles 目标检测模型中的Bells and wisthles1. Data augmentation 数据增强2. Multi-scale Training/Testing 多尺度训练/测试3. Global Context 全局语境4. Box Refinement/Voting 预测框微调/投票法5. OHEM 在线难例挖掘6. Soft NMS 软化非极大抑…

二.《UE4奥丁》解密哈希ID

哈希表概念 1.相信大家经常在UE4或者UE5游戏逆向中遇到下面的代码段 $ > > 41:8B42 0C > mov eax,dword ptr ds:[r10C] > $4 > 3B05 AE589B04 > cmp eax,dword ptr ds:[7FF7B68B74F4] …

观察级水下机器人使用系列之三黑白和彩色摄像机

本文主要讲Valor配套的黑白和彩色摄像机&#xff0c;它们都是imenco公司生产的&#xff0c;黑白照相机型号是Night Shark&#xff0c;彩色照相机型号是Blacktip SharkII&#xff0c;令人奇怪的是黑白照相机比彩色照相机大多了&#xff0c;见下图大的照相机是黑白照相机。 正在上…

Audio API 实现音频播放器

市面上实现音频播放器的库有很多&#xff0c;比如wavesurfer.js、howler.js等等&#xff0c;但是都不支持大音频文件处理&#xff0c;100多M的文件就有可能导致程序崩溃。总之和我目前的需求不太符合&#xff0c;所以打算自己实现一个音频播放器&#xff0c;这样不管什么需求 在…

NLP入门:word2vec self-attention transformer diffusion的技术演变

这一段时间大模型的相关进展如火如荼&#xff0c;吸引了很多人的目光&#xff1b;本文从nlp领域入门的角度来总结相关的技术路线演变路线。 1、introduction 自然语言处理&#xff08;Natural Language Processing&#xff09;&#xff0c;简称NLP&#xff0c;是通过统计学、…

使用Docker Swarm部署PXC+HAProxy高可用集群(三节点)

使用Docker Swarm部署PXCHAProxy高可用集群&#xff08;三节点&#xff09; 1. 部署规划 当前规划中&#xff0c;只启动一个HAProxy服务&#xff0c;主要用来做MySQL节点的负载均衡和代理&#xff0c;但是HAProxy可能会出现单点故障&#xff0c;后续需要启动多个HAProxy节点&…

【网络知识面试】初识协议栈和套接字及连接阶段的三次握手

接上一篇&#xff1a;【网络面试必问】浏览器如何委托协议栈完成消息的收发 1. 协议栈 一直对操作系统系统的内核协议栈理解的模模糊糊&#xff0c;借着这一篇博客做一下简单梳理。 我觉得最直白的理解&#xff0c;内核协议栈就是操作系统中的一个网络控制软件&#xff0c;就是…

Web测试的主要内容和测试方法有哪些?

Web测试的主要内容&#xff1a; 一、输入框 二、搜索功能 三、增加、修改功能 四、删除功能 五、注册、登录模块 六、上传图片测试 七、查询结果列表 八、返回键检查 九、回车键检查 十、刷新键检查 Web测试的测试方法&#xff1a; 1.在测试时&#xff0c;与网络有关的步骤或者…

mybatis-plus在实际开发中的应用

文章目录 前言一、实体类的注解二、Req查询条件三、Controller接口四、Service接口五、Service接口实现类六、Mapper接口七、枚举的使用总结 前言 最近的项目是使用mybatis-plus作为持久层框架&#xff0c;前面也记录过mybatis-plus的基本使用&#xff0c;此次记录一下本次项目…

蓝桥杯专题-试题版-【01字符串】【2n皇后问题】【A+B问题】【Fibonacci数列】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

Python:pyecharts可视化

文章目录 简介Geo地理图绘制地图下载 折线图区域突出显示横坐标带选择展示 add地图Mapformatter控制value显示在图中显示value值目标html的解析自定义地图js资源原生地图js的解析解决省份上文字不居中的问题 桑基图设置桑基柱的颜色 参考文献 简介 &#xff08;这是20年的笔记…

【MySQL】库的操作

目录 一、创建数据库 二、字符集和校验规则 1、查看系统默认字符集以及校验规则 2、创建数据库案例 3、校验规则对数据库的影响 3.1、不区分大小写 3.2、区分大小写 3.3、进行查询 3.3.1、不区分大小写的查询以及结果 3.3.2、区分大小写的查询以及结果 3.4、结果排序…

flutter - 编写 阿里云-金融级实名认证插件

项目中有实名认证的需求&#xff0c;用户上传身份证反正面&#xff0c;进行人脸核验&#xff0c;后台集成的是阿里云的金融级实名认证SDK&#xff0c;巧合的是阿里云没有packages 需要自己造轮子。 废话不多少&#xff0c;直接上代码&#xff1a; 新建项目 ProjectType Plugin…

wsl下面的子系统启用systemctl

下载地址 https://github.com/gdraheim/docker-systemctl-replacement 操作 mv /usr/bin/systemctl /usr/bin/systemctl.old #对原文件进行备份sudo scp /mnt/c/Users/Administrator/Desktop/systemctl.py /usr/bin/systemctl #把项目中的systemctl.py文件拷贝到/use/bin/ 目…