“分布式基础概念”全面解析,让你秒懂分布式系统!【一】

news2024/11/15 21:04:44

前言

在项目中学习这些技术、加深了对其的使用和深层次的理解。以下总结来自谷粒商城项目案例资料

1、什么是微服务?

       微服务架构风格,就像是把一个单独的应用程序开发为一套小服务,每个小服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API。这些服务围绕业务能力来构建,并通过完全自动化部署机制来独立部署。这些服务使用不同的编程语言书写,以及不同数据存储技术,并保持最低限度的集中式理。

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

在这里插入图片描述

2、集群、分布式、节点

集群是个物理形态,分布式是个工作方式。

只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;

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

分布式是指将不同的业务分布在不同的地方

集群指的是将几台服务器集中在一起,实现同一业务

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

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

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

3、远程调用

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

SpringCloud 中使用 HTTP+JSON 的方式完成远程调用

在这里插入图片描述

4、负载均衡

来了一千万个请求,全部压力给到一台服务器。那不是很危险的事情、不如多搞几台服务器、分担一波压力。

       分布式系统中,A 服务需要调用 B 服务,B 服务在多台机器中都存在,A 调用任意一个服务器均可完成功能。
       为了使每一个服务器都不要太忙或者太闲,我们可以负载均衡的调用每一个服务器,提升网站的健壮性。

常见的负载均衡算法:
轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直到最后一个,然后循环。

最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式。

散列:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。

在这里插入图片描述

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

这个也比较容易理解:不同服务之间如何相互感知其存在,各个服务将自身提供的服务注册到注册中心。就好租房,房东先将自己的房源相关信息,提交给中介,然后你就可以通过中介去找房源。

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

在这里插入图片描述
如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的服务

6、配置中心

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

配置中心用来集中管理微服务的配置信息

       比如数据库连接的配置、redis的连接配置、nginx的相关配置、服务注册与发现等的配置。如果每次都去代码中去修改岂不是很麻烦,使用配置中心统一配置管理,就可以很方便的可视化操作界面的形式完成这些配置

在这里插入图片描述

7、服务熔断&服务降级

当调用的远程服务宕机的时候,你还去访问这个服务,那不是瞎扯。等待好久也没反应,最后来个报错。心态炸裂、使用服务熔断机制,当调用的服务死掉的时候,在调用它,直接返回一个默认值。告诉他,我这个服务暂时不提供服务。服务降级、当一个服务被大量访问的时候

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

在这里插入图片描述

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

8、API 网关

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

在这里插入图片描述

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

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

相关文章

Nacos单机搭建并集成项目

Nacos概述 Nacos Nacos是阿里巴巴开源的服务注册中心及配置中心,致力于给开发者提供一款便捷、简单上手的开源框架 Nacos注册中心Eureka 服务配置Config 服务总线Bus 服务发现和服务健康监测 Nacos 使服务更容易注册,并通过DNS或HTTP接口发现其他…

Flutter集成个推推送-安卓原生篇

前言 在众多的集成化推送中选择了个推,个推在flutter集成中还是比较简单的,只需要跟着官网一步一步走就可以了。今天这篇文章不涉及到flutter项目个推的集成,只是记录个推离线走安卓厂商时,进行获取一个离线的点击通知数据。 在…

ChatGPT APIs for HCL DOMINO

大家好,才是真的好。 近期网络上最热闹的话题就是OpenAI的ChatGPT,从去年11月份到现在,一波又一波热潮蜂拥而至,以至于让我们Domino人应接不暇。 ChatGPT和Domino的缘分还真不是完全没有,毕竟刚出来时,很…

Redis(09)centos8下载安装最新redis

redis下载安装 1. 安装make构建工具2. 下载Redis源码包3. 解压源码包并编译4. 配置环境变量5. 注册系统服务6. 设置可远程访问7.防火墙配置: 1. 安装make构建工具 Redis是采用C语言开发的需要编译安装。make是一种自动化编译工具,可以自动编译Redis源代码。 yum install make…

40岁高中老师开源的数据集LAION,改变了生成式AI的未来丨智源大会嘉宾风采

导读 如今,拥有超过50亿个图文对的 LAION数据集已经成为生成式AI未来的中心ーー而随之而来的关于如何监管人工智能的争论也日益激烈。 在德国北部城市汉堡郊区的一栋房屋前,一个信箱上用铅笔潦草地写着一个单词——“ LAION”。这唯一的记号表明&#xf…

jupyter notebook 打开指定文件路径

