Authentication 水平缩放laravel应用程序?

Authentication 水平缩放laravel应用程序?,authentication,heroku,laravel-5.2,horizontal-scaling,Authentication,Heroku,Laravel 5.2,Horizontal Scaling,由于我的laravel应用程序将部署到heroku,我想知道如何避免会话关联,以便任何节点都可以处理用户请求 据我所知,第一次提供身份验证服务的服务器将在会话中存储身份验证令牌,以便稍后识别用户,但是,添加新节点以扩展应用程序怎么样,是否必须使用存储身份验证令牌的同一服务器为用户提供服务?如何在laravel中避免这种情况?如果您想横向扩展,首先需要使web应用程序无状态,这意味着您需要将用户会话和身份验证信息集中存储在其他地方,而不是存储在每台服务器的本地。正如@Amir Bar所提到的,Re

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


据我所知,第一次提供身份验证服务的服务器将在会话中存储身份验证令牌,以便稍后识别用户,但是,添加新节点以扩展应用程序怎么样,是否必须使用存储身份验证令牌的同一服务器为用户提供服务?如何在laravel中避免这种情况?

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

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

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


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

您可以制作专用的会话服务器,它也可以扩展,例如redis