简单实践 java spring cloud 负载均衡

1 概要

1.1 实现一个最简单的微服务。远程调用+负载均衡,基本上完成了最核心的微服务框架。

远程调用:RestTemplate

注册中心:eureka

负载均衡:Ribbon

1.2 要点

1.2.1 依赖

1.2.1.1 主框架依赖
  • spring boot 依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId></dependency>
  •  spring cloud 依赖
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
 1.2.1.2  eureka依赖
  • 服务端依赖
<groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  • 客户端依赖 
<groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

 1.2.2 配置文件

  • 服务设置
server:port: 10086
spring:application:name: eureka server
  •  服务注册
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/

1.2 技术关键词

  • spring-cloud-starter
    
  • spring-cloud-dependencies
  • spring-cloud-starter-netflix-eureka-server
  • spring-cloud-starter-netflix-eureka-client
  • spring-boot-starter-web
  • spring:application:name: eureka server
  • eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/
  • @SpringBootApplication
    @EnableEurekaServer
  • @Bean
    @LoadBalanced
    public RestTemplate
  • @Autowired
    RestTemplate restTemplate;
  • @RestController
  • return "函数2"+restTemplate.getForObject(url,String.class);
  • SpringApplication.run(Main.class);

 

2 代码

2.1 父工程

 <?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xjc.springcloundtest</groupId><artifactId>demo8</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>untitled</artifactId><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies>
</project>

2.2 注册中 eureka

2.2.1 工程文件

 <?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xjc.springcloundtest</groupId><artifactId>demo8</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>untitled</artifactId><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies>
</project>

2.2.2 配置文件

server:port: 10086
spring:application:name: eureka server
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/

2.2.3 主函数

package com.xjc.springcloundtest;import com.netflix.discovery.shared.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class);System.out.println("Hello world!");}
}

2.2.4 运行效果

2.3 服务工程

2.2.1 工程文件

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xjc.springcloundtest</groupId><artifactId>demo8</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>untitled1</artifactId><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

2.3.2 配置文件

spring:application:name: server1
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/

2.3.3 主函数

package com.xjc.springcloundtest;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class);System.out.println("Hello world!");}
}

2.3.4 控制器

package com.xjc.springcloundtest;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {@RequestMapping("/fun")public String fun(){return "函数1";}
}

2.3.5 运行效果

 

2.4 消费者

2.4.1 工程文件

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xjc.springcloundtest</groupId><artifactId>demo8</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>untitled2</artifactId><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

2.4.2 配置文件

server:port: 8081
spring:application:name: server2
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/

2.4.3 主函数

package com.xjc.springcloundtest;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class);System.out.println("Hello world!");}@Bean@LoadBalancedpublic RestTemplate restTemplate(RestTemplateBuilder builder ){return builder.build();}
}

2.4.4 消费者

