在我们一般菜鸟的开发任务中,一般都涉及到的是一些小项目的话只需要一台服务器而无需操心多服务器集群带来的种种的问题。
项目一大,必然会产生各种新的问题,如业务量过大挑战服务器的服务性能,要跟得上业务就必须得增加服务器性能,综合安全性、可靠性一般都会选择服务器集群这种方式。服务器集群的情况下,多台服务器需要联合共同协助工作,如何将多个服务器的职能分工、通过架构设计来有效并尽量高效地联合起来运行,是个大的问题,因为其中涉及到服务器的各种技术、各种程序,在高性能、高访问量、高负载的情况下,如何确保对于大量用户来说能够快速响应,这就需要多个服务器之间有效地连接并交换数据。
问题之一:多个服务器,session如何同步?
拿php编写页面的web服务器来说,php的$_SESSION[]中,对每个请求用户的session身份登记与对应的数据保存,都存储在服务器本机的运行内存当中,并不写文件,为了高效地运行。本身php是不提供对多服务器集群共享session等变量的能力的,所以我们需要自己想办法。
方案1:
为每个web服务器都建立一个网络服务,每个web服务器都可以互相查询获取对方服务器上当前内存中存储的session数据。当用户请求时,为了获取同步session,web服务器就需要请求其他每一个web服务器并更新本机session数据。这样做的弊端有很多,比如操作时的网络等待阻塞,这一点就导致这个方案很不高效了。pass。
方案2:
专门搞一个或一组服务器,它们的分工职责是代替php的$_SESSION[],提供一个网络级的用户session