springcloud alibaba微服务框架涉及的技术

一、微服务架构中核心模块及其使用技术总览

二、各模块详细说明

1、注册中心

该模块主要功能为 自动提供服务的注册与发现,集中式管理服务,让 服务调用端发现服务服务提供端注册服务,倘若没有注册中心,那客户端就需要维护服务端调用信息(ip、端口),另外这样操作服务调用端是无法感知服务提供端的健康状态,需要人为添加与剔除服务,维护成本高,因此需要注册中心来帮助我们来完成这些事儿。

相应技术栈对比:

注:上表AP、CP是指CAP理论

2、服务调用

该模块主要功能为负责各微服务之间的通讯, 实现服务端的远程调用,常见技术有,RestTemplate、Feign、OpenFeign。

服务调用框架对比:

3、均衡负载

该模块主要功能是负责将 请求经过一定策略均衡的分配到服务端,当我们的服务提供端同一个服务配置额多个实例(集群)时,就需要负载均衡模块协助分配请求到对应服务实例,如果服务配置单个,就不要此模块,但是为了保证高可用都会配置多个实例。

常见负载均衡策略:轮询、随机、权重轮询、ip hash、根据响应时间计算、最优策略

负载均衡模块对比:

4、服务降级、熔断(容错)

服务降级、熔断、限流是微服务架构保证高可用的得力助手,之所以出现这三兄弟,是因为我们的微服务与微服务直接相互调用,错综复杂,调用链路很长,如果微服务体系中某个服务宕机,就会造成微服务系统瘫痪,如下图:

服务降级: 在服务调用(消费)端做的一种兜底措施,当服务器处理结果不符合预期(服务响应超时、服务出错、宕机等),就把兜底的结果返回客户,以此保证服务消费方正常运行,不至于死等服务器结果,链路积压崩溃。

服务熔断:发生在服务提供方,包含三个状态,降级->熔断->恢复。当满足熔断条件时就会触发熔断,触发熔断首先会降级处理,返回兜底数据,然后开启熔断,熔断开启后,不管三七二十一,请求正确与否,都会在一段时间内返回兜底数据,然后尝试恢复,也就是放行请求,如果请求处理正常,就会关闭熔断。(后面章节会代码演示)

服务限流:服务限流是为了让服务器平稳的处理请求,也是对服务的一种保护措施,不至于把服务拖死,比如我的服务10S内最多同时处理50个请求,突然间来了100个请求,50个以外要么排队要么丢弃,同一时间内我的服务只处理50个请求,如果不做限流,100个请求压在服务端,服务器忙不过来的!就有崩溃风险。

常见主流的技术: HyStrix、Sentinel、Resilience4j(国外使用)

5、服务网关

网关是在我们的微服务基础上在封装的一层服务,网关后面是我们系统的各个微服务,负责转发前端请求到各个服务,就像公司前台一样,公司外部人员首先接触的是前台人员,再由前台人员对接公司内部人员。

一般网关主要包含三个模块:断言(根据配置决定是否进行下一步)-> 路由匹配 -> 路由转发,网关是微服务体系重要的环节,他能保护我们的服务不被侵害,同时还能做鉴权全局日志采集容错限流、反向代理

目前主流技术为getway,zuul已经跟不上时代步伐了,因为他底层采用的是servlet,servlet是一种阻塞io,满足不了高并发场景,而且不支持任何长连接,而getway后期新秀,底层采用netty做支撑,是一种异步非阻塞io,处理请求能力远远强于 servlet。

6、配置中心

配置中心的存在主要是为了解决大量微服务下的公共配置以及动态配置问题,我们都知道,每个微服务是由springboot做支撑,每个springboot项目都会有一个application的配置文件,如果某些配置发生变化,得一个一个服务去修改,这样加大维护工作量,特别是运维老哥! 另外每次修改配置还得重启服务,因此对动态配置也有强烈需求,基于这样的背景而产生配置中心模块。

常见配置中心技术支持有: springCloud config,nacos。

7、服务总线

服务总线,顾名思义他是为我们所有服务提供服务,在微服务体系中通常会有一些公共的消息,比如上步骤提到的动态配置,就需要服务总线的支撑,各个微服务向服务总线订阅消息,进而监听总线,当总线发生变动时,订阅的服务可以感知,然后同步更新自己,服务总线一般搭配着消息中间件,如RabbitMq(MQ)、kafka等,此外服务总线还具有定点通知某个或多个服务的功能

总之服务总线就像一个妈妈管着一群孩子一样,通过妈妈向所有孩子或者某个孩子传达消息,从而改变孩子的某些行为或功能。

常见技术支撑有: springcloud bus,nacos

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

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

