当前位置: 首页 > news >正文

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

测试页面

注意事项和细节

  1. 因为member.-service-provider-10000和member-service-provider-10002作为一个集群提供服务,因此需要将spring.application.name进行统一,都改为:

name: member-service-provider

  1. 这样消费方通过统一的别名进行负载均衡调用


配置服务消费端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挂掉&#xff0c;影响整个服务&#xff0c;搭建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的异常处理

示例代码如下&#xff1a;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&#xff0c;是最常见的国际通用格式&#xff0c;在常见的播放软件中都可以使用和播放&#xff0c;磁盘空间占地小&#xff0c;画质一般清晰&#xff0c;它本身是支持h264、AAC的编码格式&#xff0c;对于其他编码的话&#xff0c;需要进行额外处理。本文提供了ffmpeg录…...

C#读取Excel解析入门-1仅围绕三个主要的为阵地,进行重点解析,就是最理性的应对上法所在

业务中也是同样的功能点实现。只是多扩展了很多代码&#xff0c;构成了项目的其他部分&#xff0c;枝干所在。但是有用的枝干&#xff0c;仅仅不超过三个主要的&#xff01;所以您仅仅围绕三个主要的为阵地&#xff0c;进行重点解析&#xff0c;就是最理性的应对上法所在了 str…...

一起Talk Android吧(第五百一十八回:在Android中使用MQTT通信五)

文章目录 知识回顾问题描述解决过程经验分享各位看官们大家好,这一回中咱们说的例子是" 在Android中使用MQTT通信五",本章回内容与前后章节内容无关联。闲话休提,言归正转,让我们一起Talk Android吧! 知识回顾 我们在前面章回中介绍了如何使用MQTT通信,包含它…...

100种思维模型之混沌与秩序思维模型-027

人类崇尚秩序与连续性&#xff0c;我们习惯于我们的日常世界&#xff0c;它以线性方式运作&#xff0c;没有不连续或突跳。 为此&#xff0c;我们学会了期望各种过程以连续方式运行&#xff0c;我们的内心为了让我们更有安全感&#xff0c;把很多事物的结果归于秩序&#xff0c…...

Java开发 - Redis初体验

前言 es我们已经在前文中有所了解&#xff0c;和es有相似功能的是Redis&#xff0c;他们都不是纯粹的数据库。两者使用场景也是存在一定的差异的&#xff0c;本文目的并不重点说明他们之间的差异&#xff0c;但会简要说明&#xff0c;重点还是在对Redis的了解和学习上。学完本…...

Python - 使用 pymysql 操作 MySQL 详解

目录创建连接 pymsql.connect() 方法的可传参数连接对象 conn pymsql.connect() 方法游标对象 cursor() 方法使用示例创建数据库表插入数据操作数据查询操作数据更新操作数据删除操作SQL中使用变量封装使用简单使用&#xff1a; import pymysqldb pymysql.connect(host,user…...

机器学习-卷积神经网络CNN中的单通道和多通道图片差异

背景 最近在使用CNN的场景中&#xff0c;既有单通道的图片输入需求&#xff0c;也有多通道的图片输入需求&#xff0c;因此又整理回顾了一下单通道或者多通道卷积的差别&#xff0c;这里记录一下探索过程。 结论 直接给出结论&#xff0c;单通道图片和多通道图片在经历了第一…...

考研复试——计算机组成原理

文章目录计算机组成原理1. 计算机系统由哪两部分组成&#xff1f;计算机系统性能取决于什么&#xff1f;2. 冯诺依曼机的主要特点&#xff1f;3. 主存储器由什么组成&#xff0c;各部分有什么作用&#xff1f;4. 什么是存储单元、存储字、存储字长、存储体&#xff1f;5. 计算机…...

硬件设计 之摄像头分类(IR摄像头、mono摄像头、RGB摄像头、RGB-D摄像头、鱼眼摄像头)

总结一下在机器人上常用的几种摄像头&#xff0c;最近在组装机器人时&#xff0c;傻傻分不清摄像头的种类。由于本人知识有限&#xff0c;以下资料都是在网上搜索而来&#xff0c;按照摄像头的分类整理一下&#xff0c;供大家参考&#xff1a; 1.IR摄像头&#xff1a; IRinfr…...

PTA:C课程设计(2)

山东大学&#xff08;威海&#xff09;2022级大一下C习题集&#xff08;2&#xff09;2-5-1 字符定位函数&#xff08;程序填空题&#xff09;2-5-2 判断回文&#xff08;程序填空题&#xff09;2-6-1 数字金字塔(函数)2-6-2 使用函数求最大公约数(函数)2-6-3 使用函数求余弦函…...

第四章:面向对象编程

第四章&#xff1a;面向对象编程 4.1&#xff1a;面向过程与面向对象 面向过程(POP)与面向对象(OOP) 二者都是一种思想&#xff0c;面向对象是相对于面向过程而言的。面向过程&#xff0c;强调的是功能行为&#xff0c;以函数为最小单位&#xff0c;考虑怎么做。面向对象&…...

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&#xff1a;SPI Core 是 Linux 内核用来维护和管理 spi 的核心部分&#xff0c;SPI Core 提供操作接口&#xff0c;允许一个 spi master&#xff0c;spi driver 和 spi device 在 SPI Cor…...

Ls-dyna材料的相关学习笔记

Elastic Linear elastic materials -Isotropic:各向同性材料 -orthotropic 正交各向异性的 -anistropic 各向异性的...

Arrays方法(copyOfRange,fill)

Arrays方法 1、Arrays.copyOfRange Arrays.copyOfRange的使用方法 功能&#xff1a; 将数组拷贝至另外一个数组 参数&#xff1a; original&#xff1a;第一个参数为要拷贝的数组对象 from&#xff1a;第二个参数为拷贝的开始位置&#xff08;包含&#xff09; to&#xff1a;…...

AcWing - 蓝桥杯集训每日一题(DAY 1——DAY 5)

文章目录一、AcWing 3956. 截断数组&#xff08;中等&#xff09;1. 实现思路2. 实现代码二、AcWing 3729. 改变数组元素&#xff08;中等&#xff09;1. 实现思路2. 实现代码三、AcWing 1460. 我在哪&#xff1f;&#xff08;简单&#xff09;1. 实现思路2. 实现代码四、AcWin…...

RHCSA-文件的其他命令(3.7)

目录 文件的其他命令&#xff1a; 文本内容统计wc 移动和复制&#xff08;cp&#xff09; 移动 查找文件的路径 压缩和解压缩 .tar&#xff08;归档命令&#xff09; shell-命令解释器 linux中的特殊字符 查看系统上的别名&#xff1a;alias 历史命令&#xff08;his…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...