SpringCloud系列(12)--服务提供者(Service Provider)集群搭建

前言:在上一章节中我们成功把微服务注册进了Eureka集群,但这还不够,虽然注册服务中心Eureka已经是服务配置了,但服务提供者目前只有一个,如果服务提供者宕机了或者流量过大,都会影响到用户即服务使用者的使用,为了提高服务提供者的可用性,需要把服务提供者做成集群,所以本章节将介绍如何把服务提供者做成集群,使服务提供者达到高可用的目的

Eureka架构原理图

1、再次创建一个服务提供者模块,命名为provider-payment8002
(1)在父工程下新建模块

(2)选择模块的项目类型为Maven并选择模块要使用的JDK版本
(3)填写子模块的名称,然后点完成即可完成创建 

效果图:

(4)修改provider-payment8002子模块的pom.xml文件,然后reolad一下,下载依赖

例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>provider-payment8002</artifactId><dependencies><!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Mybatis和SpringBoot的整合--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><!--mysql-connector-java--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入自己定义的api调用包,可以使用Payment模块的entity--><dependency><groupId>com.ken.springcloud</groupId><artifactId>api-commons</artifactId><version>${project.version}</version></dependency><!--Eureka Clinet--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies></project>

2、复制provider-payment8001模块resources文件夹下的文件到provider-payment8002模块下

 

效果图:

 3、修改application.yml文件配置
