进学阁

业精于勤荒于嬉,行成于思毁于随

0%

项目是一个在运营中的项目,在后续新功能开发的时候线上总是出现各种问题,让客户对项目的信任度降低很多,也对公司造成了经济损失。于是就有了一个任务,提高项目的可用性。经过一段时间的实践,总结出来了一个公式

提升系统的稳定性=减少故障的数量+提升发现速度+提升恢复速度

减少故障的数量

线上的故障主要分为依赖类故障、变更类故障、容量类故障、固件类故障

依赖类故障

在现在分布式架构盛行的背景下,一个微服务的直接和间接依赖是非常多的。下游的某个服务、缓存、DB如果挂了,自己就会被“牵连”,无法提供正常服务。

阅读全文 »

最近因为一次压测活动,出于好奇想要试一下集群中的自动扩缩容,但是开启自动扩缩容之后,压测统计中出现了额外的错误,经过分析发现是因为微服务的注册中心nacos的上下线和集群中的上下线时机不一致造成的。具体的问题点在于:

  1. k8s服务下线时, svc对应的endpoint已经去掉了该服务的IP地址, 而nacos可能还存在该服务路由. 导致访问失败
  2. k8s服务上线时, 有可能注册完nacos服务启动完成, 这时候, nacos有了路由, 而svc还没有该端点信息
  3. k8s服务上线时, svc已经有该端点信息,但是nacos服务还未启动完成, 这时候svc已经有了该端点, 但是nacos还没有路由

在解决这个问题的时候,我们需要先了解kubernetes的探针

阅读全文 »

RedisRedis Cluster

Redis Cluster 集群相关配置,使用集群方式的必须重视和知晓。别嘴上原理说的头头是道,而集群有哪些配置?如何配置让集群快到飞起,实现真正的高可用却一头雾水,通过下面这些配置详解也让你对集群原理更加深刻。

cluster-enabled

普通的 Redis 实例是不能成为集群的一员,想要将该节点加入 Redis Cluster,需要设置 cluster-enabled yes

cluster-config-file

cluster-config-file nodes-6379.conf 指定集群中的每个节点文件。

集群中的每个节点都有一个配置文件,这个文件并不是让程序员编辑的,是自己创建和更新的,每个节点都要使用不同的配置文件,一定要确保同一个集群中的不同节点使用的是不同的文件。

阅读全文 »

1.下载官方镜像

1
docker pull redis:7.0.5

2.准备安装位置

执行命令

1
2
3
4
5
mkdir -p /opt/server/redis/conf
chmod -R 777 /opt/server/redis
cd /opt/server/redis/conf
wget http://download.redis.io/redis-stable/redis.conf #下载redis的配置文件 (跳此步,直接下一步,我已经写好配置了)
vim redis.conf #更改配置文件, 让宿主机可以访问redis-server #保存并退出
阅读全文 »

前言

Redis作为一种优秀的基于key/value的缓存,有非常不错的性能和稳定性,无论是在工作中,还是面试中,都经常会出现。

总结一下在实际工作中使用Redis的10种场景,希望对你会有所帮助。

阅读全文 »

Redis Pipeline 管道

环境说明

Linux(CentOS7.3)-Redis6.0.5源码编译版


1、Redis客户端与服务端通信分析

Redis 性能瓶颈主要是网络,主要原因就在于 Redis 执行命令的时间通常在微秒级别。正常情况下,执行一条 Redis 命令流程要经过如下几个步骤:

  1. 客户端发送 Redis 命令,阻塞等待 Redis 应答
  2. Redis 接收到命令,执行命令
  3. 应答,客户端收到响应信息

阅读全文 »

Redis

单机的 Redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发

Redis replication -> 主从架构 -> 读写分离 -> 水平扩容支撑读高并发

阅读全文 »

Redis是什么

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。官网地址为:redis.io

阅读全文 »