如何寻找做企业网站的,品牌策划案范本,网址怎么做小程序类的二维码,百度2020新版下载目录
单机架构
分布式系统
个人总结
一.Redis的介绍
二.Redis特性
三.Redis的快原因
四.Redis的应用场景
五.Redis的总结 由于Redis和分布式系统息息相关#xff0c;因此我们需要先了解一下#xff0c;分布式系统#xff01; 接下来就是分布式系统的演化过程。 单…目录
单机架构
分布式系统
个人总结
一.Redis的介绍
二.Redis特性
三.Redis的快原因
四.Redis的应用场景
五.Redis的总结 由于Redis和分布式系统息息相关因此我们需要先了解一下分布式系统 接下来就是分布式系统的演化过程。 单机架构
在了解什么是分布式系统之前我们之前使用的都是单机架构。
单机架构只有一台服务器负责了所以的工作。 如上图一个服务器即负责应用服务也负责数据库服务如果访问人数不多的情况下是可以接收处理的。 服务器收到请求需要消耗一些硬件资源因此如果成千上万的用户同时请求 可能会导致某个硬件资源不够用会导致服务器处理请求的时间变长甚至于处理出问题。 针对以上的问题虽然我们可以通过开源节流的方法但是治标不治本因此我们可以引入多台主机----分布式系统 注虽然引入分布式系统可以更好的解决大量请求但同时复杂程度也是直线上升出现Bug的概率也会越来越高 分布式系统 分布式系统Distributed System是由多个独立计算机或者是多个硬件节点通过网络互相通信和协调工作以达到共同目标的系统。 在分布式系统中这些计算机被称为节点nodes或者处理器processors它们可以是物理上分布在不同的地理位置也可以是逻辑上分布在不同的计算机上。 抛出的砖 我们将应用服务和数据库服务分开各置一个服务器而且我们可以针对不同的需求场景配建不同的硬件资源例如应用服务器需要的高cpu对于硬盘空间却没有那么大需求而数据库服务器却需要更大的硬盘空间。在一个大型系统中可能有多个应用服务器同时运行它们协同工作以处理高并发的请求。 引出的玉 问在图中我们发现多了一个负载均衡器那么有什么作用呢
答负载均衡是一种将工作负载分布到多个应用服务器上的技术以实现系统的高可用性和性能优化。在分布式系统中负载均衡器是位于客户端和多个应用服务器之间的中介设备或软件组件。 主要功能包括 1.请求分发负载均衡器接收来自客户端的请求并将这些请求分发到多个应用服务器上以均衡各服务器的负载。 2.性能优化通过有效地分配请求负载均衡器可以提高整体系统的响应速度和处理能力。 3.故障转移当某个应用服务器发生故障或不可用时负载均衡器可以自动将流量重定向到其他健康的服务器从而提高系统的可靠性和稳定性。 4.会话保持某些负载均衡器可以支持会话保持确保同一个用户的请求都被发送到同一个应用服务器上以维持会话状态。
总结负载均衡器就是领导应用服务器就是下属领导分配任务给下属。 进阶的玉 那么大量的应用服务器去调用存储服务器请问存储服务器能抗住吗可不可以和应用服务器一样也开辟大量的存储服务器呢不可以啊你想啊存储服务器存储的数据那么数据分开放应用服务器怎么知道自己需要的数据在哪呢但是我们可以根据需求将存储服务器分类---- 例如读和写。 每次写入数据都会将数据同步到读取的数据当中同样的道理也可以开辟出删除数据的存储服务器和更改数据的服务器。 再次进阶的玉 存在问题数据库的响应速度是很慢的 解决方案二八原则可以解决在计算机中有缓存还有硬盘空间缓存的数据一般都是我们经常需要使用的那么数据库是否也可以细分为经常使用和不经常使用呢也称冷数据和热数据当我们需要数据时先从数据量少的热数据中查找不存在再去查找冷数据。 缓存服务器中存放的是频繁被访问的数据少。只有主存储服务器的百分之20的数据。 最终版的璞玉 在之前我们可以发现存储服务器我们从一个存储服务器划分为读、写和缓存服务器了但我们发现无论如何变化这只是提高了存储服务器处理数据的速度但是存储服务器明显是有存储数据量的上限的。那么我们怎么修改存储服务器的上限呢
解决方法可以针对数据库进行分库分表存储例如将一个数据库的不同表存储在不同的存储服务器中 如图我们将数据库当中的表分在不同的存储服务器当中然后应用服务器根据需求调用相应的存储服务器。 扩展学习微服务架构
所谓的微服务就是上面的基础上再进行功能的划分将应用服务器划分对应的功能如下图 缺点系统性能下降更加依赖于网络通信 个人总结
单机架构应用程序数据库服务器数据库和应用分离 应用程序和数据库 分别在不同的主机部署引入负载均衡器应用服务器-集群 通过负载均衡器把请求比较均匀的分发给集群的每一个应用服务器引入读写分离数据库主从结构 一个数据库节点作为主节点其他N个节点作为从节点主节点负责写从节点负责读引入缓存冷热数据分离 进一步提升了服务器针对请求的能力引入分库分表数据库进一步扩展存储空间 提高了数据库的存储上限
以上就是分布式系统的演化过程 在分布式系统当中涉及到多个进程但是进程具有隔离性更何况这些进程可能在不同的主机上又如何跨主机通信呢 解决方法Redis就是基于网络无论是当前主机上的不同进程还是跨主机的进程我们都可以将内存变量给予其他主机的进程。 一.Redis的介绍 上图官方的解释也就是说Redis是 在内存中存储数据 RedisRemote Dictionary Server是一个开源的内存数据库系统属于键值存储Key-Value Store类别。它支持多种数据结构包括字符串Strings、哈希表Hashes、列表Lists、集合Sets、有序集合Sorted Sets等。Redis以其高性能、丰富的数据类型和灵活的应用场景而广受欢迎。 或许有人问Mysql数据库不能达到该效果吗
MySQL数据库存在一个很大的问题访问速度远远慢于Redis而目前的互联网产品当中对性能要求是很高的。但同样Redis的存储空间是有限的。那么该怎么解决呢
典型的方案MySQL和Redis结合起来但依然也存在缺点系统复杂程度大大提升如果数据发生了改变还会涉及到很多Redis和MySQL之间的数据同步问题。
二.Redis特性 这是在Redis官网中我们可以看见所谓的特性。接下来一一讲解
存储数据方面 之前我们学习的MySQL数据库是一种关系型数据库而它的存储方式是通过 ‘ 表 ’ 的方式进行存储组织数据。但是Redis是一种非关系型数据库存储数据的方式是通过 ‘ 键值对 ’的方式
Redis的操作 争对Redis的操作有两种方式第一种直接通过简单的交互式命令进行操作。第二种通过脚本方式批量执行一些操作。
Redis的扩展 在官网里可以在redis基础上进行扩展Redis提高一组API扩展方式C、C、Rust等语言。
Redis的持久化 将数据存储在内存上但是内存容易丢失因此也会在硬盘备份数据。
Redis的集群 Redis身为一个分布式系统的中间件能够支持集群是关键的官网上描述的是Horizonta scalability 中文名分库分表 意思是一个redis能存储的数据是有限的引入多个主机部署多个Redis节点每个Redis存储数据的一部分 。
Redis高可用 意思冗余又或者名为备份节点拥有主节点的备份。当主节点挂了从节点就摇身一变为主节点。
三.Redis的快原因
Redis之所以能够如此快速主要归因于以下几个关键因素 内存存储和操作Redis主要将数据存储在内存中而不是磁盘。内存的读写速度远高于磁盘因此Redis能够快速地存取数据。此外Redis使用了高效的数据结构如哈希表、链表等使得数据操作的时间复杂度很低通常为O(1)或者较低的常数时间复杂度。 单线程模型Redis采用单线程模型通过事件驱动机制来处理多个客户端的并发请求。这种设计避免了多线程或多进程之间的竞争和同步开销简化了系统的设计和实现并且在一定程度上减少了上下文切换的成本。 非阻塞IORedis使用非阻塞IO来处理网络请求和响应充分利用了操作系统提供的异步IO机制从而在等待数据读取或写入时不会阻塞整个进程提高了系统的吞吐量和响应速度。 精简和优化的实现Redis的代码经过高度优化和精简遵循了“少即是多”的原则去除了不必要的复杂性和开销专注于核心功能的实现和性能优化。 四.Redis的应用场景 以上是官方推出的应用场景
第一把redis当作数据库使用为降低延迟以及高吞吐量将数据存储在内存中并且可以持久化到磁盘它能够快速读写适合用来缓存频繁访问的数据减轻后端数据库的压力提升整体系统的性能。
第二会话缓存将用户会话数据存储在 Redis 中能够快速存取并且支持设置过期时间非常适合用来管理用户登录状态、购物车信息等。 或许有人问分布式系统应用服务器那么多用户每一次访问通过负载均衡都是同一台吗不会出现差错吗 答在典型的负载均衡配置中用户的每一次访问请求会通过负载均衡器分发到不同的应用服务器上而不会总是落在同一台应用服务器上。这种分发通常是基于一定的负载均衡算法如轮询、最小连接数、IP哈希等。 解决方法 会话粘滞Session Stickiness这是一种常见的解决方案它确保同一个用户的所有请求都被发送到同一台服务器上。负载均衡器会根据用户的标识如IP地址、Cookie中的标识符等将用户的请求路由到同一台服务器上从而保持会话的一致性。会话状态共享另一种方法是确保所有后端服务器可以访问相同的会话状态存储如数据库、共享缓存或专用的会话存储服务器。 第三与MySQL搭配使用MySQL存储全量数据而Redis可以存储一些频繁访问的数据如此哪怕Redis丢失数据也依然可以找回。
第四消息队列Redis 的列表List和发布/订阅Pub/Sub功能使其成为一个高效的消息队列中间件。它可以用于异步任务处理、实时消息传递等场景。