一、初识Redis与分布式系统

目录

一、Redis应用

二、实现方式

三、Redis应用

四、分布式系统

五、分布式系统实现

1、应用服务和数据库服务分离

2、引入负载均衡,应用服务器集群(解决高并发)

3、引入读写分离,数据库主从结构(解决高并发)

4、引入缓存,冷热数据分离(解决高并发)

5、分库分表(解决高数据量)

6、引入微服务架构(从业务上进一步拆分应用服务器)

六、总结


一、Redis应用

Redis是在内存中存储数据,主要应用于分布式系统,如果只是单机程序,直接通过变量存储数据的方式是比Redis更优的选择

二、实现方式

由于进程间隔离性,进程间的通信基于网络。Redis就是基于网络,可以把自己内存中的变量给别的进程,甚至别的主机的进程进行使用。

三、Redis应用

1、数据库(database)

MySQL最大的问题在于访问速度比较慢,因为数据存储在硬盘上。Redis数据存储在内存上,速度快了很多。但是Redis和MySQL的业务场景不一样,没办法定量的衡量到底快多少。Redis最大的劣势是存储空间是有限的。

2、缓存(cache)

将Redis和MySQL结合起来,又打又快。Redis充当缓存的角色,劣势是系统的复杂度大大提升了,而且如果数据发生修改。还涉及到Redis与MySQL之间的数据同步问题。

3、streaming engine

Redis的初心,最初就是用来作为一个“消息中间件”(消息队列)的分布式系统下的生产者消费者模型,应用的很少。业界有更多更专业的消息中间件。

四、分布式系统

1、单机架构

只有一台服务器,这个服务器负责所有的工作。

2、分布式

如果业务进一步增长,用户量和数据都水涨船高,一台主机难以应付的时候,就需要引入更多的主机,引入更多的硬件资源。

一台主机的硬件资源是有上限的,这里的硬件资源包括但不限于以下几种:CPU,内存,硬盘,网络等等。服务器每收到一个请求,都是需要消耗上述的一些资源的,如果同一时刻,处理的请求多了,此时可能会导致某个硬件资源不够用了,无论是哪个方面不够用了,都可能会导致服务器请求处理的时间变长,甚至与处理出错。

解决以上问题,有下面两种方法:

(1)节流

软件上优化,通过性能测试。找到是哪个环节出现了瓶颈,再去对症下药。

(2)开源(简单粗暴)

增加更多的硬件资源,但是一个主机上面能增加的硬件资源也是有限的,取决于主板的扩展能力,也是有上限的。当一台主机扩展到上限了,就只能引入多台主机了,并且要在软件上做出相应的调整和适配。一旦引入多个主机了,咱们的系统就可以被称为“分布式系统”

五、分布式系统实现

1、应用服务和数据库服务分离

2、引入负载均衡,应用服务器集群(解决高并发)

引入更多的服务器节点(请求量和数据量进一步增加)

对于负载均衡器来说,有很多的负载均衡具体的算法,需要结合具体的业务场景。

3、引入读写分离,数据库主从结构(解决高并发)

一个数据库节点作为主节点,其他N个数据库节点作为从节点。主节点负责写数据,从节点负责读数据。主节点需要把修改过的数据同步给从节点。

实际的应用场景中,读的频率是要比写的概率要高的。因此主服务器一般是一个,从服务器可以有多个。同时从数据库通过负载均衡的方式,让应用服务器进行访问。

4、引入缓存,冷热数据分离(解决高并发)

数据库天然有个问题:相应速度很慢。把数据区分“冷热”,热点数据放到缓存中。

5、分库分表(解决高数据量)

引入分布式系统,不光要能够去应对更高的请求量(并发量),同时也要能应对更大的数据量。当数据量很大时,就需要多台主机来存储。

6、引入微服务架构(从业务上进一步拆分应用服务器)

引入微服务,解决了管理人的问题,但是系统性能会下降。因为是网络间通信,比进程间通信速度大大降低。要想保证性能不下降的太多,只能引入更多的机器,更多的硬件资源。并且系统复杂度更高,可用性收到影响,出现问题的概率就更大了。

微服务的优势:

解决了人的问题;

使用微服务,可以更方便的完成功能的复用;

可以给不同的服务进行不同的部署

六、总结

一些概念:

1、应用(Application)/ 系统(System)

一个应用,就是一个/组 服务器程序

2、模块(Module)/ 组件(Component)

一个应用,里面有很多功能,每个独立的功能,就可以称为是一个模块/组件

3、分布式(Distributed)

引入多个主机/服务器,协同完成一系列的工作(物理上的多个主机)

4、集群(Cluster)

引入多个主机/服务器,协同完成一系列的工作(逻辑上的多个主机)

5、主(Master)/ 从(Slave)

多个服务器节点,其中一个是主,另外的是从。从节点的数据要从主节点这里同步过来。

6、中间件(Middleware)

和业务无关的服务(功能更通用的服务)

例如:

数据库

缓存

消息队列

.......

7、可用性(Availability)

系统整体可用时间  /  总的时间   是一个系统的第一要务

8、 响应时长(衡量服务器的性能)

9、吞吐(衡量系统处理请求的能力)

总结:所谓的分布式系统,就是想办法引入更多的硬件资源!!

相关推荐

  1. Redis Redis

    2024-01-04 11:48:06       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-04 11:48:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-04 11:48:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-04 11:48:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-04 11:48:06       20 阅读

热门阅读

  1. webpack学习记录

    2024-01-04 11:48:06       35 阅读
  2. 校准与校定的区别

    2024-01-04 11:48:06       50 阅读
  3. 学习Go语言Web框架Gee总结--分组控制Group(四)

    2024-01-04 11:48:06       35 阅读
  4. 什么是跨域以及怎么处理跨域问题

    2024-01-04 11:48:06       38 阅读
  5. 12.28

    2024-01-04 11:48:06       38 阅读
  6. 前端发布项目自动更新

    2024-01-04 11:48:06       44 阅读