场景设置
1.假设我有一个在谷歌计算机上运行的tomcat。
我有一个简单的hello world servlet,如下面的
1. public void doGet(HttpServletRequest req, HttpServletResponse res)
2. throws ServletException, IOException {
3. sysout("request IN")
4. PrintWriter out = res.getWriter().println(VERY_LONG_JSON_200KB);
5. sysout("request OUT")
6. }
例:
现在,如果我直接使用机器ip命中这个servlet,使用非常慢的客户端(2 KB下载速度)
tomcat中的工作线程将在println(VERY_LONG_JSON_200KB);
行停留约100秒。因为VERY_LONG_JSON_200KB
不适合套接字缓冲区而线程不适合等待。
在这种情况下,由于客户端连接速度慢,我的tomcat线程卡住了。
立即
而不是直接连接到tomcat机器ip。我在tomcat前添加了一个Google负载均衡器 现在使用慢速客户端,我通过负载均衡器连接到tomcat 现在,println
行已在1 ms
中执行。
这意味着load Balancer会快速消耗tomcat的响应,然后将其提供给客户端。 这很好,因为我的tomcat线程没有卡住。
问题 现在出现的问题是,负载均衡器会有多少请求快速消耗并按照客户端的速度运行。
例如:假设1000个并发慢速客户端进来,Google负载均衡器将为所有1000个请求快速消耗tomcat的响应。
答案 0 :(得分:0)
正如您可以在此处阅读[1]:"(...)它支持每秒100万次查询,具有始终如一的高性能和低延迟。"。
所以,是的,Google Cloud Load Balancer将能够快速请求tomcat后端的响应速度高达每秒100万次。