package com.xjc.springcloundtest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class TestController {@AutowiredRestTemplate restTemplate;@RequestMapping("/fun")public String fun(){//String url = "http://localhost:8080/fun";String url = "http://server1/fun";return "函数2"+restTemplate.getForObject(url,String.class);}
}

2.4.5 运行效果

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

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

相关文章

HarmonyOS鸿蒙 虚拟像素 图片显示

Android中&#xff0c;有的sp&#xff0c;dp&#xff0c;dpi&#xff0c;px等概念。 dpi&#xff0c;dots per inch&#xff0c;代表屏幕像素密度。是指屏幕上每英寸&#xff08;1英寸 2.54 厘米&#xff09;距离中有多少个像素点。 dp&#xff0c;device independent pixels&…

Camille-接口测试

* 接口&#xff1a;不同的系统之间相互连接的部分&#xff0c;是一个传递数据的通道 * 接口测试&#xff1a;检查数据的交换、传递和控制管理过程 网络模型&#xff1a; OSI七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 TCP/IP四层模型 应用层 传输层 网络…

GPT-4 Vision根据应用程序截图生成博客和Readme 升级Streamlit八

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

虚拟机(VMware)ubuntu16.04 直接连接网口设备 USRP 吊舱

编辑虚拟网络编辑器 点击之后 选择网卡之后&#xff0c;点击确定。 电脑配置 使用了&#xff1a;192.168.2.56 虚拟机内部配置 和PC的配置一致

leetcode刷题(剑指offer) 101.对称二叉树

101.对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; …

Elasticsearch性能调优

背景 项目上是用 ES 做数据库&#xff0c;存储的告警数据&#xff0c;量级在千万级别左右。测试在压测之后&#xff0c;系统频繁出现告警记录查询报错&#xff0c;系统不可用。基于此排查分析项目上 Elasticsearch 的使用是否合理。 版本及硬件 环境&#xff1a;10.xx.xxx.x…

vue前端html导出pdf

package.json中添加依赖 调用方&#xff1a; import htmlToPdf from ../../../utils/file/htmlToPdf.js// 下载方法&#xff0c;pdfDownloadDpi为onClickDownLoad() {htmlToPdf.getPdf(标题1, jsfgyzcpgxmShow, this.pdfDownloadDpi)}htmlToPdf.js // 页面导出为pdf格式 imp…

漏洞01-目录遍历漏洞/敏感信息泄露/URL重定向

目录遍历漏洞/敏感信息泄露/URL重定向 文章目录 目录遍历敏感信息泄露URL重定向 目录遍历 敏感信息泄露 于后台人员的疏忽或者不当的设计&#xff0c;导致不应该被前端用户看到的数据被轻易的访问到。 比如&#xff1a; ---通过访问url下的目录&#xff0c;可以直接列出目录下…

秋招面试—JS篇

2024 JavaScript面试题 1.new 操作符的工作原理 ①.创建一个新的空对象 ②.将这个对象的原型设置为函数的 prototype 对象 ③.让函数的this指向该对象&#xff0c;为函数添加属性和方法 ④.最后返回这个对象 2.什么是DOM&#xff0c;什么是BOM? DOM&#xff1a;文档对象…

代码随想录算法训练营第二十二天|235 二叉搜索树的最近公共祖先、701 二叉搜索树中的插入操作、450 删除二叉搜索树中的节点

235 二叉搜索树的最近公共祖先 题目链接&#xff1a;二叉搜索树的最近公共祖先 思路 因为二叉搜索树是有序的&#xff0c;因此p和q的最近公共祖先一定在两者之间&#xff0c;所以每到一个节点&#xff0c;该节点的数值如果大于p和q&#xff0c;则朝左子树走&#xff1b;如果…

C/C++ - 函数模板

目录 函数模板基础 函数模板定义 函数模板实例 函数模板调用 函数模板本质 模板函数特化 模板参数限定 默认模板参数 多个模板参数 非类型模板参数 函数模板拓展 模板参数匹配规则 函数模板基础 函数模板定义 使用 template <typename T>​​​​​ 或 templ…

ElementUI Form:Input 输入框

ElementUI安装与使用指南 Input 输入框 点击下载learnelementuispringboot项目源码 效果图 el-input.vue &#xff08;Input 输入框&#xff09;页面效果图 项目里el-input.vue代码 <script> export default {name: el_input,data() {return {input: ,input1: ,i…

SOME/IP SD 协议介绍(五)使用SOME/IP-SD宣布非SOME/IP协议的协议。

使用SOME/IP-SD宣布非SOME/IP协议的协议。 除了SOME/IP之外&#xff0c;车辆内部还使用其他通信协议&#xff0c;例如用于网络管理、诊断或闪存更新。这些通信协议可能需要传递服务实例或具有事件组。 对于非SOME/IP协议&#xff0c;应使用特殊的服务ID&#xff0c;并使用配置…

养猫家庭必备宠物空气净化器吗?性价比猫用空气净化器牌子推荐

家里的可爱猫咪们带来了很多快乐&#xff0c;但是它们的毛发却无处不在&#xff0c;飞舞在整个房间里。而且如果猫砂盆不及时清理&#xff0c;整个屋子都会弥漫着难闻的气味。每天都要清理工作&#xff0c;但是有时候我们也没有那么多精力。虽然享受着猫咪们带来的快乐&#xf…

C# wpf 字体图标预览,html字符与unicode转换

在进行wpf 开发工作过程中遇到字体图标无法预览的问题&#xff0c;特此记录。 1、把需要预览的字体文件上传到网站上进行转换 Create Your Own font-face Kits Font Squirrel2、下载文件后进行解压。 3、找到 Glyph Chart 查看字体html字符编码4、在wpf中直接使用即可 <…

C语言数据结构之二叉树

少年恃险若平地 独倚长剑凌清秋 &#x1f3a5;烟雨长虹&#xff0c;孤鹜齐飞的个人主页 &#x1f525;个人专栏 &#x1f3a5;前期回顾-栈和队列 期待小伙伴们的支持与关注&#xff01;&#xff01;&#xff01; 目录 树的定义与判定 树的定义 树的判定 树的相关概念 树的运用…

AI魔幻巨制《魔戒4》电影宣传片

AI魔幻巨制《魔戒4》电影宣传片 中土世界的命运悬于一线。 争夺魔戒的最终战斗已经开始。 面对无边的黑暗&#xff0c;光明战士将挺身而出。 光明与黑暗在终极对决中碰撞。 英雄崛起&#xff0c;传奇重生。 最后的战斗即将来临。 谁是拯救世界的英雄&#xff1f; 想看哪部…

Python生态系统中10个强大的 Web 框架

在蓬勃发展的Python生态系统中&#xff0c;一系列强大的 Web 框架可以满足不同的开发人员需求。选择正确的产品对于成功的 Web 开发之旅至关重要。 Django&#xff1a; Django是古老的 Python 框架&#xff0c;以其成熟、安全且功能丰富的架构而屹立不倒。它采用包含插件的理…

嵌入式学习第十六天

制作俄罗斯方块小游戏&#xff08;一&#xff09; 分析&#xff1a; printf函数高级用法 \033[&#xff1a;表示转义序列的开始 m&#xff1a;表示转义序列的结束 0&#xff1a;重置所有属性 1&#xff1a;设置粗体或高亮 30-37&#xff1a;设置字体色 30: 黑 31: 红 32:…

MySQL窗口函数--lead()函数

lead()函数&#xff1a; 查询当前行向下偏移n行对应的结果 该函数有三个参数&#xff1a;第一个为待查询的参数列名&#xff0c;第二个为向下偏移的位数&#xff0c;第三个参数为超出最下面边界的默认值。 如下代码&#xff1a; 查询向下偏移 2 位的年龄 SELECT user_id,user…