当前位置: 首页 > news >正文

微服务体系<1>

我们的微服务架构  我们的微服务架构和单体架构的区别
什么是微服务架构
微服务就是吧我们传统的单体服务分成  订单模块  库存模块  账户模块

在这里插入图片描述

单体模块 是本地调用 从订单模块 调用到库存模块 再到账户模块  这三个模块都是调用的同一个数据库  这就是我们的单体架构
微服务 就是把我们的订单模块,库存模块 账户模块拆出来 作为  订单服务,库存服务
账户服务
基于订单模块我就可以有独立的进程了
用户在下单的时候 此时涉及到远程调用
我们此时有独立的数据库,针对我用户下单这个业务来说 需要我们3个微服务来完成
可能别的功能需要多个微服务来完成
这个就属于微服务架构   整个系统的业务可能有几百个  甚至上千个微服务去完成  这种架构就是微服务架构

在这里插入图片描述

微服务 在自己的进程中运行  并且这些微服务通过rpc调用,比如说http.dubbo进行通信
他们是基于某一个业务来调用的比如说用户下单.就需要我们的订单 库存 账户
给予我们的业务功能来构建这种就是我们的微服务架构,会有很多问题随着链路增大,当我发起请求调用的时候.假设出问题了
比如说账户服务调不通 就会导致我用户是没有办法下单的
微服务是独立进程,分布式部署,就会存在网络抖动,网络不通又是怎么去解决如果有大量请求  很有可能就是你订单服务扛不住,负载直接飙升到90%
直接就拒绝服务了  这个问题我们也得去解决  我们还得需要有一些限流方案

在这里插入图片描述

还有  假设操作mysql 我在账户服务出现了慢查询,此时我的下单链路就会很慢
这种情况下我的排查问题, 我该怎么去排查,到底是哪一个节点出现问题了。
因为对于我微服务而言,此时可能会涉及到跨部门沟通,效率低,我们这个慢操作到底出现在那个环节上
是不是此时还有个链路追踪组件,
是不是还会涉及到分布式事务
单体架构在同一个进程内  用的本地事务
此时就涉及到跨服务  只能用分布式事务,就会增加我们的难度
真正保证分布式的稳定性 我们要有很多的方案 真正的想让微服务架构落地的时候要学习很多1. 注册中心
2. 注册中心有什么用
我此时springboot的2个应用  我用户和订单模块  我通过url发起的调用
我此时涉及到跨应用和跨进程我可以基于resttemplate 进行发起调用
我 user--->>>>>>order 服务  就可以  通过restTemplate 就可以发起调用这就是完成我们微服务最基本的需求 就是我们服务之间如何调用
使用restTemplate  这样是有问题的

在这里插入图片描述

比如说 我   user--->order  我此时订单服务是有多节点部署的
User------->order (扩容)
现在如果扩容了 假设 我启动一个 8021 
根本原因就是我们吧这里写死的,  

在这里插入图片描述

 微服务里面的调用关系 如果使用http框架 没有办法感知到我们这个就是我们急需去思考的问题我们现在基于restTemplate发起的调用,   我扩容的时候 就没有办法了我吧这个服务节点注册进来 我会员发起调用的时候 我发起调用我从List中去取一个 随机get(0)一个   我们可以引入一个中间件 --》》》》注册中心

在这里插入图片描述

我consumer就可以拉取到 这个列表
就是我现在写死是不行的 我就得写活 我可以使用zk 或者redis 去存储
我某一个服务宕机了  我又能怎么感知到我们的会员服务 不需要非健康的实例,所以我们需要一个健康检查的功能
我们可以用nginx配置一个upstream来做

在这里插入图片描述

比如说 我 服务很多  我就的维护很多,我们采用nginx 做注册中心肯定是不现实的
所以我们希望我们的服务启动起来的时候直接在nginx中插入数据
我们就想到mysql

在这里插入图片描述

我们就可以使用mysql 存储我们的服务注册信息 我们可以基于mysql 来实现我们的注册信息
就可以把服务的实例注册在mysql中

在这里插入图片描述

就吧服务的实例存储在Mysql  就比如说订单服务启动之后就可以发起个请求,
在mysql中注册一条信息  进行注册 就比如说  如果你意外下线的化可以来一个取消接口把服务进行删除假设我网络不通  我可以把状态设置为down   down 就代表非健康

在这里插入图片描述

