微服务学习

SpringCloud组成
服务注册与发现:consul 阿里Nacos
服务调用和负载均衡:OpenFeign LoadBalance
分布式事务:阿里Seata
服务熔断和降级:阿里Sentinel Circuit Breaker
服务链路追踪:Micrometer Tracing
服务网关:GateWay
分布式配置管理:consul 阿里Nacos
服务发现与注册
consul 是一套开源的分布式服务发现和配置管理系统,consul默认端口是8005,由GO语言开发,提供了微服务系统中的服务治理,配置中心,控制总线等功能 优点:基于raft协议,比较简洁、支持健康检查,同时支持HTTP和、DNS协议,提供图形化界面
实践:实现2个微服务注册与发现,服务提供者,端口8001: 服务消费者,端口80,注册到consul
服务提供者8001注册进consul
1、maven项目8001服务的pom.xml文件,引入spring-cloud-starter-consul-discovery
2、修改maven项目resources下application.yaml文件
server:
port:8001
spring:
application:
name:cloud-payment-service
cloud:
consul:
host:localhost
port:8500
discovery:
service-name:${spring.application.name}
服务cloud-payment-service以端口8001注册到consul
3、开启服务发现
maven项目main下找到8001服务的主启动类 添加@EnableDiscoveryClient
4、启动8001主启动类
5、检查consul是否注册成功
服务消费者80
1、80服务的pom.xml文件,引入spring-cloud-starter-consul-discovery
2、修改yaml文件
server:
port:80
spring:
application:
name:cloud-consumer-service
cloud:
consul:
host:localhost
port:8500
discovery:
service-name:${spring.application.name}
服务cloud-consumer-service以端口80注册到consul
3、开启服务发现
找到80服务的主启动类 添加@EnableDiscoveryClient
4、修改maven项目下main的ontroller类
原配置:paymentSrv_URL=“http://localhost:8001”
修改为:paymentSrv_URL=paymentSrv_URL=http://cloud-payment-service(服务名)
4、启动80主启动类
5、检查consul是否注册成功
分布式系统全局配置和动态刷新:
业务系统拆分成多个子服务,系统会出现大量的服务,每个服务需要必要的配置信息才能运行,所以集中式、动态配置管理是必不可少的,某些配置文件中的内容大部分都是相同的,只有个别配置项不同,例如数据库配置,每个微服务关于数据库的配置基本相同,当数据库配置修改,要使微服务处处生效
微服务自带一个application.yaml,当上百微服务的时候,管理维护配置文件不太方便
通用全局配置信息,直接注册进Consul服务器,从Consul获取,实现一次修改,全局广播
实践:
1、
修改8001微服务的pom.xml文件,引入spring-cloud-starter-consul-config spring-cloud-starter-bootstap
2、新增bootstap.yaml
application 用户级别的
bootstap.yaml 系统级别,优先级更高
bootstap.yaml 替代application或者两者共存
bootstap.yaml
server:
port:80
spring:
application:
name:cloud-consumer-service
cloud:
consul:
host:localhost
port:8500
discovery:
service-name:${spring.application.name}
config:profile-separator:'-' 文件分隔符format: YAML
application.yaml
spring:
…
profiles:
active:dev
配置规则说明
Key Valus配置分布式配置和全局刷新
1、创建config文件夹,以/结尾
2、config文件夹分别创建其他3个文件夹

动态刷新
Maven项目主启动类添加@RefreshScope
@EnableDiscoveryClient
@RefreshScope
阿里云MSE Nacos
https://help.aliyun.com/zh/mse/use-cases/create-a-service-registry-on-mse-for-spring-cloud-applications?spm=a2c4g.11174283.0.0.412e7b26BY8hAO&shareId=aa1fce1325f3814c0fd355c755cbcc1c
负载均衡
Spring Cloud loadBalance是由SpringCloud官方提供的一个开源简单易用的客户端负载均衡
组件:spring-cloud-starter-loadbalancer
loadbalancer工作逻辑:
1、Consul Server从服务端查询并拉取服务列表它有多个服务(上图3个服务),这3个服务实现是完全一样的,默认轮询调用用谁都可以正常执行,
2、按照指定的负载均衡策略从server收到的服务注册列表中由客户端自己选择一个地址