1 按住winR键,开打运行界面 winR 2 在运行界面输入cmd,进入控制命令行窗口 cmd 4 激活conda环境 conda activate 5 输入要打开的指定路径 #c:\Users\test为要打开的指定路径,用户按需修改即可jupyter notebook c:\Users\test 正常来说,输…

服务注册于发现-Consul

Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。 Consul是分布式的、高可用的、可横向扩展的。它具备以下特性 : 服务发现:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例…

佳能驱动支持,佳能打印机驱动无法安装的解决方法

随着打印机设备的普及,不少用户都会选购一台佳能、惠普、爱普生、兄弟等品牌的打印机,虽然安装打印机及打印机驱动并不难,但也会出现无法安装的情况,只有打印机驱动安装好了才能正常使用佳能打印机设备。以佳能打印机为例&#xf…

关于Vue3刷新页面报错404的解决方法

最近正在写VUE3项目时,遇到了一个问题,页面一刷新就出错。 如下: 查看控制台报错信息是404。 这时候怎么刷新页面都没有用,只能重新输入地址,一想到每次代码发生改变我都要输入一遍地址,那心情都不好了。在…

MongoDB管理神器来袭!NexNoSqlClient让你的效率翻倍!

背景: 如果你在日常工作中需要经常使用MongoDB,那么你一定体验过这样一些痛点;繁琐的脚本编写,冗长的命令行操作,复杂的数据建模和索引等等。这些问题不仅让我们的工作效率低下,还容易出现错误和漏洞,给数…

JavaWeb搭建| Tomcat配置| Maven依赖|这一篇就够了(超详细)

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:老茶icon 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,计…

此主机支持 AMD-V,但 AMD-V 处于禁用状态

此主机支持 AMD-V,但 AMD-V 处于禁用状态问题解决 文章目录 此主机支持 AMD-V,但 AMD-V 处于禁用状态问题解决1、问题原因2、题解决办法 1、问题原因 我win 10 系统电脑安装VMware虚拟机后,在启动虚拟机时提示以下这个错误: 此主…

54页数据中台解决方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 1.3 数据中台是一套解决方案 数据中台是一套可持续“让企业数据用起来”的机制,是一套解决方案,不仅是一个平台。让数据更加灵活地支撑前端业务&…

基于单片机的恒温箱系统设计

以前课设做的小温度传感系统,分享一下! 想要直接用的可以去我资源界面下载,传送门。   老规矩先上效果 本系统以AT89C52、DS18B20温度传感器、DS1302实时时钟、LCD1602液晶显示屏模块、蜂鸣器、固态继电器模块等元件构成一个自动恒温加热装…

windows下Qt程序打包简易流程

还记得刚工作那会儿在接触qt不久后想让编译出来的exe文件能够脱离环境运行,比如写个小软件能让其在其他人电脑上动起来,满足一下小小的虚荣心。当时好像挺麻烦的(或许当时自己还是了解的太少),有个同事告诉了我一个办法…

NUMA详解

目录 NUMA简介 NUMA开启与关闭 查看系统是否支持 关闭方法 numactl --hardware介绍 没有安装numactl工具下查看NUMA架构节点数: 查看每个NUMA节点的CPU使用情况: 看每个NUMA节点的内存使用情况: 查看NUMA下指定进程的运行情况 创建…

企业如何选择一款适合自己的信息化管理系统?

信息化这个词近年来已经说“烂”了,在这个信息化快速发展的时代,企业信息化管理系统已经成为了企业发展的必要条件之一。 但是,随着市场上信息化产品的爆发式增长,企业在选择适合自己的信息化管理系统时,常常会感到眼…

博弈论又称对策论的入门及在军事博弈问题上的简单实战

学习知识要实时简单回顾,我把学习的博弈论简单梳理一下,方便入门与复习。 博弈论模型 博弈论简介 社会及经济的发展带来了人与人之间或团体之间的竞争及矛盾,应用科学的方法来解决这样的问题开始于 17 世纪的科学家,如 C.&#…

Etcd 可视化管理工具,GUI 客户端

Etcd Assistant——Etcd 可视化管理工具,GUI 客户端 下载地址:http://www.redisant.cn/etcd 主要功能: 支持多标签页,同时连接到多个集群以漂亮的格式显示JSON、XML、MessagePack、十六进制等数据格式浏览、创建、编辑、删除键…

blender的一些使用

导入一个glb文件 可能整体是一个模型 我是看视频 看到可以建筑模型分成了两部分(顶面和侧面) 然后就一直尝试 首先需要学会的是如何在blender 中修改材质 先按tab 进入编辑模式 选第三个面选择 然后选择一个面以后 选择材质 那个圆的 然后加号 新建…