【Java】SpringCloud使用

news2024/12/26 23:53:50

SpringCloud使用

发起远程调用

根据订单id查询订单的同时,把订单所属的用户信息一起返回,但订单信息和用户信息分属两个不同的模块。
本质上是订单模块向用户模块发起请求,在spring中使用resttemplate发起。

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {    
	public static void main(String[] args) {       
	SpringApplication.run(OrderApplication.class, args);    
	}     
	@Bean    
	public RestTemplate restTemplate(){        
		return new RestTemplate();    
	}
}

搭建Eureka-server

  1. 引入依赖
<dependency>    
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 在启动类上添加注解
    在这里插入图片描述
  2. 添加配置文件
server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

注册客户端

  1. 引入pom依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 编写配置文件
spring: 
  application:
    name: userservice
    eureka:  
      client:    
      service-url:
        defaultZone: http://127.0.0.1:10086/eureka/
  1. 修改访问的路径,使用服务名代替ip+端口
    在这里插入图片描述
  2. 添加负载均衡注解,使服务可以随机访问

在这里插入图片描述

Ribbon负载均衡

Ribbon负载均衡规则

Ribbon的负载均衡规则是一个叫做IRule的接口来定义的,每一个子接口都是一种规则。

在这里插入图片描述

内置负载均衡规则类规则描述
RoundRobinRule轮询index,选择index对应位置的Server
AvailabilityFilteringRule检查status里记录的各个服务的状态,过滤掉一直连接失败和高并发的服务器
WeightedResponseTimeRule根据响应时间加权,响应时间越长,权重越小,被选中的可能性越低
ZoneAvoidanceRule默认的负载均衡策略,使用Zone对服务器进行分类,即复合判断Server所在区域的性能和Server的可用性,再对同一个Zone内做轮询
BestAvailableRule选择一个最小的并发请求的server,如果Server被tripped了,则跳过
RandomRule随机选择一个可用的服务器
RetryRule对选定的负载均衡策略加上重试机制,在一个配置时间段内当 选择Server不成功,则一直尝试使用subRule的方式选择一个 可用的Server

Ribbon核心组件

在这里插入图片描述

ribbon的懒加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载.
在这里插入图片描述,

Spring配置刷新

参考这篇文章学习了一遍

在修改代码的时候发现了如下问题:

application.yml配置文件内容如下:

server:
  port: 8081
spring:
  application:
    name: userservice
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        prefix: ${spring.application.name}
        group: DEFAULT_GROUP
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/gotest?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  shardingsphere:
    sharding:
      default-database-strategy:
      tables:
#      discovery:
#        cluster-name: HZ
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url:  # eureka的地址信息
#      defaultZone: http://127.0.0.1:10086/eureka
pattern:
  name: 本地环境local

book:
  author: haha
  name: springcloudtest
  category: category01

按照dataid的格式: ${prefix}-${spring.profiles.active}.${file-extension}
此处读取的nacos中配置的dataid应当为userservice.yaml
实际生效的为userservice.properties

在这里插入图片描述
控制台无输出。

在这里插入图片描述
修改properties文件

在这里插入图片描述
在这里插入图片描述
控制台有输出,且请求对应有变化。
在这里插入图片描述

GateWay中的11种路由断言工厂

在这里插入图片描述

注意事项

  1. nacos默认是以集群方式启动的,安装nacos之后直接启动会报如下错误
    在这里插入图片描述
    需要修改启动命令为:startup.cmd -m standalone
    或者修改startup.cmd/startup.sh:
# startup.sh删除
export MODE="cluster"
# 调整为
export MODE="standalone"
  1. 启动eurekaserver的时候还可能出现这样的错误

参考资料

  1. SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程
  2. SpringCloud 源码系列(9)— 负载均衡Ribbon 之 核心组件与配置
  3. 面试官:如何设计一个Ribbon负载均衡组件
  4. SpringCloud实践系列(二):Ribbon负载均衡
  5. nacos官方文档
  6. SpringCloud使用Nacos保存和读取变量的配置方法
  7. Spring Cloud Alibaba(三) 搭建API网关 gateway动态路由

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

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

