SpringCloud学习笔记(三)_服务提供者集群与服务发现Discovery
服务提供者集群
既然SpringCloud的是微服务结构,那么对于同一种服务,当然不可能只有一个节点,需要部署多个节点
架构图如下:

由上可以看出存在多个同一种服务提供者(Service Provider)
搭建服务提供者集群
1、参考:SpringCloud 快速入门搭建单机版的:Eureka Server、Service Provider、Service Consumer
2、根据支付模块服务提供者(test-springcloud-provider-payment8001),在父工程中,同样新建一个支付模块的服务提供者(test-springcloud-provider-payment8002)
服务8001与8002的配置中,除端口外,其他都相同,且spring.application.name应用名称必须相同,表明2个服务是同一种服务
服务8002配置文件如下:


1 # 端口2 server:3 port: 80024 5 spring:6 application:7 name: cloud-payment-service8 # 数据源基本配置9 datasource:
10 driver-class-name: com.mysql.cj.jdbc.Driver
11 url: jdbc:mysql://localhost:3306/test_springcloud?allowPublicKeyRetrieval=true&useSSL=true
12 username: admin
13 password: 123456
14
15 eureka:
16 client:
17 # 表示将自己注册进Eureka Server默认为true
18 register-with-eureka: true
19 # 是否从Eureka Server抓去已有的注册信息,默认是true
20 fetch-registry: true
21 # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
22 service-url:
23 defaultZone: http://localhost:8761/eureka
24
25 mybatis:
26 mapperLocations: classpath:mapper/*Mapper.xml
27 # 所有entity别名类所在的包
28 type-aliases-pachage: com.test.springcloud.entities
View Code
3、重新启动项目,打开Eureka查看,发现有2个支付服务

4、使用订单模块消费者调用支付服务
消费者部分代码模块如下:
1 @Configuration2 public class AppConfig {3 4 /**5 * 注入restTemplate,请用请求rest接口6 * @return7 */8 @Bean9 // 标注此注解后,RestTemplate就具有了客户端负载均衡能力
10 // 负载均衡技术依赖于的是Ribbon组件~
11 // RestTemplate都塞入一个loadBalancerInterceptor 让其具备有负载均衡的能力
12 @LoadBalanced
13 public RestTemplate restTemplate(){
14 return new RestTemplate();
15 }
16 }
17
18
19 @RestController
20 @Slf4j
21 public class OrderController {
22
23 public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
24
25 @Autowired
26 private RestTemplate restTemplate;
27
28 @GetMapping("/consumer/payment/get/{id}")
29 public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
30 return restTemplate.getForObject(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);
31 }
32
33 ...
34 }
由上可以,通过配置向容器中注入了RestTemplate对象,而RestTemplate又被标注此@LoadBalanced注解后,RestTemplate就具有了客户端负载均衡能力,也就是说RestTemplate会轮流调用服务的各个节点,到达均衡的目的
5、测试调用,启动项目,使用地址:http://localhost:8000/consumer/payment/get/1,进行访问,可以看到已到达负载均衡的目的

服务发现Discovery
服务发现就是对于注册进eureka里面的微服务,可以通过服务发现获得该服务的信息
案例如下:
1、在微服务中使用@EnableDiscoveryClient注解,启用服务发现
1 // Eureka客户端2 @EnableEurekaClient3 // 启用服务发现4 @EnableDiscoveryClient5 @SpringBootApplication6 public class PaymentMain8001 {7 public static void main(String[] args) {8 SpringApplication.run(PaymentMain8001.class, args);9 }
10 }
2、编辑Controller,启用服务发现之后,它会自动向容器注入DiscoveryClient(服务发现客户端)
通过调用DiscoveryClient的getServices方法,从注册中心获取服务列表
通过调用DiscoveryClient的getInstances方法,从注册中心获取服务实例集
1 public class PaymentController {2 3 @Autowired4 private DiscoveryClient discoveryClient;5 6 @GetMapping(value = "/payment/discovery")7 public Object discovery(){8 // 获取服务列表9 List<String> services = discoveryClient.getServices();
10 for (String element : services) {
11 log.info("=====element:" + element);
12 }
13
14 // 获取服务实例集
15 List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
16 for (ServiceInstance instance : instances) {
17 log.info("服务发现" + "\n"
18 + "getServiceId === " + instance.getServiceId() + "\n"
19 + "getHost === " + instance.getHost() + "\n"
20 + "getPort === " + instance.getPort() + "\n"
21 + "getUri === " + instance.getUri() );
22 }
23
24 return this.discoveryClient;
25 }
26
27 }
3、启用服务,使用地址:http://localhost:8001/payment/discovery,进行访问
页面结果:

后台日志:

