昨天面试一家 垂直社区型创业公司,其中一个题目【如何实现多台服务器共用SESSION】,这一道题,自己的回答让面试官十分不满意。
多台服务器SESSION共享,交谈后明白 参考面试官出题的意图是多个服务器之间的SESSION公用,相互实时同步,所以我的一个思路是将SESSION保存到SESSION数据库,等于所有的SESSION都存放进去。面试官很不满意,反驳如果并发很大的情况下,如何解决。
在segmentfault讨论这个问题,回答的全部都是说redis、memcached,这样根本就无法实现多台服务器SESSION的公用。其实面试官想得知的是类似于【云SESSION】的功能,现实中这样的场景有其实也不多,所有的服务器完全彻底可以共用实时的。一开始自己拿到这个题目,思路比较混乱,想的太多,想到的第一点就是SESSION多个服务器之间在实时共享,回答存放到db后,而面试官一再强调的是 并发量很高。
其实真正的解决方案完全可以参考游戏服务器,分服。
游戏服务器如果并发很大,不可能一直放玩家进去。达到该服务器的承受极限,会提示已满,无法进入。在一开头就先说了一句“应该先考虑硬件配置和带宽是否满足当前需求”,这一句让面试官更加不满。而现实中,其实很多情况下,提高硬件配置、带宽可以大大的缓解并发压力,然后再以程序、服务器的优化来解决并发问题,才是王道,而不应该仅仅局限于只通过PHP,只通过程序这一点这一部分。很多的IT公司用个2G 4G的内存,双核的CPU,硬盘都不是SSD的,却来谈所谓的并发问题。
版权声明:本文为博主原创文章,未经博主允许不得转载。