编辑
2023-12-25
实用工具
00

主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

作用

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  • 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
编辑
2023-12-25
遇到的问题
00

问题

使用redis集群时,从机在redis.windows.conf中修改port为6380,启动后还是使用的是6379,导致窗口闪退,启动失败

原因

未读取到redis.windows.conf中的信息,还是使用的是默认的配置信息

解决

进入redis目录下,打开命令行输入:

redis-server.exe ./redis.windows.conf

即可启动成功

编辑
2023-12-25
实用工具
00

简介

Zuul 是 Netflix 提供的一个基于 JVM 的网关服务,其主要作用是将所有请求转发到相应的后端服务。Zuul 主要有以下几个特点:

  • 路由和过滤:Zuul 可以通过定义一些路由规则,让请求转发到不同的后端服务,并且可以在路由前和路由后进行一些过滤操作。
  • 负载均衡:Zuul 内置了 Ribbon 负载均衡机制,可以自动地将请求分发到不同的服务器上,实现负载均衡的功能。
  • 可插拔性:Zuul 采用了过滤器链的机制,可以在处理请求的不同阶段中插入不同的过滤器,实现不同的功能。

在Zuul的组件中,主要由以下几个部分组成:

  1. 核心模块:包含了Zuul的核心代码,负责接收和处理外部请求,并进行路由、过滤等操作。其中,核心模块还包含了Zuul的主要配置类和启动类,用于对整个系统进行配置和启动。

  2. 路由模块:负责请求的路由功能,可以根据不同的路径或请求头信息对请求进行分发,并将请求发送到后端对应的服务实例中。

  3. 过滤器模块:提供了基于拦截器的过滤功能,可以对请求进行鉴权、限流、重试等操作,并对响应进行处理和转换。

  4. 发现模块:用于注册和发现后端服务实例,可以通过各种服务发现机制(如Eureka、Consul等)实现服务的自动发现和负载均衡。

  5. 监控模块:提供了一系列的监控指标和报告,可以帮助用户对系统进行实时监控和分析,以便及时发现和排查问题。

编辑
2023-12-22
学习记录
00

前提

AspectJ是一种面向切面编程(AOP)的框架,它可以在不修改原有代码的情况下,为其添加额外的行为。AspectJ使用三个核心心心概念:连接点(Join Point),切面(Aspect),和建议(Advice)

该类使用AspectJ注解来实现日志记录

连接点

连接点(Join Point)是指需要被切面影响的方法或构造器。您可以使用pointcut语句来定义连接点

java
@Pointcut("execution(public * com.test.controller..*.*(..))") public void webLog() {}

切面

切面(Aspect)是指包含pointcut和建议的类。您可以使用@Aspect注解来标记一个类为一个切面,例如:

java
@Aspect @Component public class WebLogAcpect { // ... }

建议

建议(Advice)是指在连接点之前或之后执行的方法。您可以使用@Before, @After, @Around等注解来标记一个方法为一个建议,例如:

java
@Before("webLog()") public void doBefore(JoinPoint joinPoint) throws Throwable { // ... }
编辑
2023-12-14
学习记录
00

前提

oracle中没有主键自增这个功能,需要使用数据库序列实现

创建序列

java
create sequence BACKSTAGE_LOG_ID_SEQ start with 1 --从1开始,不能小于最小值 maxvalue 9999999999999999999 --设置最大值 minvalue 0 --设置最小值 nocycle --一直累加,不循环 cache 5000 --缓存,表示一次产生5000个序号 noorder;