谷粒商城学习笔记(一):分布式基础概念

news2024/11/28 18:54:45

分布式基础概念

  • 1. 微服务
  • 2. 集群&分布式&节点
  • 3. 远程调用
  • 4. 负载均衡
  • 5. 服务注册/发现&注册中心
  • 6. 配置中心
  • 7. 服务熔断&服务降级
  • 8. API网关

1. 微服务

微服务架构风格,就是把一个单体架构按照业务拆分成多个服务模块,每个模块之间独立部署运行、互不影响,并使用轻量级机制通信,通常是 HTTP API。

2. 集群&分布式&节点

集群是个物理形态,分布式是个工作方式。
只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;

《分布式系统原理与泛型》定义:

“分布式系统是若干独立计算机的集合, 这些计算机对于用户来说就像单个相关系统”,分布式系统(distributed system)是建立在网络之上的软件系统。

分布式是指不同的业务分布在不同的地方。
集群指的是将几台服务器集中在一起,实现同一业务。

例如:京东是一个分布式系统,众多业务运行在不同的机器,所有业务构成一个大型的业务集群。每个小的业务,比如用户系统,访问压力大的时候一台服务器是不够的。我们就应该将用户系统部署到多个服务器,也就是每个业务系统也可以做集群化。用户会感觉他是在使用一个系统,而不是在使用一堆计算机。

分布式中的每一个节点(节点:集群中的一个服务器),都可以做集群。而集群并不一定是分布式的。

3. 远程调用

在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免地需要互相调用,我们称为远程调用。

SpringCloud 中使用 HTTP+JSON 的方式完成远程调用,因为HTTP 和 JSON 天然地支持跨平台。

image_name

4. 负载均衡

负载均衡的意思是,A服务发送请求给B服务,B服务为了保证集群中的每个机器能够处理的请求数量尽可能均匀一些,从而做出的一些操作,就是负载均衡算法。

常见的负载均衡算法:

  • 轮询:第一个请求选择交给连接池中第一个后端服务器去处理,然后依次往后选择,直到最后一个,然后循环。
  • 最小连接:优先选择连接数最少,也就是压力最小的服务器,在会话比较长的情况下,可以考虑采取这种方式。
  • s散列:根据请求源的 IP地址 的散列(hash)来选择要转发的服务器。同一个IP地址(即同一个用户)的请求,都会被传到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采用这种方式。

5. 服务注册/发现&注册中心

A服务调用B服务,A服务并不知道当前在哪几台服务器上有B服务,哪些服务器是正常的,哪些服务器是下线的。解决这个问题可以引入注册中心:

image_name

如果某些服务下线,我们其他人可以实时地感知到其他服务的状态,从而避免不可用的服务。

6. 配置中心

每一个服务最终都有大量的配置,并且每个服务都可能部署在多台机器上。但是我们经常需要变更配置,所以可以设计一个配置中心,让服务器自动去配置中心获取自己的配置。

image_name

7. 服务熔断&服务降级

在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,有可能连锁效应地造成所有的服务都不可用,从而造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务。

image_name

1)服务熔断
a. 设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后面的请求不再去调用这个服务。本地直接返回默认的数据。
2)服务降级
b. 在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行,比如:双十一的时候,会让非核心业务降级,将腾出来的其服务器资源用到更重要的地方。降级:某些服务不处理,或者简单处理(抛异常、返回NULL、调用Mock数据、调用 Fallback 处理逻辑)

8. API网关

API Gateway 抽象了微服务中都需要的公共功能,同时提供了客户端负载均衡、服务自动熔断、灰度发布、统一认证、限流流控、日志统计等丰富的功能,帮助我们解决很多 API 管理难题。

本项目是采用前后端分离,需要通过 HTTP 进行通信,当请求从客户端发送到服务器的期间,HTTP请求会先经过网关,这个网关就相当于安检入口,检查请求是否合法,如果合法,就可以放行。当请求量暴增的时候,网关也能够让请求以恒定速度放行。

image_name

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

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

相关文章

C标准库——字符串函数反汇编分析

1、前置概念补充 test:逻辑与,如果是1,zf就是1,如果是0,zf就是0 可以还原成等价的高级语言,理解代码逻辑,但是不一定是源代码 大写的A:41,小写a:61 asci…

manacher——马拉车算法(图文详解)

文章目录 简要介绍实际应用算法详解 简要介绍 马拉车算法,Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法,是一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性O(N)。 实际应用 刷…

ChatGPT让沟通更智能、更便捷

ChatGpt是最近引起强烈关注的一种技术,它可以实现聊天机器人,为使用者解决复杂的信息获取和学习任务。但他也不仅仅是一个聊天机器人,它是一种基于深度学习算法的自然语言生成模型,由OpenAI公司开发。它可以模拟人类的对话方式&am…

AICG - Stable Diffusion 学习思考踩坑实录(待续补充)

关于模型 如果模型中没有各种角度的脚和手,无论你再怎么费劲心思,AI 都画不出来,目前C 站也没有什么好脚的例子,正面脚背面脚,但是没有侧面脚,脚这块还是很欠缺,希望未来有大牛能训练出来美脚 …

