可扩展架构
问题来源
CS/BS架构技术挑战
扩展
垂直扩展 Scale Up
硬件提高
垂直扩展(更强的硬件) => 水平扩展(更多的硬件)
实现负载均衡
为了避免load balancer失效:增加back load balancer冗余
问题:如何解决水平扩展系统中的缓存和会话等状态问题?
每次把请求发到server,server会根据客户端传过来的SESSION ID进行查找。因为客户端总是把前一个Server返回的SESSION ID (因为它总是与前一个Server进行交互)交给后一个Server,而后一个Server不认识这个SESSION ID,所以它会新生成一个SESSION, 所以对客户端来说,之前的SESSION ID其实是无效的
在系统中,如果使用HAProxy来实现负载均衡的话,每一个节点都有两个方面的问题,一个是缓存,一个是会话状态。对于缓存来说的话,整个集群应该通过一种有效的机制,使得所有的计算节点都去共享这个缓存,从而提高缓存的效率,对于会话来说的话,每个节点,它所维护的会话状态应该跟用户发来的请求进行关联,这样才能保证用户的请求发到由某一个跟它之前有过会话的服务器、知道它之前说过什么的服务器,来为这个用户提供服务,从而不会导致一些错误。譬如说不能说你登录之后,原来在购物车里面加的内容刷新一下,发现购物车里面没有了,因为刷新的请求发送到一个新的服务器上去了,那个服务器不知道你购物车里有什么。