【Redis基础篇】浅谈分布式系统(一)

一、浅谈分布式系统

1. 单机架构:只有一台服务器,这个服务器负责所有的工作。

在这里插入图片描述

如果遇到了服务器不够的场景怎么处理?

  • 开源:增加更多的硬件资源
  • 节流:软件上的优化,优化代码等…
  • 一台服务器资源使用有限,就需要引更多的服务器,此时系统复杂度就会大大提高!

2. 应用服务和数据库服务分离

在这里插入图片描述

3. 引入更多的应用服务器节点

在这里插入图片描述

那上述中 负载均衡服务器 看起来承担了所有的服务请求,那么它顶得住吗?
负载均衡服务器,对于请求量的承担是远远超过应用服务器的。
这就好比:
● 负载均衡服务器是领导,负责分配任务
● 应用服务器是组员,复杂执行任务
就算请求量多到负载均衡服务器也承担不了,那就引入更多负载均衡服务器~(多个机房)

4. 数据库服务器怎么解决承担压力?

在上述中,应用服务器虽然分担了压力,但是数据库服务器仍然只有一个,那该怎么办呢?
在这里插入图片描述

主服务器一般是一个,从服务器可以有多个。(一主多从);同时从数据库中通过负载均衡的方式,让应用服务器进行访问。

5. 引入缓存

然而数据库有个天然的问题,响应速度是很慢的,因为是从硬盘中读取数据~
所以我们把数据区分为“冷热”,热点数据放到缓存中,访问的速度比数据库快很多!
在这里插入图片描述

6. 数据库如何承担更大的数据量?

上述是解决了请求量(并发量)的问题,但是数据库容量始终有限,如果出现一台服务器存不下数据该怎么办?
在这里插入图片描述

可以针对数据库进行分库分表的操作。引入多个数据库服务器,每个数据库服务器存储一个或者一部分数据库.

7. 微服务架构

之前的应用服务器,一个服务器程序做了很多事情,这可能会导致这个服务器代码越来越复杂~
为了更方便的维护,就可以把一个复杂的应用服务器拆分成更多的、更单一的服务器(微服务)
在这里插入图片描述

微服务本质上是解决了“人”的问题~
引入微服务出现的问题:
● 系统性能下降,拆出来更多的服务,多个功能之间更要依赖网络通信,网络通信的速度速度很可能比硬盘还慢!
● 系统复杂度提高,可用性受到影响,服务器,出现问题概率更高!
微服务的优势:
● 解决了“人”的问题
● 使用微服务,可以更方便于功能的复用
● 可以给不同的服务进行不同的部署

8. 总结

  1. 单机架构(应用程序+数据库服务器)
  2. 数据库和应用分离:应用程序和数据库服务器分别放到不同主机上部署
  3. 引入负载均衡:多个应用服务器之间通过负载均衡把请求比较均匀分发给集群中的每个服务器
  4. 引入读写分离,数据库主从结构:一个数据库作为主节点,其他数据库作为从节点。主节点负责 写数据,从节点负责 读数据。(主节点需要把修改过的数据同步给从节点)5
  5. 引入缓存:冷热数据分离结构,进一步提升服务器处理请求的能力 (数据库和缓存数据一致性问题)
  6. 数据库分库分表:数据库能够进一步扩展存储空间,根据具体业务
  7. 微服务架构:从业务上进一步拆分应用服务器,拆分成功能单一,更简单的服务器

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

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

相关文章

【剖析STL】vector

vector的介绍及使用 1.1 vector的介绍 cplusplus.com/reference/vector/vector/ vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是…

删除有序链表中重复的元素-II(链表)

乌!蒙!山!连!着!山!外!山! 题目: 思路: 双指针,slow和fast,并且增加标记flag初始为1。 如果slow指向节点值等于fast指向节点值&…

Kubernetes+EFK构建日志分析平台

目录 Fluentd 工作原理 1.1、主机初始化配置 1.2、部署docker环境 二、部署kubernetes集群 2.1、组件介绍 2.2、配置阿里云yum源 2.3、安装kubelet kubeadm kubectl 2.4、配置init-config.yaml 2.5、安装master节点 2.6、安装node节点 2.7、安装flannel 3、部署企业…

LeetCode 142.环形链表II

文章目录 💡题目分析💡解题思路💡深度思考🔔接口源码 题目链接👉 LeetCode 142.环形链表II👈 💡题目分析 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环…

优化GitHub网站访问慢的问题

方法一、修改host文件解决 大型网站服务器都不会是只有一台服务器,而是多台服务器组成的集群一起对外提供服务。 使用站长工具测速,找一个速度比较快的服务器。 图中可以看到140.82.121.4这个ip比较快, 下面修改hosts: Mac 在 /etc/hosts 中&#x…

蓝牙资讯|中国智能家居前景广阔,蓝牙Mesh照明持续火爆

据俄罗斯卫星通讯社报道,中国已成为全球最大的智能家居消费国,占全球50%—60%的市场份额。未来,随着人工智能技术的发展以及智能家居生态的不断进步,智能家居在中国的渗透率将加速提升。德国斯塔蒂斯塔调查公司数据显示&#xff0…