相关文章

电脑配置怎么看?这3种方法就可以轻松查看

在我们的日常生活和工作中&#xff0c;我们越来越离不开计算机。对于一台好的电脑&#xff0c;首先&#xff0c;我们需要了解它的配置&#xff0c;以便更好地选择它。电脑配置怎么看&#xff1f;可能还有很多人不知道。别担心&#xff0c;本篇文章就是来教会你如何查看电脑的配…

Android studio集成flutter

1.获取Flutter SDK 视窗安装|扑动 (flutter.dev) 2.配置环境变量 3.Android Studio安装Flutter插件 4.打开管理窗口cmd&#xff0c;输入flutter doctor。 5.因为第二步是感叹号&#xff08;如下图&#xff09;&#xff0c;需要run: flutter doctor --android-licenses&#xf…

基础课程7:多线程与Pad可获得性

目标 GStreamer自动处理多线程&#xff0c;但在某些情况下&#xff0c;您可能需要手动解耦线程。本教程展示了如何做到这一点&#xff0c;此外&#xff0c;还完成了关于Pad可用性的阐述。更准确地说&#xff0c;本文档解释了: 如何为管道的某些部分创建新的执行线程Pad的可用…

SpringCloud之消息总线

spring CloudBus 将分布式的节点和轻量的消息代理连接起来。这可以用于广播配置文件的更改或者其他的管理工作。一个关键的思想就是&#xff0c;消息总线可以为微服务做监控&#xff0c;也可以作为应用程序之间相互通讯。 一、准备工作 本文还是基于上一篇文章来实现。按照官…

MySQL运维(二)MySQL分库分表概念及实战、读取分离详解

MySQL运维(二)MySQL分库分表详解、读取分离详解 1、MySQL分库分表相关概念 1.1 分库分表概念 1.1.1 分库的原因 分库&#xff1a;就是一个数据库分成多个数据库&#xff0c;部署到不同机器。 如果业务量剧增&#xff0c;数据库可能会出现性能瓶颈&#xff0c;这时候我们就需…

盘点那些免费好用的高清录屏软件,7款宝藏软件(2023年新版)

有不少的小伙伴私信小编&#xff0c;希望小编能够分享一些好用的高清录屏软件。那么今天&#xff0c;小编就给大家盘点一下那些免费好用的高清录屏软件吧&#xff01;这些都是小编亲自体验过的&#xff0c;有需要的小伙伴赶紧码住收藏&#xff0c;这些宝藏软件错过就难找了&…

即时通讯开发之详解TCP/IP中的ICMP 协议、ping 和 Traceroute

前面讲到了,IP 协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完 成。其中一个重要的模块就是 ICMP(网络控制报文)协议。当传送 IP 数据包发生错误--比如主机不可达,路由不可达等等,ICMP 协议将会把错误信息封包,然后传送回给…

拉伯证券|兔年资本市场三大重点

近来&#xff0c;承受《证券日报》采访的多位专家展望兔年资本商场&#xff0c;称深化推动股票发行注册制变革、稳步扩展准则型敞开以及防备化解严重危险是三大重点工作。 申万宏源证券首席经济学家杨生长对记者表明&#xff0c;本年是我国经济康复到常态性增加的要害一年&…

硬件系列(1)-电阻、电容、电感三大件

下面是目录电阻电阻参数(1)**SIZE 尺寸**(2)**TOLERANCE 误差**(3)PACKAGING TYPE 外包装(4)TEMPERATURE COEFFICIENT OF RESISTANCE 温度(5)**TAPING REEL & POWER 功率**(6)**RESISTANCE VALUE 电阻值**三位的四位的查表的(7) DEFAULT CODE 缺省编码电阻的分类碳膜电阻金…

leetcode63 不同路径二