对于我会员服务来说 我就可以拉取信息
我调用的时候 我就可以从注册中心中去拉取 这样来的化   
我发起请求的时候就可以从注册中心去拉取对应的服务的Ip 和port
我拉过来之后我就可以get(0) 进行拉取了 我就可以发起本地远程调用了
我们的注册中心 他有2个很重要的接口  1. 注册接口 2。获取服务的接口
获取服务的接口  我要拉取所有的订单信息 这是最核心的接口
这就是注册中心要实现的核心功能,服务注册和发现
服务注册 就是需要吧我们的服务注册在 注册中心上
服务发现  就是我们调用模块 做发现
服务发现 不仅仅做新增和删减
很有可能就是你宕机的时候可能就挂了, 还需要做一个健康检查
不能每次发起远程调用的时候都过注册中心   其次如果注册中心挂了
发现此时会员服务是没有办法掉通的服务的调用严重依靠注册中心即便你注册中心挂了, 我也能调用到你订单服务
我需要做一个心跳接口 就是说我可以在我每一个微服务中启动一个定时任务  定期发心跳
假设5s发一次心跳,比如说ping3306
叫做服务的续约
告诉注册中心我还活着最后一次发心跳的时间、 最后一次服务续约的时间我可以基于中台的功能去看 先看有什么模块  尽可能的了解业务我记录下来对于我注册中心来说 会检查 假设到11s 上一次还是01s
隔了10s 你还没有发送心跳过来
就代表i已经挂了
我就给你设置为down

在这里插入图片描述

他此时还没有删除  假设30s 的化 还没有做  我就可以认为你已经挂掉了 这个服务如果干掉的化  对于我们会员服务来说拉取我们服务的时候只会去取一个 通过心跳的机制感知到服务的增减对于会员服务来说 你不能因为 我注册中心挂了 我就不能发起调用

相关文章:

微服务体系<1>

我们的微服务架构 我们的微服务架构和单体架构的区别 什么是微服务架构 微服务就是吧我们传统的单体服务分成 订单模块 库存模块 账户模块单体模块 是本地调用 从订单模块 调用到库存模块 再到账户模块 这三个模块都是调用的同一个数据库 这就是我们的单体架构微服务 就是…...

M5ATOMS3基础02传感器MPU6886

M5ATOMS3基础01按键 简洁版本 MPU6886是一款6轴IMU单元,具有3轴重力加速度计和3轴陀螺仪。它采用16位ADC,内置可编程数字滤波器和片上温度传感器,并通过I2C接口(地址为0x68)与上位机通信。MPU6886支持低功耗模式&#…...

vue 快速自定义分页el-pagination

vue 快速自定义分页el-pagination template <div style"text-align: center"><el-paginationbackground:current-page"pageObj.currentPage":page-size"pageObj.page":page-sizes"pageObj.pageSize"layout"total,prev,…...

0-虚拟机补充知识

虚拟机克隆 如果想要构建服务器集群&#xff0c;没有必要一台一台的去进行安装&#xff0c;只要通过克隆就可以。 快速获得多台服务器主要有两种方式&#xff0c;分别为&#xff1a;直接拷贝操作和vmware的克隆操作 直接拷贝 将之前安装虚拟机的所有文件进行拷贝&#xff0…...

如何将电机控制器添加到您的 ROS 机器人

一、说明 如果您正在构建与 ROS/ROS2 一起使用的移动机器人,您需要做的第一件事就是集成电机控制器。电机控制器的目的是接受来自更高级别的软件(如导航堆栈)的消息,并将其转换为驱动电机的信号。它还将从电机的编码器接收信息,以计算机器人的速度和位置。 您可以…...

ChatGPT统计“一到点就下班”的人数

ChatGPT统计“一到点就下班”的人数 1、到点下班 Chatgpt统计各部门F-D级员工到点下班人数占比&#xff0c;是在批评公司内部存在到点下班现象。 根据图片&#xff0c;该占比的计算方法是&#xff1a;最后一次下班卡在17:30-17:40之间&#xff0c;且1-5月合计有40天以上的人…...

Games101学习笔记 - 变换矩阵基础

二维空间下的变换 缩放矩阵 缩放变换: 假如一个点&#xff08;X,Y&#xff09;。x经过n倍缩放&#xff0c;y经过m倍缩放&#xff0c;得到的新点&#xff08;X1&#xff0c;Y1&#xff09;&#xff1b;那么新点和远点有如下关系&#xff0c;X1 n*X, Y1 m*Y写成矩阵就是如下…...

Ubuntu18.04未安装Qt报qt.qpa.plugin could not load the Qt platform plugin xcb问题的解决方法

在Ubuntu 18.04开发机上安装了Qt 5.14.2&#xff0c;当将其可执行程序拷贝到另一台未安装Qt的Ubuntu 18.04上报错&#xff1a;拷贝可执行程序前&#xff0c;使用ldd将此执行程序依赖的动态库也一起拷贝过去&#xff0c;包括Qt5.14.2/5.14.2/gcc_64/plugins目录系的platforms目录…...

GPT4ALL私有化部署 01 | Python环境