Redis在Java中的基本使用

本片将介绍 Redis 在 Java 中的基本使用 文章目录 1、使用jedis操作redis1.1、Jedis简介1.2、引入jedis的Maven依赖1.2、获取连接1.3、使用实例 2、对于JedisPooled的使用2.1、使用JedisPooled2.2、关于连接池 3、SpringBoot下使用Redis3.1、引入Maven依赖3.2、配置Redis连接3.…

excel逻辑函数篇2

1、IF(logical_test,[value_if_true],[value_if_false]):判断是否满足某个条件,如果满足返回一个值,如果不满足则返回另一个值 if(条件,条件成立返回的值,条件不成立返回的值) 2、IFS(logical_test1,value_if_true1,…):检查是否…

网络安全--wazuh环境配置及漏洞复现

目录 一、wazuh配置 二、wazuh案例复现 一、wazuh配置 1.1进入官网下载OVA启动软件 Virtual Machine (OVA) - Installation alternatives (wazuh.com) 1.2点击启动部署,傻瓜式操作 1.3通过账号:wazuh-user,密码:wazuh进入wazuh…

删除链表中的节点(力扣)

目录 题目: 看着花里胡哨,小卡拉米四行代码秒杀! 示例: 思路: 代码: 题目: 看着花里胡哨,小卡拉米四行代码秒杀! 示例: 思路: 把后一个节点的…

动手学深度学习—卷积神经网络LeNet(代码详解)

1. LeNet LeNet由两个部分组成: 卷积编码器:由两个卷积层组成;全连接层密集块:由三个全连接层组成。 每个卷积块中的基本单元是一个卷积层、一个sigmoid激活函数和平均汇聚层;每个卷积层使用55卷积核和一个sigmoid激…

【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…

linux RabbitMQ-3.8.5 安装

软件版本操作系统CentOS Linux release 7.9.2009erlangerlang-23.0.2-1.el7.x86_64rabbitMQrabbitmq-server-3.8.5-1.el7 RabbitMQ的安装首先需要安装Erlang,因为它是基于Erlang的VM运行的。 RabbitMQ安装需要依赖:socat和logrotate,logrotate操作系统已经存在了&…

图论相关问题

1. 拓扑排序bitset 第一次使用bitset&#xff0c;复杂度&#xff1a;N/32&#xff0c;比N小 所以总的时间复杂度为O(N*(NM)/32) #include <iostream> #include <bitset> #include <queue> using namespace std; const int N 3e420; bitset<N> f[N];…

使用低版本vcpkg时,bootstrap-vcpkg.bat无法生成vcpkg.exe的可能原因

缘由 需要使用vcpkg中低版本的第三方库&#xff0c;下载vcpkg后&#xff0c;回退至指定版本&#xff0c;运行bootstrap-vcpkg.bat生成vcpkg.exe时&#xff0c;命令行窗口总是一闪而过&#xff0c;但是vcpkg.exe却没有生成。 添加pause&#xff0c;查看错误 编辑bootstrap-vc…

09_Redlock算法和底层源码分析

Redlock算法和底层源码分析 一、当前代码为8.0版接上一步 自研分布式锁的重点&#xff1a; 按照juc里面Lock接口规范进行编写lock加锁关键逻辑 加锁&#xff1a;在redis中&#xff0c;加锁实际上是给key设置一个值&#xff0c;为避免死锁&#xff0c;并给key一个过期时间自旋…

腾讯云轻量应用服务器配置(详细版)

腾讯云轻量应用服务器CPU内存带宽配置高&#xff0c;成本很低&#xff0c;腾讯云百科来详细说下腾讯云服务器从购买、配置到网站上线全流程&#xff0c;包括轻量服务器配置选择、应用镜像选择、重置密码、防火墙开放端口教程等详细教程&#xff1a; 目录 一&#xff1a;注册腾…

vue的开发者工具下载『保姆级别』

1.先进官网 极简插件_Chrome扩展插件商店_优质crx应用下载 (zzzmh.cn) 2.搜索vue devtools&#xff0c;点击进去 3.下载插件 4.下载到文件下你自己的文件下&#xff1a;我的是下载到E盘下。 5.压缩到当前目录下 6.电脑进入拓展程序&#xff08;不同的浏览器操作不同&#xff…

在Visual Studio上,使用OpenCV实现人脸识别

1. 环境与说明 本文介绍了如何在Visual Studio上&#xff0c;使用OpenCV来实现人脸识别的功能 环境说明 : 操作系统 : windows 10 64位Visual Studio版本 : Visual Studio Community 2022 (社区版)OpenCV版本 : OpenCV-4.8.0 (2023年7月最新版) 实现效果如图所示&#xff0…

系统卡死问题分析

CPU模式 CPU Frequency Scaling (CPUFREQ) Introduction CPU频率调节设备驱动程序的功能。该驱动程序允许在运行过程中更改CPU的时钟频率。一旦CPU频率被更改,必要的电源供应电压也会根据设备树脚本(DTS)中定义的电压值进行变化。通过降低时钟速度,这种方法可以减少功耗…