#服务端口号
server:port: 8002#服务名称
spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSource      #当前数据源操作类型driver-class-name: com.mysql.cj.jdbc.Driver       #mysql驱动包(mysql驱动包版本是5的要写成com.mysql.jdbc.Driver)url: jdbc:mysql://localhost:3306/cloud?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8 #mysql连接路径,记得把cloud这个数据库名改成自己的,或者新建名为cloud的数据库username: rootpassword: 123456eureka:client:#表示是否将自己注册进Eureka Server里,默认为trueregister-with-eureka: true#是否从Eureka Server抓取已有的注册信息,默认为true,单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡fetch-registry: trueservice-url:#defaultZone: http://localhost:7001/eurekadefaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka#mybatis配置
mybatis:mapper-locations: classpath:mapper/*.xml            #扫描类路径下的mapper文件夹下所有的.xml配置文件type-aliases-package: com.ken.springcloud.entities  #该包下的所有Entity类都取默认别名

效果图:

4、复制provider-payment8001模块java文件夹下的文件到provider-payment8002模块下(在Idea里面复制包然后粘贴会有问题,只能在文件管理器里复制粘贴)

效果图:

5、分别修改provider-payment8001模块和provider-payment8002模块的PaymentController类,使服务被调用时输出被调用的服务的端口,从而得知被调用的是provider-payment8001服务还是provider-payment8002服务
package com.ken.springcloud.controller;import com.ken.springcloud.entities.CommonResult;
import com.ken.springcloud.entities.Payment;
import com.ken.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;@RestController
@Slf4j
public class PaymentController {@Resourceprivate PaymentService paymentService;@Value("${server.port}")private String serverPort;@PostMapping("/payment/insert")public CommonResult insert(@RequestBody Payment payment) {int result = paymentService.insert(payment);log.info("插入结果{}",result);if(result > 0) {return new CommonResult(200,"插入数据库成功,提供服务的端口号为" + serverPort,result);}else {return new CommonResult(500,"插入数据库失败",result);}}@GetMapping("/payment/get/{id}")public CommonResult insert(@PathVariable("id") Long id) {Payment payment = paymentService.getPaymentById(id);log.info("查询结果{}",payment);if(payment != null) {return new CommonResult(200,"查询成功,提供服务的端口号为" + serverPort,payment);}else {return new CommonResult(500,"没有对应的数据,查询失败,查询id" + id,payment);}}}

效果图:

6、查看服务提供者集群是否搭建成功

分别启动eureka-server7001、eureka-server7002、provider-payment8001、provider-payment8002, 然后分别进入http://localhost:7001/和http://localhost:7002/或者分别进入http://eureka7001.com:7001/和http://eureka7002.com:7002/查看服务提供者集群是否搭建成功,进入页面后如果发现有两个对外提供,则证明eureka集群搭建成功

 

7、看服务提供者集群是否能正常工作

启动consumer-order80模块,然后在浏览器地址栏输入http://localhost/consumer/get/1,通过调用consumer-order80模块接口的方式查看服务提供者集群是否正常运行,查看调用后返回的结果得知服务提供者集群正常运作并返回结果

注意:这里访问服务提供者集群的方式是通过轮询的方式来实现的(可以多请求几次看看,可以很清晰的发现请求方式是轮询)

效果图:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle数据库的简单使用

Oracle简单使用 一、数据库的介绍二、Oracle介绍账号管理Oracle的安装Oracle服务的作用OracleRemExecService服务创建数据库 常用命令 三、SQL语言SQL分类实用的数据表添加注释数据操纵语言&#xff08;DML&#xff09;查询语句&#xff08;SELECT&#xff09;wherelikedistinc…

pycharm集成github项目,拉取项目并进行代码管理

首先你要有一个github项目&#xff0c;然后找到一个想要拉取github项目的本地路径&#xff0c;打开git命令行&#xff0c;执行git clone http…路径&#xff0c;可能会需要你输入git的用户名和密码&#xff1b;用pycharm打开该项目&#xff1b;添加python解释器&#xff0c;我用…

YOLOv8改进项目汇总-超全改进-ultralyticsPro介绍:订阅了《芒果YOLOv8原创改进专栏》的读者免费赠送,包括很多稀有改进

&#x1f525;&#x1f525;&#x1f525;专注于YOLOv8改进&#xff0c;NEW - YOLOv8 &#x1f680; in PyTorch >, Support to improve Backbone, Neck, Head, Loss, IoU, LA, NMS and other modules&#x1f680; Makes YOLOv8 improvements easy again 芒果出品 YOLOv8…

上汽大通:依托电子签网络,升级产业供应链协同

2023年12月&#xff0c;法大大发布了中国首部《汽车行业合同数智化白皮书》&#xff08;点击阅读及下载&#xff1a;中国首部&#xff01;《汽车行业合同数智化白皮书》重磅发布 | 附下载&#xff09;。该白皮书中基于法大大自身参与汽车行业合同数智化建设的实践和思考&#x…

防反接、防过压、缓启动电路相关

一、防反接电路 电源正确接入时 电流从 VIN 端流向负载&#xff0c;经由 Q3(NMOS) 通向地&#xff08;GND&#xff09;。在上电瞬间&#xff0c;由于 MOS 管的体二极管效应&#xff0c;地回路通过体二极管接通。接下来&#xff0c;由于 Vgs(门源电压)大于 Vgsth(门限电压)&…

【python】python新闻文本数据统计和聚类 (源码+文本)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Bentley二次开发教程02-开发环境搭建

1 Bentley 平台介绍 图 1 Bentley 平台介绍 Bentley 软件大致可分为四大平台&#xff0c;分别为用于设计的 Microstation 平台&#xff0c;用于协同的 ProjectWise 平台&#xff0c;用于对资产进行全生命周期管理的 AssetWise 平台和数据互联互通的 数字孪生平台 iTwin。 1.1 …

Linux文件系统与日志

一、inode和block 文件数据包括元信息与实际数据&#xff0c;文件存储在硬盘上&#xff0c;硬盘最小存储单位是扇区&#xff0c;每个扇区存储512字节 1.block(块)&#xff1a;文件系统中用于存储文件实际数据的最小单位&#xff0c;由文件系统进行分配和管理&#xff0c;并通…

【电子通识】什么是8D分析法?8D步骤及用法?

在问题分析时往往会听到8D报告这样的词汇。如在电源专题【电源专题】案例:电源芯片厂家怎么判断电源芯片端口是否损坏中我们使用的图片就来源于电源芯片厂家的8D报告。 什么是8D分析法? 8D问题分析由美国国防部于1974年创立,当时用于军用物资采购保障。目前在汽车产业、组装…

MapReduce案例-电影网站数据统计分析

本文适合大数据初学者学习MapReduce统计分析业务问题的步骤和基础的MapReduce编程方法&#xff0c;初步掌握Hadoop对计算任务的管理。 本文末尾有全部数据集和完整代码连接。 1.准备工作 安装Hadoop:Hadoop 3.3.2 离线安装-CSDN博客 按照好Hadoop之后要检查一下datanode运行情况…

在控制台实现贪吃蛇

在控制台实现贪吃蛇 前备知识Win32APICOORD这个结构体的声明如下&#xff1a;GetStdHandle 函数GetConsoleCursorInfo 函数SetConsoleCursorInfo 函数 SetConsoleCursorPosition 函数getAsyncKeyState 函数 控制台窗口的大小以及字符打印介绍控制台中的坐标宽字符及本地化介绍s…

SRS服务接入华为云CDN

CDN简介: CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网…

SSH远程连接docker容器-Linux-SSH -L 打隧道

问题&#xff1a;在物理机上用podman创建了一个容器&#xff0c;想SSH直接远程连接docker容器 解决方式&#xff1a; 步骤1: 在本地terminal输入以下命令&#xff1a; ssh -L 容器端口号:localhost:容器端口号 物理机用户名物理机ip -p 物理机端口号 即可&#xff0c;可新打…

centos7+mysql57安装以及初始化

1、下载安装yum官方mysql源&#xff1a; http://repo.mysql.com/ ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/061472a86e9e4548b76d4603d4614568.png rpm -ivh mysql57-community-release-el7.rpm2、yum安装mysql服务 yum install -y mysql-community-server…

423 世界读书日 和京东零售技术人一起读好书

我们正处于一个复杂、变化的世界&#xff0c;想要更好地理解、适应它&#xff0c;读书可能是最方便的方式之一。 4 月 23 日世界读书日&#xff0c;我们整理了 10 位零售技术人的书籍推荐给大家&#xff0c;欢迎大家一起来共读好书。愿大家在忙碌工作之余&#xff0c;都能够持…

从0到1实现RPC | 接入Apollo配置中心

一、代码实现 添加依赖 添加apollo客户端的依赖和spring配置相关依赖 添加监听器 通过实现ApplicationContextAware接口&#xff0c;获取Spring上下文。 使用ApolloConfigChangeListener注解监听命名空间rpc-demo-provider.yaml和默认的application.properties。 监听逻辑…

开源大模型王者归来:llama3最大4000亿参数,性能GPT4相当,超越Grok3140亿且全开源代码

llama3&Grok 目前开源的超级大模型有Gork和Llama3 https://github.com/xai-org/grok-1&#xff1b;该模型称为史上最大开源LLM&#xff0c;参数高达3140亿&#xff01;马斯克如约开源Grok&#xff0c;10小时狂揽10000颗Star&#xff0c;搞笑的是这个模型只开源了推理没有训…

17.Nacos与Eureka区别

Nacos会将服务的提供者分为临时实例和非临时实例。默认为临时实例。 临时实例跟eureka一样&#xff0c;会向注册中心报告心跳监测自己是否还活着。如果不正常了nacos会剔除临时实例。&#xff08;捡来的孩子&#xff09; 非临时实例&#xff0c;nacos会主动询问服务提供者是否…

古董展新风尚:山海鲸数据大屏引领科技潮流

在数字化浪潮的推动下&#xff0c;传统文化与现代科技正日益融合&#xff0c;展现出独特的魅力。近日&#xff0c;山海鲸推出了一款古董展览数据可视化大屏&#xff0c;将古董藏品的丰富内涵以直观、生动的形式呈现在观众面前&#xff0c;让人们在欣赏古董之美的同时&#xff0…

深入探索GDB:Linux下强大的调试神器

目录 一、GDB简介&#xff1a;源码级调试的基石 二、GDB基础操作&#xff1a;从入门到熟练 启动与基本命令 三、GDB进阶功能&#xff1a;解锁更深层次的调试能力 1. 回溯追踪&#xff1a;洞察调用栈 2. 动态内存检测&#xff1a;揪出内存问题 3. 条件断点与观察点&#…