gulimall-002 分布式基础概念

1、微服务概念

微服务是一种非常流行的架构风格。

拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行。

  • 每个服务运行在自己的单个进程
  • 使用轻量级机制通信
  • 可以使用不同的编程语言编写以及不同的数据存储技术

2、集群&分布式&节点

2.1 集群概念

集群是个物理形态,只要是一堆机器就可以叫集群。它们是不是一起协作干活,还是各自干各自的,这个谁也不知道。

2.2 分布式概念

分布式是个工作方式,分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统,比如京东商城。

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

通俗来说,可以将分布式和集群比作一群人在搬家的例子:

  • 集群:一群人在一起搬家,他们可以共同完成同一个任务。如果其中一个人出了问题,其他人可以继续完成这个任务,所以整个任务可以更快地完成。同样,如果需要搬到更大的房子,只需增加更多的人即可。这里每个人扮演的角色是相同的,即每个人都是负责搬家的工人。
  • 分布式:一群人分成几组,分别搬不同的东西,例如有一组负责家具,一组负责装饰品等。每个组都有自己的领导,并且他们必须同步完成各自的任务,以便整个搬家过程能够成功。同样,如果需要搬到更大的房子,可能需要增加更多的组,而不是增加更多的人。这里每个人扮演的角色是不同的,即每个人都有自己的职责和任务。

因此,集群通常用于处理同一任务的场景,例如 Web 服务器集群,而分布式则更适用于处理不同任务的场景,例如大规模的数据处理。

总之,尽管分布式和集群都可以提高系统的可靠性、扩展性和性能,但它们之间有一些细微的区别,需要根据具体的情况来选择最合适的技术。

总结:

节点:集群中的一个服务器

  • 分布式中的每一个节点都可以做集群
  • 而集群不一定就是分布式的

3、远程调用

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

比如 订单模块 去 商品模块 查询商品信息。

4、负载均衡 

分布式系统中,A服务需要调用B服务(如订单模块调用商品模块),B服务在多台机器中都存在,A服务调用任意一台B服务都可以完成功能。

  • 负载均衡的思想:不让某个机器太忙,也不要让某个机器太闲。
  • 负载均衡的好处:提高系统的健壮性和性能。

常用的负载均衡算法:

  • 轮询
    • 按顺序往后依次选择,直到选择最后一个,依次循环。
  • 最小连接
    • 优先选择连接数最小的机器,也就是压力最小的后端服务器(在会话较长的情况下,优先考虑这种情况)

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

A服务调用B服务,A服务并不知道B服务在哪几台机器上面,哪些是正常的,哪些服务已经下线,解决这些问题可以引入服务注册。避免调用不可用的服务。

6、配置中心

每个服务最终都有大量的配置,并且每个服务都可能部署在多个机器上面,我们经常需要变更某个服务的配置,设想一下假如我们有几百台服务器,难道要进入每一台进行改动配置并重新部署吗?显然不合理。所以就有了配置中心的存在了。

配置中心用于集中管理微服务的配置信息,一处配置,改动都会改。

7、服务熔断&服务降级 

在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当1台服务器不可用,有可能造成雪崩效应,要避免这种情况,必须要有容错机制保护服务。

  •  服务熔断

设置服务超时,当调用的服务达到某个阀值,我们可以开启断路保护机制,后来的服务不再调用这个服务,而是本地直接返回默认的数据。

  • 服务降级

当系统处于资源紧张时期,我们可以让非核心业务降级运行,降级:某些服务不处理,或则简单处理(返回异常,返回null,调用Mock数据)

8、API网关

APIGateway可以理解成生活中的安检系统。

在微服务架构中,API Gateway作为整体架构的重要组件,它抽象了微服务中都需要的公共功能,同时提供了:

  • 客户端的负载均衡
  • 服务自动熔断
  • 灰度发布
  • 统一认证
  • 限流流控
  • 日志统计

等功能。帮我们解决了很多API管理难题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣:63. 不同路径 II(动态规划)

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

14个强大的JS库

文章目录 一、前言二、Handsontable:高效的数据网格处理库2.1、数据绑定和验证2.2、过滤和排序2.3、文件导出2.4、多框架兼容性2.5、丰富的附加功能2.6、GitHub受欢迎程度 三、Calendar:全功能可定制日历库3.1、多种视图类型3.2、任务和里程碑管理3.3、鼠…

【报错处理】opencv-3.4.1安装报错 error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]

description 最近在复现ORB-SLAM2的时候配置 opencv-3.4.1的环境, 官网下载的opencv-3.4.1 source文件, 原封不动地解压后按照该指导方法安装和编译, 在make的过程中, 出现了编译错误 (截图忘记了),具体报错如下: error: invalid conversion from ‘const char*’ …

【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战

🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS &…

2023年03月09日_谷歌视觉语言模型PaLM-E的介绍

自从最近微软凭借OpenAI 和ChatGPT火了一把之后呢 老对手Google就总想着扳回一局 之前发布了硬刚ChatGPT的Bard 但是没想到翻车了 弄巧成拙 所以呢Google这一周又发了个大招 发布了史上最大的视觉语言模型PaLM-E 这个模型有多夸张呢 参数量高达5,620亿 是ChatGTP-3的三…