进入以下链接&#xff1a; https://www.python.org/downloads/release/python-3100/ 滑动到底部 选择你系统对应的版本&#xff0c;如果你是win&#xff0c;那么大概率是win-64bit 有可能你会因为网络的问题导致下载不了&#xff0c;我提供了 链接 接着只需要打开 等待…...

GPT-AI 使用的技术概览

ChatGPT 使用的技术概览 智心AI-3.5/4模型&#xff0c;联网对话&#xff0c;MJ快速绘画 从去年 OpenAI 发布 ChatGPT 以来&#xff0c;AI 的能力再次惊艳了世人。在这样的一个时间节点&#xff0c;重新去学习相关技术显得很有必要。 ChatGPT 的内容很多&#xff0c;我计划采用…...

NoSQL-Redis持久化

NoSQL-Redis持久化 一、Redis 高可用&#xff1a;1.概述&#xff1a; 二、Redis持久化&#xff1a;1.持久化的功能&#xff1a;2.Redis 提供两种方式进行持久化&#xff1a; 三、RDB 持久化&#xff1a;1.定义&#xff1a;2.触发条件&#xff1a;3.执行流程&#xff1a;4.启动时…...

关于uniapp中的日历组件uni-calendar中的小红点

关于uniapp中的日历组件uni-calendar中的小红点 如果你使用过uni-calendar组件&#xff0c;可能你觉得这个小红点有点碍眼&#xff0c;但是官方给定的日历组件uni-calendar中如果你想要在某一天上添加一些信息例如:价格&#xff0c;签到&#xff0c;打卡之类&#xff0c;只要标…...

【Nodejs】Node.js简介

1.前言 Node 的重要性已经不言而喻&#xff0c;很多互联网公司都已经有大量的高性能系统运行在 Node 之上。Node 凭借其单线程、异步等举措实现了极高的性能基准。此外&#xff0c;目前最为流行的 Web 开发模式是前后端分离的形式&#xff0c;即前端开发者与后端开发者在自己喜…...

SpringBoot整合Druid

在Spring Boot中整合Druid时&#xff0c;需要导入Druid和JDBC的相关依赖&#xff0c;但不需要额外导入单独的JDBC包。 Druid是一个用于数据库连接池和监控的开源框架&#xff0c;它已经包含了对JDBC的实现。因此&#xff0c;当你导入Druid的依赖时&#xff0c;它已经包含了对J…...

mysql(二)SQL语句

目录 一、SQL语句类型 二、数据库操作 三、数据类型 四、创建 五、查看 六、更改 七、增、删、改、查 八、查询数据 一、SQL语句类型 SQL语句类型&#xff1a; DDL DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09;&#xff1a;用于…...

Unity自定义后处理——Tonemapping色调映射

大家好&#xff0c;我是阿赵。   继续介绍屏幕后处理&#xff0c;这一期介绍一下Tonemapping色调映射 一、Tone Mapping的介绍 Tone Mapping色调映射&#xff0c;是一种颜色的映射关系处理&#xff0c;简单一点说&#xff0c;一般是从原始色调&#xff08;通常是高动态范围&…...

Redis学习 知识总结 一

Redis学习 知识总结 一 1 Redis初识1.1 Redis八大特性1.2 redis使用场景1.3 Docker安装redis 2 API的理解和使用2.1 通用命令2.2 字符串&#xff08;String&#xff09;类型2.3 哈希&#xff08;Hash&#xff09;类型2.4 有序列表&#xff08;list&#xff09;2.5 集合&#xf…...

Webpack5 vue-loader和VueLoaderPlugin

文章目录 vue-loader和VueLoaderPlugin的作用vue-loader具体使用方式注意事项 vue-loader和VueLoaderPlugin的作用 .vue 文件是用户用 HTML-like 的语法编写的 Vue 组件。每个vue 文件都包括三部分 , VueLoaderPlugin 是一个解析 Vue.js 的插件&#xff0c;用于在 webpack 构…...

【传统视觉】模板匹配和卡尺圆检测

模板匹配 粗定位 1、原理&#xff1a;模板匹配是指在当前图像A中匹配与图像B最相似的部分&#xff0c;那么A为输入图像&#xff0c;B为模板图像。 2、匹配方法&#xff1a;B在A上华东&#xff0c;逐个遍历所有像素完成匹配。 3、函数&#xff1a; result cv2.matchTemplate(…...

记一次简单的MySql注入试验

试验环境&#xff1a; 1.已经搭建好的php服务器&#xff0c;并可以通过访问到localhost/index.php&#xff1b; 2.已经安装好数据库&#xff0c;并创建表test&#xff0c;表内有name、age等字段&#xff0c;并随便创建几个假数据用于测试&#xff1b;如图&#xff1a; 开始测…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...