Python头歌合集(题集附解)

目录 一、Python初识-基本语法 第1关:Hello Python! 第2关:我想看世界 第3关:学好Python 第4关:根据圆的半径计算周长和面积 第5关:货币转换 二、turtle简单绘图 第1关:英寸与厘米转换 第2关&#xff1…

【MySQL数据库 | 第十篇】DCL操作

目录 🤔 前言: 🤔DCL介绍: 🤔1.DCL管理用户: 1.查询用户: 图示: 2.创建用户 示例1: 运行结果:​ 示例2: 运行结果:​ 3.修改…

基于html+css的图展示116

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

色环电阻出现的年代以及如何快速记忆计算

上次群里面大家兴趣盎然地讨论着几颗开关电源上面的色环电阻的读数。因为开关电源上面比较特殊,会出现几颗阻值很小的电阻(小于1欧姆的)。大家又非常感兴趣地重温了色环的计算方法。 色环的口诀我总结的是:黑,棕红橙&…

插件化技术

插件化技术 一.概述二.原理三.好处四.插件化涉及到的技术以及常用的插件化框架五.详细说明1.第一个问题:类加载(1)Android 项目中,动态加载技术按照加载的可执行文件的不同大致可以分为两种:(2)…

本地安装 Stable Diffusion 教程 Mac 版本

前面两篇讲了如何用免费的网络资源搭建 Stable Diffusion,有朋友问,有没有在本地搭建的教程。 以 MacBook Pro 为例,下面是安装步骤。 前置要求:Homebrew,Python 3.0。 如未安装Homebrew,请按照https://bre…

CASAIM与北京大学达成科研合作,基于3D打印技术加快力学性能试验分析,实现高效的力学结构设计和力学测试

近期,CASAIM与北京大学达成科研合作,基于3D打印技术进行力学性能试验分析,快速制造各种力学测试样件,从而实现高效的力学结构设计和力学测试。 北京大学是我国教育部直属的全国重点大学,位列国家“双一流”A类 、“985…

SpringBoot的宠物医院管理系统(有文档)

SpringBoot的宠物医院管理系统 本项目适合用来学习,以及二次开发,分享下 简介 1.访问地址 http://localhost:8080/ 超级管理员账户 账户名:admin 密码:admin123 宠物医生 账户名: laozhang 密码:12345…

异常检测学习笔记 二、基于角度和深度的极值分析技术

一、异常检测的概率模型 为您的数据选择合适的模型,选择一个概率阈值,低于该阈值将数据标记为异常,计算观察数据中每个实例的概率,低于阈值的情况属于异常情况。 研究表明,世界杯比赛的进球数可以很好地近似于泊松分布。在一场比赛中进n球的概率由下式给出: ,其中λ是每…

IP地址与MAC地址

引言(有基础的同学可以不看):在复杂的网络通信中,有茫茫多的数据在中传输,它们是如何在相隔一步一步寻找到对方的呢? 网络通信的基本结构https://blog.csdn.net/qq_68140277/article/details/130937717?sp…

OpenStack部署(五)

OpenStack部署 11. 启动一个实例11.1 获取凭证11.2 创建虚拟网络11.3 创建主机规格11.4 生产环境的规格推荐11.5 生成一个键值对11.6 增加安全组规则11.7 创建块设备存储11.8 创建实例 12. 资源整理12.1 用到的端口12.2 openstack各组件常用命令1. openstack命令2. nova的常用命…

chatgpt赋能python:Python怎么5个一行?——提高代码可读性的方法

Python怎么5个一行?——提高代码可读性的方法 在Python编程中,提高代码可读性是非常重要的。然而,如果代码缩进不当,代码块就会非常难以辨认。那么,如何在不影响代码可读性的情况下使代码更清晰易懂呢?本文…

javaScript蓝桥杯---一起会议吧

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 网络会议已经成为当下最流行的会议模式,为网络会议提供支持的当然是一些优秀的会议软件。 本题需要在已提供的基础项目中使用 Vue 2.x 知识完善代码,最终实现网络会议软件中,参会人…

javaScript蓝桥杯----权限管理

目录 一、介绍二、准备三、目标四、代码五、知识点六、完成 一、介绍 你有没有想过,在我们日常浏览的网页中,那些新闻或者商品内容是如何被输入到数据库中的呢?大家虽然没有用过,但是肯定听过“后台管理系统”,运营人…

从零开始的软路由之爱快虚拟机搭建openwrt

缘起 上篇文章我们介绍了爱快软路由的搭建方法,成功了实现了软路由的初级布置——能上网了。接下来就是搭建双软路由中的另一个openwrt了,上期介绍了爱快的特点,主要是用来多拨,分流,流控等操作,在这些方面…

maven 插件 assembly 打tar.gz包

maven 插件 assembly 打tar.gz包 一、项目目录二、pom文件1. profiles2. plugins3. resource 三、assembly.xml四、application.yml五、启动脚本1. start.sh2. stop.sh 六、执行 mvn 打包命令七、tar.gz 包上传服务器并解压八、执行 start.sh 启动脚本九、访问 swagger GitHub:…