初识Redis

发布于:2024-12-06 ⋅ 阅读:(30) ⋅ 点赞:(0)

 初识Redis:

Redis是用来存储数据,是在内存中存储数据。多个服务器(分布式系统)共享一份数据,由于进程隔离性,又想让数据在内存中。Redis基于网络这样的工具,将自己内存中的变量分享给别人。从而让多个进程甚至多个主机访问到Redis里边的变量(共享使用)。

mysql访问速度相对比较慢 ,Redis也可以当作数据库,Redis比mysql快很多,Redis用内存,而mysql是硬盘存储的。

劣势:

Redis空间有限,而且内存成本高,对性能要求不高的可以直接使用mysql。

很多时候可以将mysql和Redis结合起来使用,也就是形成“又大又快”的数据库 。把一小部分热点数据放在Redis,大部分数据放在mysql中,但是会提高系统的复杂程度,并且数据修改还会涉及到Redis和mysql数据同步。

分布式系统:

这里是我们原先学的单机架构,一台服务器负责我们原先的所有工作,应用程序也就是我们的服务器程序,比如spring什么的来写应用服务。mysql是客户端服务器程序,mysql作为本体去存储数据,http服务器来读取和使用数据。

 一台主机的硬件资源有限,可能会导致处理业务时间变长,我们只能引入更多主机来缓解压力。

如何处理硬件资源不够用

开源:增加更多的服务器

增加更多的主机 ,并且在软件层进行更多的调整 ,引入分布式一定是万不得已,会增加系统的复杂程度。

节流:软件优化,性能测试等等

应用服务和数据库分离

各自用各自的,根据不同特点配置服务器,应用服务比较吃业务逻辑,配好一点的cpu和内存,数据库服务器需要更大的硬盘空间,更快的数据访问数据,配一个更大硬盘上SSD硬盘 

应用服务器集群架构:

请求太多了可能顶不住,用户请求先访问负载均衡器(网关),每个应用服务器承担不同的任务,这样每个应用服务器就可以减小压力。负载均衡也可以防止其中一个挂了影响程序运行。

负载均衡器:就像组里的领导一样 ,为每个组员分配任务。分配任务不用花费太多资源不用担心挂掉。实在不行在引入一个负载均衡器。

数据库读写分离:
 

主从数据库

实际场景读的频率是比写的频率高,一般只有一个主服务器一主多从。从数据库通过负载均衡让应用程序访问。

引入缓存

将数据库的数据进行冷热区分

放热点数据在缓存里面。数据库还是全量数据。需要数据的时候先读缓存,再读数据库。但是如果需要修改缓存和数据库里面的数据,就要同时修改,就会出现数据一致性的问题。

数据库分库分表

如果一台主机存不下,就要对数据库(create databases)进行更进一步的拆分,本来数据库中有很多表,就可以存储很多层级,表很大就可以分表。

微服务结构:

应用服务器业务可能比较复杂,为了更方便代码的维护,就可以把复杂的服务器,拆分更多功能更单一更小的服务器。通过功能实现微服务有利于人员组织和分组。

微服务的代价:

  1. 由于各个功能跨主机进行网络通信,性能下降。
  2. 系统复杂提高,可用性受到影响,出现问题概率更大

微服务好处:

  1. 代码的复用。
  2. 不同的的服务不同的部署
  3. 解决管理人的问题。

小结:

模块组件:就是应用中的一个功能。

分布式:多台主机配合完成功能,物理上的多个主机。

集群:多台主机配合完成功能,逻辑上的。

主从:节点的数据要从主节点这边同步过来。

中间件:数据库,缓存,消息队列。

        


网站公告

今日签到

点亮在社区的每一天
去签到