由上可知,通过DiscoveryClient能获取到注册进eureka里面的微服务信息。
相关文章:
SpringCloud学习笔记(三)_服务提供者集群与服务发现Discovery
服务提供者集群 既然SpringCloud的是微服务结构,那么对于同一种服务,当然不可能只有一个节点,需要部署多个节点 架构图如下: 由上可以看出存在多个同一种服务提供者(Service Provider) 搭建服务提供者集…...
.NET 8 Preview 7 中的 ASP.NET Core 更新
作者:Daniel Roth 排版:Alan Wang .NET 8 Preview 7 现在已经发布,其中包括了对 ASP.NET Core 的许多重要更新。 以下是预览版本中新增功能的摘要: 服务器和中间件 防伪中间件 API 编写 最小 API 的防伪集成 Native AOT 请求委托…...
Ajax+Vue+ElementUI
文章目录 1.Ajax1.1 介绍1.2 Ajax快速入门1.3 案例-用户注册时,检测用户名是否数据库已经存在1.4 Axios1.4.1 Axios快速入门1.4.2 请求别名 1.5 JSON1.5.1 Json的基础语法1.5.2 FastJson的使用5.3.2 Fastjson 使用 2. Vue2.1 介绍2.2 Vue快速入门2.3 Vue常用指令和生…...
python读取pdf、doc、docx、ppt、pptx文件内容
使用python读取文件,其中pdf、docx、pptx可以直接读,.ppt和.doc文件不能直接读,需要转换成.pptx和.docx文件,并且需要区分系统 如果是linux系统,请先安装组件 #doc2docx yum install -y libreoffice-headless yum ins…...
鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统 em
工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典ÿ…...
maven无法从阿里云中央仓库下载jar包的解决方法
这个方法不一定适用于所有人。 问题描述:启动公司的SpringBoot项目时,maven爆红提示从阿里云中央仓库找不到目标jar包,但我本地maven仓库是有这个jar包的(版本也对的上),我就好奇maven为什么不从本地获取ja…...
Nevron Open Vision for .NET Crack
Nevron Open Vision for .NET Crack NET Vision是一个用于生成具有数据可视化功能的强大数据表示应用程序的包。该套件具有用于.NET的Nevron Chart、用于.NET的Nevron Diagram和用于.NET的Nevron User Interface。精心设计的对象模型、许多功能和卓越的演示使复杂数据的可视化变…...
玩转单元测试之cppmockfree
引言 前文我们已经讲解了gmock的基本语法,但是gmock只能mock虚函数,如果要mock非虚成员函数、静态成员函数、全局函数、重载函数、模板函数以及其他依赖库的函数时,gmock就很难实现。而cppmockfree可以支持这些函数的mock。 快速入门 1. m…...
Open3D点云数据处理(二十一):最小二乘多项式拟合
文章目录 1 最小二乘多项式拟合原理2 多项式拟合的评估指标3 使用np.polyfit()函数实现3.1 np.polyfit() 函数详解3.2 代码实现3.3 使用numpy.poly1d()函数将多项式系数转换为拟合方程4 注意事项专栏目录:Open3D点云数据处理(Python) 1 最小二乘多项式拟合原理 最小二乘法是…...
智能手表:华米稳、华为猛
随着科技的进步与发展,消费电子产品的功能和品类越来越丰富,人们也愈发习惯使用消费电子产品了。消费电子产品一词听起来陌生,实际上却离人们很近,比如智能手机、笔记本电脑等等,都属于消费电子产品。现如今࿰…...
【日常积累】Linux中vi/vim的使用
概述 vim是由vi发展演变过来的文本编辑器,因其具有语法高亮显示、多视窗编辑、代码折叠、支持插件等功能,由于其功能相比vi来说更加强大,所以在实际工作中的使用更加广泛。 vim工作模式 Vim具有多种工作模式,常用的工作模式有&…...
基于React实现日历组件详细教程
前言 日历组件是常见的日期时间相关的组件,围绕日历组件设计师做出过各种尝试,展示的形式也是五花八门。但是对于前端开发者来讲,主要我们能够掌握核心思路,不管多么奇葩的设计我们都能够把它做出来。 本文将详细分析如何渲染一…...
Web安全测试(二):HTTP状态码、响应和url详解
一、前言 结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部…...
什么是算法评价指标
在我们建立一个学习算法时,或者说训练一个模型时,我们总是希望最大化某一个给定的评价指标(比如说准确度Acc),但算法在学习过程中又会尝试优化某一个损失函数(比如说均方差MSE或者交叉熵Cross-entropy&…...
什么是软件压力测试?软件压力测试工具和流程有哪些?
软件压力测试 一、含义:软件压力测试是一种测试应用程序性能的方法,通过模拟大量用户并发访问,测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题,如内存泄漏、线程锁、资源泄漏等,…...
Wireshark流量分析例题
目录 前言 一、题目一(1.pcap) 二、题目二(2.pcap) 三、题目三(3.pcap) 四、题目四(4.pcap) 前言 Wireshark流量包分析对于安全来说是很重要的,我们可以通过Wireshark来诊断网络问题,检测网络攻击、监控网络流量以及捕获恶意软件等等 接下来我们…...
聚观早报|2023戴尔科技峰会助力创新;小米汽车电池供应商敲定
【聚观365】8月23日消息 2023戴尔科技峰会助力企业创新 小米汽车电池供应商敲定中创新航和宁德时代 iPhone15预计有6种配色 王小川卸任自动驾驶企业禾多科技董事 特斯拉动力总成副总裁宣布离职 2023戴尔科技峰会助力企业创新 近日“新生万物 数实新格局 —— 2023戴尔科技…...
大学生创业出路【第二弹】科创训练营
目录 🚀一、我从哪里了解到的训练营 🚀二、训练营里学习和日常 🔎学习 🔎环境和设备 🔎遇到的人 🔎团队记录视频 🚀三、感悟 个人主页:一天三顿-不喝奶茶Ἱ…...
EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks [2022 CVPR]
长期以来,仅使用单视角二维照片集无监督生成高质量多视角一致图像和三维形状一直是一项挑战。现有的三维 GAN 要么计算密集,要么做出的近似值与三维不一致;前者限制了生成图像的质量和分辨率,后者则对多视角一致性和形状质量产生不…...
进行Stable Diffusion的ai训练怎么选择显卡?
Stable Diffusion主要用于从文本生成图像,是人工智能技术在内容创作行业中不断发展的应用。要在本地计算机上运行Stable Diffusion,您需要一个强大的 GPU 来满足其繁重的要求。强大的 GPU 可以让您更快地生成图像,而具有大量 VRAM 的更强大的…...
ECA:编辑器无关的AI编程伴侣,统一配置多模型与编辑器
1. 项目概述:一个编辑器无关的AI编程伴侣如果你和我一样,每天大部分时间都泡在编辑器里,那你肯定也经历过这种场景:面对一段复杂的业务逻辑,或者一个陌生的API,你希望有个“懂行”的伙伴能立刻给你解释、重…...
硬件相关项目内容介绍(硬件咱们也有相关技术支持内容哦)
硬件相关项目内容介绍(硬件咱们也有相关技术支持内容哦) 硬件咱们也有相关技术支持内容哦。 主要看大家喜欢什么,硬件内容咱们会不定期更新分享,大家要是喜欢,后续就安排上实物实操。也虚心听取大家建议,不…...
Sunshine游戏串流服务器:打造你的个人云端游戏平台
Sunshine游戏串流服务器:打造你的个人云端游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏?Sunshine游戏串流服务器是你…...
CMS三十年:从“手工建站”到“智能基座”
一个从业者的观察与思考不知不觉,跟CMS打交道已经十几年了。从早期的织梦、帝国,到后来的WordPress,再到现在的各类无头CMS和低代码平台,这个领域的变化比想象中要快得多。写这篇文章,算是对CMS发展历程的一次梳理&…...
策略梯度定理实战解析:从蒙特卡洛回报到PyTorch梯度实现
1. 这不是数学课,是写给实战者的政策梯度定理手记你打开这篇文字的时候,大概率正卡在某个强化学习项目里:模型跑不通、梯度爆炸、训练曲线像心电图一样乱跳,或者更糟——明明代码和论文一模一样,但 reward 就是上不去。…...
终极指南:如何使用Etcher安全快速烧录系统镜像到SD卡和USB驱动器
终极指南:如何使用Etcher安全快速烧录系统镜像到SD卡和USB驱动器 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Etcher(BalenaEtcher&am…...
手把手教你配置Synopsys DesignWare PCIe控制器:从寄存器读写到ATU映射实战
Synopsys DesignWare PCIe控制器深度配置指南:从寄存器操作到DMA通信实战 1. PCIe控制器基础架构解析 Synopsys DesignWare PCIe控制器作为业界广泛采用的IP核,其架构设计充分考虑了灵活性和可扩展性。控制器核心由以下几个关键模块组成: Tra…...
告别训练中断:在PyCharm中利用Tmux实现远程GPU服务器的持久化会话
1. 为什么需要持久化训练会话? 作为一名长期在深度学习领域摸爬滚打的工程师,我最头疼的就是训练过程中突然断网或者需要关闭电脑的情况。想象一下,你正在用PyCharm远程连接公司的GPU服务器训练一个需要48小时的模型,突然家里停电…...
从零到一:基于C#与ArcGIS二次开发构建迎风面指数计算插件实战
1. 环境准备与工具搭建 第一次接触ArcGIS二次开发时,我被官方文档里密密麻麻的API吓得不轻。后来发现只要配好环境,开发插件比想象中简单得多。你需要准备三样东西:Visual Studio(建议2019或2022社区版)、ArcGIS Desk…...
Windows 10/11下MySQL 8.0.28安装失败?‘服务没有响应控制功能’报错保姆级修复指南
Windows平台MySQL安装报错终极解决方案:从"服务无响应"到完美运行 遇到MySQL安装过程中弹出"服务没有响应控制功能"的红色报错窗口时,很多开发者第一反应是重装系统或更换数据库——别急!这个看似复杂的错误其实90%以上源…...