相关文章

Leetcode—2079. 给植物浇水【中等】

2024每日刷题&#xff08;130&#xff09; Leetcode—2079. 给植物浇水 实现代码 class Solution { public:int wateringPlants(vector<int>& plants, int capacity) {int ans 0;int step 0;int cap capacity;bool flag false;for(int i 0; i < plants.siz…

基于双经度模型的鱼眼图像畸变校正

文章目录 1. 简介2. 基本原理基本思路从目标图到半球面模型的投影从半球面模型到鱼眼图像的投影正交投影等距投影 3.实际效果示例论文中的原图去畸变 4. 有意思的玩法5. 对生成的鱼眼图去畸变 1. 简介 算法来自论文《基于双经度模型的鱼眼图像畸变矫正方法》 2. 基本原理 基本…

揭秘LLMOps,高效开发大型语言模型

大家好&#xff0c;随着人工智能&#xff08;AI&#xff09;的蓬勃发展&#xff0c;一个新兴领域语言模型运维&#xff08;LLMOps&#xff09;正逐渐成为关注的焦点。LLMOps专注于对大型语言模型&#xff08;LLMs&#xff09;&#xff0c;例如OpenAI的GPT系列&#xff0c;进行全…

uni-app 多列picker切换列显示对应内容

html部分&#xff1a; <view class"uni-list"><view class"uni-list-cell"><view class"uni-list-cell-left">选择用户</view><view class"uni-list-cell-db"><picker mode"multiSelector"…

Day 44 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包理论基础 ​ 完全背包和0-1背包的最大区别在于完全背包里的每个物品的数量都是无限个&#xff0c;而0-1背包每个物品只有一个&#xff1b; 内嵌循环遍历顺序 ​ 回顾一维数组0-1背包的遍历递推公式&#xff1a; for (int i 0&#xff1b; i < weight.size(); i)…

软件工程经济学--期末复习资料

软件工程经济学--期末复习资料 前言第一章 绪论第二章 软件工程经济学基础第三章 软件的成本管理与定价分析第四章 软件工程项目评价方法与经济效果评价第五章 软件生产函数、效益分析及不确定性分析第六章 软件工程项目进度计划的制定结尾总结 前言 软件工程经济学&#xff0…

CSS-伪类选择器

结构伪类选择器 作用&#xff1a;根据元素的结构关系查找元素 分类&#xff1a; 选择器说明元素名:first-child查找第一个元素元素名:last-child查找最后一个元素元素名:nth-child(N)查找第N名元素 <!DOCTYPE html> <html lang"en"> <head><me…

机柜风扇KTS011温湿度控制器KTO011风机控制温控器机械开关温控仪

品牌&#xff1a;威驰 型号&#xff1a;KTS011常开 产地&#xff1a;中国大陆 颜色分类&#xff1a;KTS011常开,KTO011常闭 KTS011与KTO011的区别 KTS011&#xff0c;常开型&#xff0c;可搭配风扇/风机使用&#xff1a;当环境温度超过温控器设定温度&#xff0c;温控…

2024高校网络安全管理运维赛wp

文章目录 misc签到钓鱼邮件识别easyshellSecretDBGatewayzipApachef for r webphpsqlMessy Mongo misc 签到 钓鱼邮件识别 两部分解base64&#xff0c;各一个flag 后面没有什么地方有有用信息了&#xff0c;根据题目钓鱼邮件&#xff0c;可能第三段flag就跟DMARC、DKIM 和 SP…

出海企业哪种组网方案更省事?

对于出海企业而言&#xff0c;建立跨地区的数据传输和协同工作至关重要&#xff0c;以提升运营效率。因此&#xff0c;网络构建变得迫在眉睫。通过构建企业组网&#xff0c;企业能够加强与海外分支、客户和合作伙伴之间的联系&#xff0c;加速海外业务的发展。 然而&#xff0c…

【C语言】—— 动态内存管理

【C语言】——动态内存管理 一、动态内存管理概述1.1、动态内存的概念1.2、动态内存的必要性 二、 m a l l o c malloc malloc 函数2.1、函数介绍2.2、应用举例 三、 c a l l o c calloc calloc 函数四、 f r e e free free 函数4.1、函数介绍4.2、应用举例 五、 r e a l l o …

postgresql中写python去读取HDFS数据,像表一样使用。

简介 首先postgresql是支持python的&#xff0c;在安装postgresql数据库的时候需要执行python支持。可以使用python进行写fundcation 自然也就可以自定义funcation去读取HDFS文件&#xff0c;以此替换掉hive的&#xff0c;省去中间频繁切换服务器的麻烦。 安装postgresql use…