SpringCloud-5_模块集群化
避免一台Server挂掉,影响整个服务,搭建server集群
创建e-commerce-eureka-server-9002微服务模块【作为注册中心】
创建步骤参考e-commerce-eureka-server-9001
修改pom.xml,加入依赖
同9001
创建resources/application.yml
9002的yml
server:
# 修改端口号port: 9002
eureka:instance:
# 创建主机域名(别名)hostname: eureka9002.comclient:#不向注册中心注册自己register-with-eureka: false#表示自己就是注册中心,作用就是维护注册服务实例,不需要去检索服务fetch-registry: falseservice-url:#设置与eureka-server9001交互的模块defaultZone: http://eureka9001.com:9001/eureka/创建主启动类EurekaApplication9002.java
类似9001
修改e-commerce-eureka-sever-9001微服务模块
修改9001的yml。只保留了修改部分
# 修改成域名的形式,需要host文件的映射支持hostname: eureka9001.com:9001service-url:#设置与eureka-server9002交互的模块,defaultZone: http://eureka9002.com:9002/eureka/修改hosts.文件
1.文件:C:\Windows\System32\drivers\etc\host
2.文件可以先拷贝到桌面,修改后,再拷贝回去
3.加入内容:
#eureka主机名和ip映射
127.0.0.1 eureka9001.com
127.0.0.1 eureka9002.com完成测试
启动9001和9002
打开浏览器,分别输入eureka9001.com和eureka9002.com,查看服务列表里面是否有对方服务
将member-service-provider-10000注册到EurekaServer集群(目前2台)
9001的域名改了,重新配置
新增了9002的服务群,用逗号“,”分隔后添加
eureka:client:service-url:#表示将自己注册到哪个eureka-serverdefaultZone: http://eureka9001.com:9001/eureka,http://eureka9002.com:9002/eureka将member-service-consumer-80注册到EurekaServer集群(目前2台)
同上
搭建会员中心服务提供方-provider集群
创建member-service-provider-10002
1.参考member-service-provider-l0000来创建member-service-provider-10002即可
2.创建好后,使用nember-service-provider-10000的源码和配置替换member-service-provider-10002生成的代码(不要到磁盘整体拷贝,会出现关联到member-service-provider-10000的问题,很麻烦,可以创建好新项目的包,然后再拷贝对应包下的文件,就不会出问题)
3.提醒,拷贝时不要忘记拷贝resources/mapper/MemberMapper.xml这些Xxx.xml文件
创建resources/application.yml
修改端口为:10002,name: member-service-provider-10002
修改主启动类名
改为带有10000和10002的类名,便于区分
完成测试
启动eureka server集群(目前2台)
启动member-service-provider--10000
启动member-service-provider-10002
测试页面
注意事项和细节
因为member.-service-provider-10000和member-service-provider-10002作为一个集群提供服务,因此需要将spring.application.name进行统一,都改为:
name: member-service-provider
这样消费方通过统一的别名进行负载均衡调用
配置服务消费端consumer-80使用会员中心服务集群
修改MemberConsumerController.java
说明:
1.MEMBER-SERVICE-PROVIDER就是服务提供方【集群】,注册到Eureka Server的名称
2.也就是服务提供方provider【集群】对外暴露的名称为MEMBER-SERVICE-PROVIDER
3.MEMBER-SERVICE-PROVIDER目前有两个Availability Zones member-service-provider:10000
还有一个member-service-provider:10002
需要增加一个注@LoadBalanced赋予RestTemplate负载均衡的能力,也就是会根据你的负载均衡
来选择某个服务去访问,默认是轮询算法,当然我们也可以自己配置负载均衡算法
//private static final String MEMBER_SERVICE_PROVIDER_URL="http://localhost:10000";private static final String MEMBER_SERVICE_PROVIDER_URL="http://MEMBER-SERVICE-PROVIDER";修改CustomizationBean.java
说明:配置注入RestTemplate bean/对象
这里的@LoadBalanced就是赋予RestTemplate负载均衡的能力
默认是使用轮询算法来访问远程调用接口/地址
@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){为了看到测试效果,修改服务提供方
完成测试
启动eureka server集群(目前2台)
启动member-service-provider-10000
启动member-service-provider-10002
不急,先测试:
http://localhost:10000/member/query/1
http://localhost:10002/member/query/1
启动member-service-consumer-80
浏览器访问:http://localhost/member/consumer/query/1
这儿没有端口号是因为,localhost的缺省端口就是80
交替访问member服务说明:
1.注解@LoadBalanced底层是Ribbon支持算法
2.Ribbon和Eureka整合后consumeri直接调用服务而不用再关心地址和端口号,且该服务还有负载功能
获取Eureka Server服务注册信息-DiscoveryClient
需求分析
这里我们以服务消费方,去获取Eureka Server的服务注册信息为例
当然也可以在服务提供方获取Eureka Server的服务注册信息
代码实现
member-service-consumer-80/MemberConsumerController.java
调用getServices()获取服务列表,返回discoveryClient即可在网页显示。其余都是日志显示,用处不大。
@Resourceprivate DiscoveryClient discoveryClient;@GetMapping("/member/discovery")public Object discovery(){List<String> services = discoveryClient.getServices();for (String service : services) {log.info("服务={}",service);List<ServiceInstance> instances = discoveryClient.getInstances(service);for (ServiceInstance instance : instances) {log.info("服务号={},主机号={},端口号={},uri={}",instance.getInstanceId(),instance.getHost(),instance.getPort(),instance.getUri());}}return discoveryClient;}测试
浏览器地址栏输入:http://localhost/member/discovery
注意事项和细节说明
1.在引入DiscoveryClientl时,不要引入错误的包
正确的包,是一个接口:import org.springframework.cloud.client.discovery.DiscoveryClient;
错误的包,是一个类:import com.netflix.discovery.DiscoveryClient;
2.演示的是在服务消费方使用DiscoveryClient来完成服务发现,同样,在服务提供方模块也OK
至此,服务与发现已经完成。接下来是Ribbon负载均衡
相关文章:
SpringCloud-5_模块集群化
避免一台Server挂掉,影响整个服务,搭建server集群创建e-commerce-eureka-server-9002微服务模块【作为注册中心】创建步骤参考e-commerce-eureka-server-9001修改pom.xml,加入依赖同9001创建resources/application.yml9002的ymlserver: # 修改端口号por…...
AQS底层源码深度剖析-BlockingQueue
目录 AQS底层源码深度剖析-BlockingQueue BlockingQueue定义 队列类型 队列数据结构 ArrayBlockingQueue LinkedBlockingQueue DelayQueue BlockingQueue API 添加元素 检索(取出)元素 BlockingQueue应用队列总览图 AQS底层源码深度剖析-BlockingQueue【重点中的重…...
Kotlin协程:Flow的异常处理
示例代码如下:launch(Dispatchers.Main) {// 第一部分flow {emit(1)throw NullPointerException("e")}.catch {Log.d("liduo", "onCreate1: $it")}.collect {Log.d("liudo", "onCreate2: $it")}// 第二部分flow …...
qt下ffmpeg录制mp4经验分享,支持音视频(h264、h265,AAC,G711 aLaw, G711muLaw)
前言 MP4,是最常见的国际通用格式,在常见的播放软件中都可以使用和播放,磁盘空间占地小,画质一般清晰,它本身是支持h264、AAC的编码格式,对于其他编码的话,需要进行额外处理。本文提供了ffmpeg录…...
C#读取Excel解析入门-1仅围绕三个主要的为阵地,进行重点解析,就是最理性的应对上法所在
业务中也是同样的功能点实现。只是多扩展了很多代码,构成了项目的其他部分,枝干所在。但是有用的枝干,仅仅不超过三个主要的!所以您仅仅围绕三个主要的为阵地,进行重点解析,就是最理性的应对上法所在了 str…...
一起Talk Android吧(第五百一十八回:在Android中使用MQTT通信五)
文章目录 知识回顾问题描述解决过程经验分享各位看官们大家好,这一回中咱们说的例子是" 在Android中使用MQTT通信五",本章回内容与前后章节内容无关联。闲话休提,言归正转,让我们一起Talk Android吧! 知识回顾 我们在前面章回中介绍了如何使用MQTT通信,包含它…...
100种思维模型之混沌与秩序思维模型-027
人类崇尚秩序与连续性,我们习惯于我们的日常世界,它以线性方式运作,没有不连续或突跳。 为此,我们学会了期望各种过程以连续方式运行,我们的内心为了让我们更有安全感,把很多事物的结果归于秩序,…...
Java开发 - Redis初体验
前言 es我们已经在前文中有所了解,和es有相似功能的是Redis,他们都不是纯粹的数据库。两者使用场景也是存在一定的差异的,本文目的并不重点说明他们之间的差异,但会简要说明,重点还是在对Redis的了解和学习上。学完本…...
Python - 使用 pymysql 操作 MySQL 详解
目录创建连接 pymsql.connect() 方法的可传参数连接对象 conn pymsql.connect() 方法游标对象 cursor() 方法使用示例创建数据库表插入数据操作数据查询操作数据更新操作数据删除操作SQL中使用变量封装使用简单使用: import pymysqldb pymysql.connect(host,user…...
机器学习-卷积神经网络CNN中的单通道和多通道图片差异
背景 最近在使用CNN的场景中,既有单通道的图片输入需求,也有多通道的图片输入需求,因此又整理回顾了一下单通道或者多通道卷积的差别,这里记录一下探索过程。 结论 直接给出结论,单通道图片和多通道图片在经历了第一…...
考研复试——计算机组成原理
文章目录计算机组成原理1. 计算机系统由哪两部分组成?计算机系统性能取决于什么?2. 冯诺依曼机的主要特点?3. 主存储器由什么组成,各部分有什么作用?4. 什么是存储单元、存储字、存储字长、存储体?5. 计算机…...
硬件设计 之摄像头分类(IR摄像头、mono摄像头、RGB摄像头、RGB-D摄像头、鱼眼摄像头)
总结一下在机器人上常用的几种摄像头,最近在组装机器人时,傻傻分不清摄像头的种类。由于本人知识有限,以下资料都是在网上搜索而来,按照摄像头的分类整理一下,供大家参考: 1.IR摄像头: IRinfr…...
PTA:C课程设计(2)
山东大学(威海)2022级大一下C习题集(2)2-5-1 字符定位函数(程序填空题)2-5-2 判断回文(程序填空题)2-6-1 数字金字塔(函数)2-6-2 使用函数求最大公约数(函数)2-6-3 使用函数求余弦函…...
第四章:面向对象编程
第四章:面向对象编程 4.1:面向过程与面向对象 面向过程(POP)与面向对象(OOP) 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象&…...
Linux 安装npm yarn pnpm 命令
下载安装包 node 下载地址解压压缩包 tar -Jxf node-v19.7.0-linux-x64.tar.xz -C /root/app echo "export PATH$PATH:/app/node-v16.9.0-linux-x64" >> /etc/profile source /etc/profile ln -sf /app/node-v16.9.0-linux-x64/bin/npm /usr/local/bin/ ln -…...
linux SPI驱动代码追踪
一、Linux SPI 框架概述 linux系统下的spi驱动程序从逻辑上可以分为3个部分: SPI Core:SPI Core 是 Linux 内核用来维护和管理 spi 的核心部分,SPI Core 提供操作接口,允许一个 spi master,spi driver 和 spi device 在 SPI Cor…...
Ls-dyna材料的相关学习笔记
Elastic Linear elastic materials -Isotropic:各向同性材料 -orthotropic 正交各向异性的 -anistropic 各向异性的...
Arrays方法(copyOfRange,fill)
Arrays方法 1、Arrays.copyOfRange Arrays.copyOfRange的使用方法 功能: 将数组拷贝至另外一个数组 参数: original:第一个参数为要拷贝的数组对象 from:第二个参数为拷贝的开始位置(包含) to:…...
AcWing - 蓝桥杯集训每日一题(DAY 1——DAY 5)
文章目录一、AcWing 3956. 截断数组(中等)1. 实现思路2. 实现代码二、AcWing 3729. 改变数组元素(中等)1. 实现思路2. 实现代码三、AcWing 1460. 我在哪?(简单)1. 实现思路2. 实现代码四、AcWin…...
RHCSA-文件的其他命令(3.7)
目录 文件的其他命令: 文本内容统计wc 移动和复制(cp) 移动 查找文件的路径 压缩和解压缩 .tar(归档命令) shell-命令解释器 linux中的特殊字符 查看系统上的别名:alias 历史命令(his…...
氛围编程实战:用AI工具栈快速构建可部署应用
1. 项目概述:什么是“氛围编程”?如果你对“氛围编程”这个词感到陌生,或者觉得它听起来有点玄乎,那太正常了。我第一次听到时,也以为又是哪个硅谷弄潮儿发明的新潮黑话。但当我真正开始实践,并在几个月内从…...
观察不同时段通过Taotoken调用大模型的延迟稳定性表现
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察不同时段通过Taotoken调用大模型的延迟稳定性表现 在项目开发与线上服务中,API调用的响应延迟是影响开发者体验和系…...
2026毕业季必看!告别求职死循环,这两个高薪赛道让你稳上岸!
家人们谁都没想到,2026年毕业季求职难度直接拉满,堪称历年最难就业季!全国1270万高校毕业生扎堆涌入求职市场,岗位僧多粥少、竞争内卷到极致,无数应届生陷入一模一样的求职困境:精心打磨的简历海投出去&…...
can消息的大小端对源码的影响
下图为小端intel型信号,其dbc文件部分源码为:BO_ 1 id_0x1: 8 Vector__XXXSG_ aaa : 0|121 (1,0) [0|0] "" Vector__XXX,这里的0代表的是起始位置为0(起始0->7,8->12为高位)如果将该信号改为大端motorola型&#…...
植物大战僵尸杂交版下载2026最新版更新v3.16及版本介绍分享(附下载链接)
作为一名长期沉迷植物大战僵尸改版的玩家,我近期完整体验了杂交版全新V3.16版本,从植物、关卡到平台适配,逐一实测验证。整体而言,这是一次诚意满满的更新,既有新鲜玩法的创新,又兼顾了不同玩家的需求&…...
VR大空间项目屡获行业大奖,AI数字人公司赋能文旅智慧升级
在经历了早期的概念普及和单点试验后,AI数字人、VR、MR等技术正在文旅行业完成从“尝鲜”到“刚需”的蜕变。不再仅仅是博物馆或景区里的一块互动屏幕,而是一套能够重塑服务流程、活化文化IP、创造全新消费场景的完整解决方案。从边疆秘境到城市地标&…...
云数据中心能效优化:集成资源管理与学习中心管理的实战指南
1. 项目概述:当云计算撞上“能耗墙”,我们如何破局?干了十几年IT,从自建机房到全面上云,我亲眼见证了云计算如何重塑整个行业。它确实像电力网络和公路一样,成了现代社会不可或缺的基础设施。但这些年&…...
AI与建模仿真融合:数字孪生从静态镜像到智能决策的演进
1. 项目概述:当AI遇见建模仿真,数字孪生正在经历什么?最近几年,无论是工业制造、智慧城市还是医疗健康,但凡提到数字化转型,总绕不开“数字孪生”这个词。它就像一个在虚拟世界里为物理实体打造的“克隆体”…...
终极指南:如何使用Cherry MX键帽3D模型库打造你的专属机械键盘
终极指南:如何使用Cherry MX键帽3D模型库打造你的专属机械键盘 【免费下载链接】cherry-mx-keycaps 3D models of Chery MX keycaps 项目地址: https://gitcode.com/gh_mirrors/ch/cherry-mx-keycaps 想要打造一把真正属于自己的机械键盘吗?厌倦了…...
ThunderAI:开箱即用的桌面AI助手,聚合Ollama与多模型应用实战
1. 项目概述:一个开箱即用的AI助手桌面应用最近在折腾本地AI应用的时候,发现了一个挺有意思的项目,叫ThunderAI。这名字听着就挺带劲,像一道闪电,主打的就是一个“快”和“直接”。简单来说,它就是一个基于…...
