【挑战30天首通《谷粒商城》】-【第一天】03、简介-分布式基础概念

文章目录

  • 课程介绍 ( 本章了解即可,可以略过)
  • 1、微服务
        • 简而言之:
  • 2、集群&分布式&节点
    • 2.1、定义
    • 2.2、示例
  • 3、远程调用
  • 4、负载均衡
        • 常见的负裁均衡算法:
  • 5、服务注册/发现&注册中心
  • 6、配置中心
  • 7、服务熔断&服务降级
        • 7.1、服务熔断
        • 7.2、服务降级
  • 8、API网关
  • one more thing
    • 废话不多说上教程:(动画教程 + 图文教程)
    • 一、动画教程
      • 激活 与 升级(至最新版本)
    • 二、图文教程

课程介绍 ( 本章了解即可,可以略过)

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

1、微服务

微服务架构风格

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

2、集群&分布式&节点

2.1、定义

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

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

只要是一堆机器,就可以叫集群

  • 他们是不是一起协作着干活,这个谁也不知道;《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”分布式系统(distributedsystem)是建立在网络之上的软件系统。

2.2、示例

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

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

3、远程调用

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

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

在这里插入图片描述

4、负载均衡

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

常见的负裁均衡算法:
  • 轮询 : 为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直到最后一个,然后循环
  • 最小连接 : 优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式。
  • 散列 : 根据请求源的IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器可以考虑采取这种方式

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

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

在这里插入图片描述

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

6、配置中心

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

  • 每一个服务最终都有大量的配置
  • 每个服务都可能部署在多台机器上
  • 我们经常需要变更配置

我们可以让每个服务在配置中心获取自己的配置
在这里插入图片描述

7、服务熔断&服务降级

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

在这里插入图片描述

7.1、服务熔断

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

7.2、服务降级

在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行降级
降级:某些服务不处理,或者简单处理【抛异常、返回 NULL、调用 Mock 数据、调用 Fallback 处理逻辑】。

8、API网关

在微服务架构中,API Gateway作为整体架构的重要组件,

  • 抽象微服务中都需要的公共功能
  • 同时提供了客户端负载均衡
  • 服务自动熔断
  • 灰度发布
  • 统一认证
  • 限控
  • 日志统计

  • 丰富的功能,帮助我们解决很多 API管理难题。

在这里插入图片描述

one more thing

程序员的烦恼

  • 为激活编程软件到处找激活码(JetBrains 全家通)
  • 苦于JetBrains 正版授权太贵而放弃
  • 学习资料贵且不成体系而躺平

关注公众号金榜探云手

你可以获得什么?

  1. JetBrains 最新激活码,永久更新(只供娱乐,切勿商用)
    公众号回复:00cs
  2. JetBrains 正版授权,全主题、全插件免费使用,一年一杯咖啡钱, 公众号回复:vip
  3. IT 技术视频共享(国内外全系列,只对粉丝开放)

付费版Idea百科全书,和Pycharm使用百科全书全部输出整理了,这些工具都掌握了对编码效率肯定是有本质上的提升,配合Github Copilot基本能让工具完成大部分开发工作,专注完成业务实现就好。

IDEA付费版使用百科全书
https://ziby0nwxdov.feishu.cn/docx/MiCfdogB4omIa9xlW50cByiGn5n

Pycharm付费版使用百科全书 https://ziby0nwxdov.feishu.cn/docx/DArFdVFQpomfUvxV7xZcCwXYn0c

废话不多说上教程:(动画教程 + 图文教程)

一、动画教程

激活 与 升级(至最新版本)

  • 激活
    请添加图片描述
  • 升级最新版本

请添加图片描述

二、图文教程

  • 点击进入

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

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

相关文章

NVIDIA: RULER新测量方法让大模型现形

1 引言 最近在人工智能系统工程和语言模型设计方面的进展已经实现了语言模型上下文长度的高效扩展。以前的工作通常采用合成任务,如密钥检索和大海捞针来评估长上下文语言模型(LMs)。然而,这些评估在不同工作中使用不一致,仅揭示了检索能力,无法衡量其他形式的长上下文理解。 …

(1day)致远M3 log 敏感信息泄露漏洞(Session)复现

前言 系统学习web漏洞挖掘以及项目实战也有一段时间了,发现在漏洞挖掘过程中难免会碰到一些历史漏洞,来帮助自己或是提高自己挖洞和及时发现漏洞效率,于是开始创建这个专栏,对第一时间发现的1day以及历史漏洞进行复现,来让自己更加熟悉漏洞类型以及历史漏洞,方便自己在后续的项…

为什么会查询不到DNS信息?怎么排查?

DNS(域名系统)是将域名转换为相应 IP 地址的关键系统。查询 DNS 信息具有重要作用,通过查询 DNS 信息,我们可以知道域名对应的 IP 地址,这是最主要的信息,使设备能与目标服务器进行通信;其次是域…

微信小程序03: 获取不限制的小程序二维码

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.1 上文小总结1.1.2 上文传送门 2. 获取不限制二维码操作2.1 准备工作2.1.1 请先复制00篇的统一封装代码2.1.2 修改配置文件中的参数 2.2 具体代码使用与注释如下2.2.1 业务代码如下2.2.2 代码解释(一)[无需复制]2.2.3 创建Base6…