题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上…

Elasticsearch7.3.2通俗易懂

文章目录一、安装1.步骤2.报错(1) can not run elasticsearch as root(2) could not find java in JAVA_HOME or bundled at ...(3) Error: Could not find or load main class XXX.JavaVersionChecker(4)BindTransportException[Failed to bind to [9300-9400]](5)max virtual…

如何在高压系统中实现电源和信号线的电气隔离

介绍 在一系列高压应用中存在电源和信号线的情况下&#xff0c;需要为设备和用户提供强大的保护&#xff0c;包括工厂自动化和电机驱动器等工业 4.0 系统。这延伸到汽车和电动汽车 &#xff08;EV&#xff09;、医疗系统、测试和测量应用以及光伏系统和电网基础设施等绿色能源…

ChatGPT API调用python和脚本实现

Chat GPT 由于其独特、近乎准确且类似人类的响应&#xff0c;如今在互联网上引起了过多的讨论。本文讨论如何通过 Python 代码连接到 Chat GPT API。 如果需要用website访问chatGPT&#xff0c; 请参考保姆级教程 火爆全球的网红OpenAI ChatGPT注册教程 文章目录第 1 步&#x…

随笔记——线程池

文章目录1 概览2 核心点2.1 使用线程池的好处2.2 如何创建线程池2.3 线程池的参数2.4 如何处理任务流程&#xff1f;2.5 如何关闭线程池2.6 拒绝策略2.7 线程池满了&#xff0c;会怎样&#xff1f;1 概览 2 核心点 2.1 使用线程池的好处 降低资源消耗&#xff1a;通过重复利用…

Servlet程序创建步骤

1. 创建项目 使用 IDEA 创建一个 Maven 项目. 1) 菜单 -> 文件 -> 新建项目 -> Maven 2. 引入依赖 Maven 项目创建完毕后, 会自动生成一个 pom.xml 文件. 我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包. 1) 在 中央仓库 中搜索 "servlet", 一般…

android 系统安全内容总结

部分android系统安全内容网上已经存在,这里的android系统安全内容还是以经验总结为主,夹带不少引用,并形成个人的理解。 android安全内容学习需要一定基础,没接触安全的开发可以认识一下,接触过安全的可以对比安全上的理解。组建android系统安全讨论群进行维护更新android…

基于ssm高校科研成果管理系统 java ideamysql

&#xff08;1&#xff09;教师功能需求 教师进入系统可以查看个人中心、科研成果初审管理、科研成果终审管理、科研发布管理、留言板管理等操作。 &#xff08;2&#xff09;管理员功能需求 管理员登陆后&#xff0c;主要功能模块包括个人中心、教师管理、学院管理员管理、科…

linux Redis 搭建

命令下载&#xff1a;wget https://download.redis.io/releases/redis-6.2.6.tar.gz安装gcc&#xff1a;yum -y install gcc automake autoconf libtool make;进入src下make编译&#xff1a;make;make MALLOClibc&#xff08;报错时执行&#xff09;make install新建文件夹相关…

【Meta EnCodec源码分析】BitPacker功能介绍

二进制流 首先介绍一下二进制流。 假如有下4个数值 [ 47, 19, 38, 53 ]首先每个数字对应的二进制分别如下 十进制数值二进制数值470x0010 1111190x0001 0011380x0010 0110530x0011 0101 我们需要将这些数字保存到一个二进制文件中。 注&#xff1a;这里不考虑BigEndian还…

Centos使用lanproxy,搭建一个属于自己的内网穿透服务器(附转发失败解决方法),小白向

目录 前言 准备工作 搭建与使用 1. 安装git工具 2. 安装java环境 3. 安装maven工具 4. 搭建Lanproxy 5. 启动内网穿透服务 6. 设置开机自启 转发失败解决方法 前言 最近白嫖了7个月阿里云的服务器&#xff0c;顺带研究了一下&#xff0c;发现有挺多有趣又好玩的东西…