实践:80通过轮询负载访问8001/8002/8003
步骤:
1、将服务提供者8001微服务拷贝2个微服务,新拷贝的微服务注册到consul
2、80微服务修改pom.xml文件新增loadbalancer依赖组件,RestTemplateconfig配置文件增加@loadBalance、修改80微服务controller文件并启动
MSE
https://help.aliyun.com/document_detail/404845.html
相关文章:
微服务学习
SpringCloud组成 服务注册与发现:consul 阿里Nacos 服务调用和负载均衡:OpenFeign LoadBalance 分布式事务:阿里Seata 服务熔断和降级:阿里Sentinel Circuit Breaker 服务链路追踪:Micrometer Tracing 服务网关:GateWa…...
【.NET Core】深入理解IO - 读取器和编写器
【.NET Core】深入理解IO - 读取器和编写器 文章目录 【.NET Core】深入理解IO - 读取器和编写器一、概述二、BinaryReader和BinaryWriter2.1 BinartReader类2.2 BinaryWriter类 三、StreamReader和StreamWriter3.1 StreamReader类3.1 StreamWriter类StreamWriter类构造函数Str…...
【Java项目介绍和界面搭建】拼图小游戏——添加图片
🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …...
「MySQL」基本操作类型
🎇个人主页:Ice_Sugar_7 🎇所属专栏:数据库 🎇欢迎点赞收藏加关注哦! 数据库的操作 创建、显示数据库 使用 create 创建一个数据库 create database goods;然后可以用 show databases 来查看已经创建的数…...
Android 14 权限
问题Android 14 按照视频播放类的应用 无法获取到权限。 原因是从 Android 13 开始,如果你的应用程序 targetSdk 指定到了 33 或以上,那么 READ_EXTRERNAL_STORGE 权限就完全失去了作用,申请它将不会产生任何效果。 与此相对应的,…...
Springboot整合SSE实现实时消息推送
SSE详细介绍传送门:SSE实时消息推送 简单描述一下SSE推送在实际项目中应用的常见场景 1,项目页面中有消息通知板块,当信息有变化时,只有手动刷新页面,才会看到最新的数据,这里可以采用SSE技术实时推送最新…...
在pytorch中利用GPU训练神经网络时代码的执行顺序并提高训练效率
在pytorch中利用GPU训练神经网络时代码的执行顺序并提高训练效率 在 PyTorch 中,大多数操作在 GPU 上默认是异步执行的,但这并不意味着它们是并行执行的。要理解代码是同步还是异步执行,以及是串行还是并行执行,我们需要考虑几个…...
vue3学习
距离vue2学习已经一年度了,现在开始vue3的学习。 一、webpack (1)创建列表隔行变色项目及webpack使用: 新建项目空白目录,并运行npm init -y命令,初始化包管理配置文件package.json; 新建sr…...
毫秒生成的时间戳如何转化成东八区具体时间
假设现在有一个时间是1709101071419L 后端代码实现 Java代码(东八区时间) 在Java代码中,我们将时区从UTC调整为东八区(UTC8): import java.time.Instant; import java.time.ZoneId; import java.time.Z…...
02. Nginx入门-Nginx安装
Nginx安装 yum安装 编辑yum环境 cat > /etc/yum.repos.d/nginx.repo << EOF [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_…...
leetcode73. 矩阵置零
链接见:https://leetcode.cn/problems/set-matrix-zeroes/description/ 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 AC代码 class Solution { public:void setZeroes(vec…...
【中间件】RabbitMQ入门
📝个人主页:五敷有你 🔥系列专栏:中间件 ⛺️稳中求进,晒太阳 MQ的优劣: 优势 应用解耦:提升了系统容错性和可维护性异步提速:提升用户体验和系统吞吐量消峰填谷࿱…...
rtt的io设备框架面向对象学习-电阻屏LCD设备
目录 1.8080通信的电阻屏LCD设备1.1 构造流程1.2 使用2.i2c和spi通信的电阻屏LCD 电阻屏LCD通信接口有支持I2c、SPI和8080通信接口的。 1.8080通信的电阻屏LCD设备 lcd这块不像其他设备类,rtt没有实现的设备驱动框架层,那么是在驱动层直接实现的。 以…...
商城免费搭建之java商城 java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景
1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…...
蓝桥杯刷题--python-16
562. 壁画 - AcWing题库 Tint(input()) j1 while(j<T): N int(input()) ainput() s [0]*(N1) # 求前戳和 for i in range(1, N 1): s[i] int(a[i-1]) s[i - 1] # 枚举 # 区间 max_ float(-inf) k (N 2 - 1) // 2 for i in …...
闰年计算中的计算机Bug
不知道你有没有看过凯瑟琳泽塔琼斯主演的《偷天陷阱》,里面主题思想是用银行结算系统的千年虫bug,精心设计,盗取银行几十亿的精彩动作片。所谓2000 年千禧年的千年虫,其实就是计算机计算闰年的bug。 这个闰年计算的历史源远流长&…...
python水表识别图像识别深度学习 CNN
python水表识别,图像识别深度学习 CNN,Opencv,Keras 重点:项目和文档是本人近期原创所作!程序可以将水表图片里面的数据进行深度学习,提取相关信息训练,lw1.3万字重复15%,可以直接上交那种&…...
Java对接快递100实时快递单号查询API接口
目录 1.引入依赖 2.定义配置信息 3.模块结构 4.Controller 5.Service实现类 6.返回数据dto以及dto中的数据dto 7.测试运行 今天也是接到了这个任务,官网有小demo,可以下载下来参考test中代码 官方文档地址: 实时快递查询接口技术文档…...
Redis常见的15个【坑】,避坑指南
一、常见命令 1.1 过期时间意外丢失 原因: SET命令如果不设置过期时间,那么Redis会自动【擦除】这个key的过期时间 1.2 DEL命令阻塞redis key是String类型时,DEL时间复杂度是O(1)key是List/Hash/Set/ZSet类型,DEL时间复杂度是…...
04. Nginx入门-Nginx WEB模块
测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径:/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
