authentication - 水平缩放laravel应用程序?

标签 authentication heroku laravel-5.2 horizontal-scaling

由于我的 Laravel 应用程序将部署到 heroku,我想知道如何避免 session 关联以便任何节点都可以处理用户请求。

据我所知,首次提供身份验证的服务器将在 session 中存储 auth-token 以在以后识别用户,但是,添加新节点来扩展应用程序如何,是否必​​须使用存储身份验证 token 的同一台服务器?如何在 Laravel 中避免这种情况?

最佳答案

如果您想横向扩展,首先需要使您的 Web 应用程序无状态,这意味着您需要将用户 session 和身份验证信息集中存储在其他地方,而不是在每个服务器本地存储。 Redis 服务器将是@Amir Bar 提到的最佳选择,因为它是一个数据结构服务器(通常用于缓存),存储在 Redis 上的所有数据都存储在通用数据结构(列表、哈希表...)上RAM,因此其延迟会非常低。

一旦您的 Web 应用程序无状态,只需使用负载均衡器来分配负载,然后根据需要在负载均衡器后面添加尽可能多的 Web 服务器节点。那就足够了。

扩展 Web 服务器后的下一个挑战将是数据库服务器的可扩展性。您可以在负载均衡器后面添加任意数量的 Web 服务器节点。但扩展数据库是另一种野兽。如果您使用的是 NoSQL,那么恭喜您!由于 NoSQL 数据库非常容易扩展,因此几乎每个 NoSQL 数据库都内置了水平扩展功能。
扩展关系数据库比扩展 NoSQL 数据库更难。如果您正在为高读取系统进行扩展,主从复制模型将是合适且简单的。但是,如果您要为高读取和高写入的系统进行扩展。希望您在解决方案研究中玩得开心。解决方案将基于您当前的设计。

无论如何,当您遇到数据库读/写瓶颈时,请先尝试优化您的查询和数据库访问,N+1 问题是一个非常常见的问题,会大大减慢您的数据库访问速度。

关于authentication - 水平缩放laravel应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717993/

相关文章:

java - JBoss 上的 IOS 身份验证和 Java 应用

asp.net-mvc - 如何跟踪我的应用程序的用户而不强制他们注册?

security - 使用 Ory/Kratos 登录/注册 API 流程

php - "Access denied for user ' '@' localhost ' to database ' forge”随机出现

php - Laravel 作业将 exec() 错误转储到命令行而不是 $output

c# - 如何使用 AWS Cognito 保护 .Net Core Web API 应用程序

postgresql - 在 heroku postgresql 上的一个数据库中创建多个模式

node.js - 无法在heroku中的nodejs上发帖

node.js - Heroku:process.env.NODE_ENV 没有注册为 'production'(它注册为 'development')

api - Laravel API测试-如何测试具有外部API调用的API