每日一题5:Pandas-修改列

一、每日一题 一家公司决定增加员工的薪水。 编写一个解决方案,将每个员工的薪水乘以2来 修改 salary 列。 返回结果格式如下示例所示。 解答: import pandas as pddef modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame:employees.loc[…

C语言之数据结构之栈和队列的运用

目录 1. 用队列实现栈1.1 思路讲解1.2 代码实现 2. 用栈实现队列1.1 思路讲解1.2 代码实现 总结 •͈ᴗ•͈ 个人主页:御翮 •͈ᴗ•͈ 个人专栏:C语言数据结构 •͈ᴗ•͈ 欢迎大家关注和订阅!!! 1. 用队列实现栈 题目描述: 请你仅使用两个…

uniapp 自定义App UrlSchemes

需求:外部浏览器H5页面,跳转到uniapp开发的原生app内部。 1、uniapp内部的配置: (1)打开manifest->App常用其他设置,如下,按照提示输入您要设置的urlSchemes: (2&am…

如何更好地使用Kafka? - 故障时解决

要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现&#…

自签名进行免杀

文章目录 什么是自签名使用cmd生成自签名文件对EXE进行签名将PFX签名使用脚本安装到受信任的根证书颁发机构 什么是自签名 在对抗AV/EDR中使用签名文件是一种很好的策略,拥有签名也就意味着是安全的程序, 大多数AV是不会杀签名程序的,但是签名程序的获取往往比较麻烦使用过期签…

RabbitMQ之消费者并发消费

为什么要引入消费者的并发消费? 当生产者的推送速度是远远超过消费者的能力的,可以提高消费者的消费速度。比如在java中我们可以启动多个 JVM 进程,实现多进程的并发消费,从而加速消费的速度,在mq中也可以通过设置配置…

Momentum靶机系列Momentum2

先进行arp扫描: 获得渗透靶机的IP:192.168.13.142 扫描一下靶机的使用的端口: 具有tcp端口和http服务的80端口 可以扫描一下80端口的http服务: 可以发现一个网站:http://192.168.13.142 打开该网址: 查看…

error code [1449]; The user specified as a definer (‘root‘@‘%‘) does not exist

其实就是说我的root用户权限不够,那就要加上权限,网上其他地方也有好多处理办法,但是要注意数据库版本。我用的是MySQL8.0.32版本,我是这样处理的,简单可行: GRANT ALL ON *.* TO root% ;FLUSH PRIVILEGES…

当AI遇见现实:数智化时代的人类社会新图景

文章目录 一、数智化时代的机遇二、数智化时代的挑战三、如何适应数智化时代《图解数据智能》内容简介作者简介精彩书评目录精彩书摘强化学习什么是强化学习强化学习与监督学习的区别强化学习与无监督学习的区别 前言/序言 随着科技的日新月异,我们步入了一个前所未…

爬虫学习:XPath匹配网页数据

目录 一、安装XPath 二、XPath的基础语法 1.选取节点 三、使用XPath匹配数据 1.浏览器审查元素 2.具体实例 四、总结 一、安装XPath 控制台输入指令:pip install lxml 二、XPath的基础语法 XPath是一种在XML文档中查找信息的语言,可以使用它在HTM…

B端系统菜单栏中使用阿里图标

B端系统菜单栏中使用阿里图标 1.需求说明 由于组件库自带的图标数量和内容有限,采用丰富多样的阿里图标是不错的选择 2.阿里图标使用 2.1官网 iconfont-阿里巴巴矢量图标库 2.2使用 2.2.1.先根据关键词搜索并选择对应的图标 注意:若只是少量的sv…

自动驾驶学习1-超声波雷达

1、简介 超声波雷达:利用超声波测算距离的雷达传感器装置,通过发射、接收 40kHz、48kHz或 58kHz 频率的超声波,根据时间差测算出障碍物距离,当距离过近时触发报警装置发出警报声以提醒司机。 超声波:人耳所不能听到的…

FMEA助力智能电网升级:构建安全、高效、可靠的电力网络

随着科技的不断进步,智能电网已成为现代电力行业的重要发展方向。而在这个过程中,FMEA(失效模式和影响分析)作为一种重要的质量管理工具,正日益发挥着其在智能电网建设中的赋能作用。本文将从FMEA的基本概念出发&#…

Study--Oracle-02-单实例部署Oracle19C

一、CentOS 7 环境准备 1、软件准备 操作系统:CentOS 7 数据库版本: Oracle19C 2、操作系统环境配置 关闭selinux ,编辑 /etc/selinux/config文件,设置SELINUX enforcing 为SELINUXdisabled [rootoracle ~]# grep SELINUX /etc/seli…

顺序表的实现(迈入数据结构的大门)

什么是数据结构 数据结构是由:“数据”与“结构”两部分组成 数据与结构 数据:如我们所看见的广告、图片、视频等,常见的数值,教务系统里的(姓名、性别、学号、学历等等); 结构:当…

python网络爬虫学习——编写一个网络爬虫

参考资料:用Python写网络爬虫(第2版) 1、编写一个函数 (1)用于下载网页,且当下载网页发生错误时能及时报错。 # 导入库 import urllib.request from urllib.error import URLError,HTTPError,ContentTooS…