嘿,伙计们,我是最近的毕业生,看着我正在申请的几份工作,我看到我需要知道诸如运行时复杂性(足够直接),缓存(memcached!)和负载平衡问题之类的东西(不知道这个!!)
那么,我应该尝试了解哪种负载均衡问题和解决方案,或者至少对.net或java作业有点熟悉?
谷歌搜索给我提供网络负载平衡等功能,但通常不会由软件开发人员管理?
答案 0 :(得分:2)
我能想到的一件事是会话管理。默认情况下,无论何时获得会话ID,该会话ID都指向服务器上的某些内存数据。但是,当您使用load-balacing时,有多个服务器。当数据存储在机器1上的会话中时会发生什么,但是对于下一个请求,用户被重定向到机器2?他的会话数据将丢失。
因此,您必须确保用户为每个并发请求(“粘连接”)返回到同一台计算机,或者您不使用进程内会话状态,但是在进程外会话状态,其中会话数据存储在例如数据库中。
答案 1 :(得分:1)
有一个负载分发的概念,其中请求被喷洒到多个服务器上(通常具有会话亲和性)。这里没有关于任何特定服务器的繁忙程度的反馈,我们只依赖于负载的统计共享。您可以在WAS ND中查看WebSphere Http插件。即使对于大量网站来说,它实际上也能很好地运作
加载平衡试图比这更聪明。关于服务器相对负载的一些反馈确定新请求的去向。 (即使那时会话亲和力往往被视为比平衡负载更高的优先级)。最初在XD中提供的WebSphere On Demand路由器就是这样做的。如果您阅读this文章,您将看到所使用的算法类型。
您可以通过网络喷涂设备实现平衡,他们可以咨询服务器中运行的“代理商”,这些代理商会向喷涂机提供反馈,为决策提供依据。因此,即使这种基于硬件的方法也可以具有软件元素。见Dynamic Feedback Protocol
答案 2 :(得分:0)
网络组合,最大流最小割定理及其使用