[英]Stateful Server why not possible in Ruby, PHP, Java, ASP.NET,...?
在这个关于在不缓存的情况下扩展数十万用户的视频中,这个人正在谈论 Erlang 有状态服务器。 在他们使用 Ruby Stateless 之前。
有状态服务器实际上意味着什么? 用户的 session 和服务器上有状态的 object 有什么区别?
为什么 Ruby、PHP、Java 或 ASP.NET 不能做与 Erlang 相同的事情?
更新:最后那个人说他必须结合 Erlang 和 Ruby 所以这意味着他不能单独使用 Ruby 。
我还没有看过演示文稿,但从摘要来看它看起来像一个游戏平台。 这与您的标准业务应用程序完全不同。 您的标准业务应用程序维护少量 session 本地 state 并且 state 通常不需要在线程之间共享。 我们的标准业务应用程序严重依赖数据库和缓存来共享业务数据。
这些多人游戏系统需要对 state 进行近乎实时的操作,而这需要被许多线程访问。 这就是 Erlang 擅长的地方。 并不是说您不能用其他语言做到这一点,而是您不能同样安全或高效地做到这一点。
有状态服务器/应用程序是在用户请求之间维护一些 state 的服务器/应用程序。 您正常的 web 应用程序是无状态的。 每个新请求都被视为全新的。 如果你想保留一些信息,你使用 session(通常存储在 cookie 中)。
这允许自由扩展 web 个工作人员:您只需启动所需数量的工作人员即可。
有状态服务器/应用程序允许更快地执行操作(无需每次都从数据库中获取数据)并保存传输的信息(您不需要来回传递 cookies),但您付出的代价是降低了可扩展性。 现在您不能只将传入请求抛给任何空缺的工作人员,您需要将其定向到拥有用户 state 的工作人员。
当然,您可以使用 Ruby 两种方式进行编程。Rails/Sinatra 用于无状态 web 应用程序,EventMachine 用于有状态守护进程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.