[spark] SaveMode

https://spark.apache.org/docs/latest/api/java/index.html?org/apache/spark/sql/SaveMode.html Overwrite 覆盖模式是指将DataFrame保存到数据源时,如果数据/表已经存在,则现有数据将被DataFrame的内容覆盖。 注意: Overwrite 模式会覆盖已存在的表…

9种卷积注意力机制创新方法汇总,含2024最新

今天咱们来聊聊卷积注意力机制。 相信各位在写论文的时候都苦恼过怎么更好地改模型,怎么更高效地提高模型的性能和泛化能力吧?我的建议是,不妨考虑考虑卷积注意力。 卷积注意力机制是一种通过关注输入数据中的不同部分来改进模型性能的方法…

《Linux系统与网络管理》复习题库---shell编程题

1、shell 编程题:在根目录下有四个文件 m1.c,m2.c,m3.c,m4.c,用 Shell 编程,实现自动创建 m1,m2,m3,m4 四个目录,并将 m1.c,m2.c,m3.c,m4.c 四个文件分别剪贴到各自相应的目录下。 #!/bin/bash…

Termius for Mac/Win:一站式终端模拟器、SSH 和 SFTP 客户端软件的卓越选择

随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…

英语长难句分享第十五天解析

群公告 长难句分享第十五天解析 【词汇】: • mispredict [ˌmɪsprɪˈdɪkt] v. 错误预测 • mechanical [məˈknɪkl] adj. 机械的 • everyday [ˈevrideɪ] adj. 日常的 • helicopter [ˈhelɪkɑːptər] n. 直升机 • eventually [ɪˈventʃuəli] adv. …

AI 开发必看的 6 款开源矢量数据库

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。 如果我的分享对你有帮助,请关注我,一起向上进击。 创作不易,希望大家给一点鼓励,把公众号设置为…

starrocks集群fe/be节点进程守护脚本

自建starrocks集群,有时候服务会挂掉,无法自动拉起服务,于是采用supervisor进行进程守护。可能是版本的原因,supervisor程序总是异常,无法对fe//be进行守护。于是写了个简易脚本。 #!/bin/bash AppNameFecom.starrock…

jmeter接口测试02

jmeter接口测试02 新增测试计划用户自定义变量http请求默认值http头部管理器线程组HTTP请求HTTP响应断言 创建查看结果树和总结报告启动线程组,查看结果树和总结报告 新增测试计划 用户自定义变量 定义测试计划常用的变量 例如token、接口的ip、端口等。 http请求…

cargo(rust包管理) 常见命令、包检索 (windows+linux)

rust环境和开发环境配置:rust开发环境配置 winlinux Cargo是Rust的构建系统和包管理器。 如果你的能力足够强也愿意,可以不用cargo进行rust开发,即从头开始敲代码 一、cargo包相关查询 1.查找包 查找cargo包链接:crates.io …

视频编辑与制作,视频尺寸修改器

你是否曾因为视频尺寸与平台不匹配无法上传而烦恼?这个时候一款视频尺寸修改工具,就能帮你轻松搞定。不论是为了适应不同的平台要求,还是为了获得不一样的观看体验,【视频剪辑高手】都能为你提供完美的解决方案。 所需工具&#…

layui表格中预览视频和图片

全代码 <!DOCTYPE html> <html><head><title>Layui&#xff1a;数据表格table中预览图片、视频</title><meta charset"utf-8"/><link rel"stylesheet" href"../dist/css/layui.css"><style>&l…

Python 下载与安装

1、下载 打开Python官网&#xff1a;Welcome to Python.org 点击下图所示的【Downloads】按钮进入下载页面。 ​ 进入下载页面后下拉至下图位置&#xff0c;选择版本&#xff0c;点击下载按钮下载。 页面会跳转至下一页下载页面&#xff0c;下拉到下图位置&#xff0c;选择…

【实用工具】Gradio快速部署深度学习应用1:图像分类

前言 在AI快速发展的今天&#xff0c;我们作为算法开发人员&#xff0c;也应该有一些趁手的工具帮助我们快速开发并验证自己的想法&#xff0c;Gradio可以实现快速搭建和共享的功能&#xff0c;能够展示出一个前端界面&#xff0c;把我们的算法包裹起来&#xff0c;快速验证算…

(JAVA)-(网络编程)-初始网络编程

网络编程就是在通信协议下&#xff0c;不同的计算机上运行的程序&#xff0c;进行的数据传输。 讲的通俗一点&#xff0c;就是以前我们写的代码是单机版的&#xff0c;网络编程就是联机版的。 应用场景&#xff1a;即时通信&#xff0c;网游对战&#xff0c;金融证券&#xf…

用通俗易懂的方式讲解大模型:使用 LangChain 封装自定义的 LLM,太棒了

Langchain 默认使用 OpenAI 的 LLM&#xff08;大语言模型&#xff09;来进行文本推理工作&#xff0c;但主要的问题就是数据的安全性&#xff0c;跟 OpenAI LLM 交互的数据都会上传到 OpenAI 的服务器。 企业内部如果想要使用 LangChain 来构建应用&#xff0c;那最好是让 La…
最新文章