OJ在线评测系统 微服务技术入门 单体项目改造为微服务 用Redis改造单机分布式锁登录

单体项目改造为微服务

什么是微服务

服务:提供某类功能的代码

微服务:专注于提供某类特定功能的代码 而不是把所有的代码放到同一个项目里

会把一个大的项目按照一定的功能逻辑进行划分

拆分成多个子模块 每个子模块可以独立运行 独立负责一类功能

子模块之间相互调用 互不影响

微服务只是一个思想

微服务的实现技术

Spring Cloud

Spring Cloud Alibaba

Dubbo (DubboX)

RPC (GRPC TRPC)

本质上是通过HTTP 或者其他的网络协议进行通讯来实现的

服务之间的相互拆分 服务间的相互调用

Spring Cloud Alibaba

https://sca.aliyun.com/

微服务几个重要的实现概念

服务管理 服务调用

本质是在Spring Cloud的基础上

进行了增强

补充了一些额外的能力

根据阿里多年的业务沉淀做了一些额外的开发

Spring Cloud Gateways 网关

Nacos 服务注册和配置中心

Sentinel 熔断限流

Seata 分布式事务

RocketMQ 消息队列 削峰填谷

Docker 进行容器化部署

Kubernetes 使用k8s进行容器化部署

改造前 我们思考

从业务需求出发 首先分布式和单机有什么区别

我们之前的登录数据库数据是放在本台服务器上的

如果我们把我们的后端项目换到另一台服务器上 我们的数据就会消失

我们需要把用户登录功能需要改造为分布式登录

用到单机锁 我们要改造成分布式锁

有没有用到本地的缓存 改造为分布式缓存 redis

有没有用到事务 比如说操作多个表 多个库

改造单机分布式登录

好的,单机分布式登录是一个结合了单机和分布式系统特点的登录方式。我们可以从以下几个方面来理解:

  1. 定义

  • 单机登录:指的是在单个服务器上进行用户认证和登录的过程,所有的用户信息和认证逻辑都集中在一台机器上。这种方式简单,适合小规模应用,但在负载增加时容易成为瓶颈。

  • 分布式登录:指的是用户认证和登录过程分布在多个服务器上,可以通过负载均衡、微服务等架构来实现。这种方式可以处理更高的并发请求,并提高系统的可用性和可靠性。

  1. 应用场景

  • 单机分布式登录通常用于需要在局部区域(如小型企业或特定功能模块)内实现简单的用户认证,而后端则可以与分布式系统对接,进行数据同步和共享。

  • 例如,一个小型的电商网站可能最初只在一台服务器上进行用户登录,但随着业务扩展,可能逐步引入微服务架构,其他服务(如商品、订单)部署在不同的服务器上。

  1. 技术原理

  • Session管理:在单机环境中,用户登录后可以在服务器上创建Session,存储用户信息。而在分布式环境中,可能需要使用分布式缓存(如Redis)来管理Session,以确保不同服务器之间能共享用户状态。

  • 数据库设计:单机时,用户信息存储在本地数据库中;分布式时,可能需要使用主从数据库、分片等技术来保证数据的一致性和可用性。

  • 负载均衡:在分布式环境中,使用负载均衡器将用户请求分发到不同的服务器上,提高并发处理能力。

  1. 优缺点

  • 优点

    • 扩展性:可以根据需求逐步扩展,添加更多的服务器。

    • 可靠性:分布式架构可以避免单点故障,提高系统的可用性。

  • 缺点

    • 复杂性:引入分布式架构后,系统设计和管理会变得复杂。

    • 一致性问题:在分布式环境中,需要额外处理数据一致性和同步的问题。

总结

单机分布式登录是一种灵活的认证方案,可以在单机环境中实现基本的用户管理,同时具备向分布式架构演进的潜力。适合于逐步扩展的应用场景,能够平衡初期简单与后期复杂的需求。

单机分布式登录与Redis的关系主要体现在Session管理和数据存储上。以下是具体的关联点:

  1. Session管理

在分布式登录架构中,用户的登录状态通常需要在多个服务器之间共享。Redis可以作为一个高效的分布式缓存来存储Session信息,确保不同服务器可以访问到相同的用户状态。

  1. 高性能

Redis是一个内存数据库,具有快速的数据读写能力,这使得它非常适合用来存储频繁访问的Session数据,能够显著提高用户登录的响应速度。

  1. 数据一致性

使用Redis可以帮助在分布式环境中保持数据的一致性。通过设置合适的过期时间,可以确保Session在一段时间后失效,从而避免因长时间未使用而造成的安全风险。

  1. 支持多种数据结构

Redis支持多种数据类型(如字符串、哈希、列表等),可以灵活地存储用户信息和相关数据,适应不同的业务需求。

  1. 分布式架构

在分布式系统中,Redis可以作为中央存储解决方案,帮助实现数据的快速访问和共享,适合高并发场景。

总之,Redis在单机分布式登录中起到了提升性能、管理Session和确保数据一致性的关键作用。

Session是指在用户与服务器之间保持的状态信息,用于跟踪用户的会话。它允许服务器在用户访问不同页面或进行多个请求时,识别用户并存储相关信息,比如登录状态、购物车内容等。Session通常通过一个唯一的标识符(如Session ID)来实现,服务器在创建Session时会为每个用户分配一个ID,并将相关数据保存在服务器端。这样,当用户再次发送请求时,服务器可以通过这个ID找到对应的Session数据,保持用户体验的一致性。

首先打开redis

我们在启动类里面打个注解

主类取消Redis自动配置的移除

补充依赖

       <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

分布式session

  session:
    # todo 取消注释开启分布式 session(须先配置 Redis)
    store-type: redis
    # 30 天过期
    timeout: 2592000

使用redis-cli或者是redis管理工具 查看信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值