简单实践 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.hqwc.cn/news/444401.html

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

相关文章

基于腾讯云服务器搭建幻兽帕鲁服务器保姆级教程

随着网络游戏的普及&#xff0c;越来越多的玩家希望能够拥有自己的游戏服务器&#xff0c;以便能够自由地玩耍。而腾讯云服务器作为一个优秀的云计算平台&#xff0c;为玩家们提供了一个便捷、稳定、安全的游戏服务器解决方案。本文将为大家介绍如何基于腾讯云服务器搭建幻兽帕…

【Redis】实现购物秒杀及分布式锁

Redis实现购物秒杀及分布式锁 全局唯一ID Redis自增ID策略 ID构造是:时间戳 + 计数器 每天一个key,方便统计订单量 业务实现 获取指定时间的秒数 LocalDateTime timeBegin = LocalDateTime.of(2024, 1, 1, 0, 0, 0); long second = timeBegin.toEpochSecond(ZoneOffset…

XCTF:warmup[WriteUP]

CtrlU查看页面源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible&q…

数据的保护:local | protected

文章目录 前言一、local二、protected总结 前言 为了数据的保护&#xff0c;我们可以通过local或者protected去修饰数据&#xff0c;本文主要记录一下它俩之间的区别。 一、local 基类中用local修饰的变量&#xff0c;在其子类中不能被访问。 如下所示&#xff0c;基类中的DO…

D2576——单片开关电压调整电路,可提供降压开关稳压器的各种功能,能驱动3A负载,有优异的电压线性度和负载调整能力。兼容型号LM2576

D2576是一块单片开关电压调整电路&#xff0c;能提供降压开关稳压器的各种功能&#xff0c;能驱动3A负载&#xff0c;有优异的电压线性度和负载调整能力。 主要特点&#xff1a; ● 3.3V. 5V和12V及可调电压输出 ● 3A输出电流 ● 外部元件少&#xff0c;仅需要四个 ● 振荡频…

【知识点】设计模式

创建型 单例模式 Singleton&#xff1a;确保一个类只有一个实例&#xff0c;并提供该实例的全局访问点 使用一个私有构造方法、一个私有静态变量以及一个公有静态方法来实现。私有构造方法确保了不能通过构造方法来创建对象实例&#xff0c;只能通过公有静态方法返回唯一的私…

无需定义 巨星登场!影驰Geforce RTX 4080 SUPER系列显卡现已发售

新春至&#xff0c;龙年到&#xff0c;电脑硬件圈可谓热闹非凡&#xff01;先是年轻小将RTX 4070 SUPER的惊艳首秀&#xff0c;再是上周首发RTX 4070TI SUPER的高性能表演~~而今&#xff0c;SUPER系列最后一位巨星已然登场&#xff01;影驰RTX 4080 SUPER系列显卡又会给我们带来…

Talk|中国科学院信息工程研究所王子泰:面向长尾学习的局部泛化分析技术

本期为TechBeat人工智能社区第568期线上Talk。 北京时间1月31日(周三)20:00&#xff0c;中国科学院信息工程研究所博士生—王子泰的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “面向长尾学习的局部泛化分析技术”&#xff0c;系统地介绍了他的团…

【深度学习:机器学习模型】如何构建您的第一个机器学习模型

【深度学习&#xff1a;机器学习模型】如何构建您的第一个机器学习模型 第 1 步&#xff1a;将您的机器学习项目置于情境中第 2 步&#xff1a;探索数据并选择机器学习算法的类型监督学习无监督学习强化学习 第 3 步&#xff1a;数据收集第 4 步&#xff1a;选择模型评估方法维…

main函数、_tmain函数和wmain函数的区别

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 今天碰到一个问题&#xff0c;算是彻底搞明白了main函数、_tmain函数和wmain函数的区别。就是使用vs2015新建一个控制台工程&#xff0c;如果入口函数是设…

【Qt学习笔记】(一)初识Qt

Qt学习笔记 1 使用Qt Creator 新建项目2 项目代码解释3 创建第一个 Hello World 程序4 关于内存泄漏问题5 Qt 中的对象树6 关于 qDebug&#xff08;&#xff09;的使用7 使用其他方式创建一个 Hello World 程序&#xff08;编辑框和按钮方式&#xff09;8 关于 Qt 中的命名规范…

Centos7配置Node环境

这里写目录标题 配置node环境变量一&#xff1a;配置前的准备工作1 创建node的下载目录2 下载node安装包3 解压 二&#xff1a;配置node环境变量: ~/.bash_profile 和 /etc/profile 的区别三&#xff1a;验证变量是否配置成功 配置node环境变量 一&#xff1a;配置前的准备工作…