我参加了下一代Web会议,所以写了些备忘录

我一直只是在听后半段的对话,所以没有记笔记呢,哈哈。
因为我也有一些自己的想法,所以正在考虑如何在这个基础上添加。

服务器首选

    • @mirakui

 

    • @xcir

 

    @cubicdaiya

服务器性能这个话题非常细分且严格。

对于监测这个话题,我无论如何都避免不了提及到它…

我是否觉得网络纪律正在下降?

由于智能手机的普及,性能的重点已经发生了变化
API请求数量增加了

@cubicdaiya
网络访问量占比10%。
虽然转为JSON API后要做的事减少了,但要求的性能却在提高。

在调整中,你注意什么问题,或者你做了哪些改进?

通过观察网站的流量情况,检查哪个地方出现了拥堵。

CPU的使用率正在上升
在一台服务器上有三四万个连接
进行异步处理的部分
将其放入消息队列并由后台的JobWorker来处理

如何处理难以实现高速化的请求?

@cubicdaiya
需要事务的部分成为了瓶颈。输入/输出瓶颈。
用钞票来打。
将主服务器的数据缓存在Redis中。

很难对无法进行缓存的部分进行速度优化。这真是非常困难。我们需要改变规格。

现金策略是如何执行的?

现金是否是银色子弹?
如何权衡易于操作性与之间的折衷?

重要的是数据是否被再利用,如果序列化/反序列化花费太多时间,反而会降低性能。关键是在哪个层面使用缓存。

@cubicdaiya
用于显示所有用户共享的数据
类似排行榜的数据
以用户为单位进行缓存→难道不担心发生意外吗?

可能是文化的问题…
登录后显示的内容不缓存的政策让我很担心。
是缓存的错吧?不对的。我不喜欢这种交互。

这不也涉及到语言选择吗?

我努力让Ruby易于操作哈哈。主要开发语言是?

@xcir
大家都喜欢PHP
只要是合适的,什么都可以。

@cubicdaiya
最近一段时间内,CPU性能已经达到了瓶颈,多核已经成为主流。因此,选择一门易于操作的语言很关键。若想使用多进程来完成任务,由于开销过大,效率并不会有明显提高。因此,在选择框架时应选用非常轻量级的。

请求数量变得越来越多。
一个请求的开销开始显示出作用来。

关于Web服务器的中间件。

这次的重点是这个方面
Varnish你们使用得有多深入?
Nginx呢?

@xcir
我已经了解了一些基本的内容
ESI、存储器…
4.1版本发布后,能够进行更多的调整
现在可以通过加工响应来实现一些操作
开发环境中也使用了Varnish来提高性能

検索サーバー约10台采用Nginx进行负载均衡
通过HTTP发送推送通知请求
使用lua或者mruby进行扩展
通过少量的处理能处理大量的请求的架构

Varnish最近的动态

Varnish对于HTTP/2也有考虑吗?
Varnish对于HTTPS的支持态度如何?
Varnish对于SSL/TLS不感兴趣吗?

网络连接问题

在海外,经常会出现无法连接的情况,你在处理海外连接时有什么特别的技巧?

每个国家的商业习惯不同,因此应用程序会有所区别。
在美国,与日本不同,延迟问题存在。
进行了一些限制TLS握手的措施等等。

@xcir
我对CDN的重要性有着深刻的印象,
尽管在日本并不太受重视。

@mirakui
使用不同的路径可能会导致语言不同
我们在美国东部放置了负载均衡服务器
→ 因为不管请求来自哪里,都会统一变得慢呢哈哈

随便割断海底电缆,哈哈。

“Opera mini非常厉害”
它可以自动将图片缩小
也可以通过AJAX等在服务器端进行渲染
在东南亚地区很流行
听说工程师们都被它折磨得筋疲力尽呢~

关于CDN

随着时间的推移,难道不是小企业无法避免地不得不使用CDN吗?对于小企业来说,在各个国家建立服务器是不可行的。

@xcir
我在使用。
@cubicdaiya
CDN的需求越来越多。像是需要有WAF功能,附带图像管理功能,或者通过API请求进行CDN通信。

前台的瓶颈已经转移到了应用的层面上,感觉在提升。

服务器架构

gRPC Gateway的讨论

@yugui 原文是需要中文翻译成英文的吗?请提供所需翻译的具体句子。

使用Protocol Buffers在HTTP/2传输的库
gRPC很棒。
不好的地方→这就是gRPC Gateway补上的地方
它与基于JSON的API不兼容。

如果要与外部系统进行协作,服务器推送并不总是必要的。由于系统内部和外部的要求不同,需要作为中间人。

你对在内部通信中使用类似gRPC的特定通信方式有什么想法?

制作

作为一名工程师,我想要尝试使用它,因为它的生命周期很长,所以很难冒险。

传统的是SOAP。
REST over HTTP1 还不算是传统的。
为了避免过多跳转,gRPC Gateay 是不错的选择。

HTTP/2是对HTTP1的补充规范,所以是否无缝过渡还是存在疑问的吗?

HTTP连接的连接池,不就是类似于数据库连接池的思路吗?

在HTTP2的基础上,gRPC是一种自定义协议的一个例子。

节俭没有前途…

安全

@nishimunea
让我们学习服务器端的安全性吧
不过服务器端的安全性基本上已经齐全了
不需要研究新的领域。

@kinugawamasato
XSS很有趣

网页开发者似乎没有太多解决浏览器问题的倾向。

W3C 缺乏全面性
各个企业凭借各自擅长的领域汇聚而成

规范性不明确…
应该变得更具有系统性和全面性。

当进行Bug追踪时?
从规格开始
检查安全性的发布说明,可能会发现内存泄漏等问题,但在规格方面很少发现Bug。这是在蓝海中。
通过对浏览器的二进制分析,找到了功能。

HTTP2

@jxck :你好,能否请你用中文给我解答一下这个问题?

目前HTTP/2的情况

5月份RFC7540被制定,
在此之前大致定案,
主要浏览器已经支持HTTP/2协议,
H2O、Nginx、Apache也都支持,
Java方面,Jetty已经支持。

libcurl已经支持HTTP/2。

通过使用HTTP/2,是否能够创建比1更快的Web,目前还是不确定的未来。

HTTP/2会变得更快吗?

延迟的情况

从HTTP1变为HTTP/2后,同时连接数从6增加到了100。

但仅仅这样就能加快速度吗?

以往我们是按顺序下载的。
在HTTP/2中,HTML、图像和CSS都会一起下载。

有时候需要花费一些时间才能完成渲染。

这个优先级的规范是存在的,但是由于客户端(浏览器)没有正确发送请求,所以速度不会加快。
就像Firefox一样。
优先级的规范是可选的。

由于HTTP/2依赖于单个TCP连接,所以如果TCP出现问题,所有内容都会变得非常缓慢且破坏性。

优先级是实验性实现。

我该怎么办?

在H2O中,我们根据请求的内容提前确定要发送的东西。
内容的优先级应该由制作方而不是客户端知道。

Safari可能会变得相对较快。

请求拦截(大型资源、异步请求)的测量非常重要。

优先级:在H2O的下一个版本中,由于MIME-TYPE不足以满足需求,我们将通过查询参数来实现。如果不正确使用此功能,性能将无法提升。

在发送和不能发送的情况下,应该会有优先级。
能否在这时控制是很重要的。
如果可以像Google那样监控并动态处理套接字缓冲区就好了,但是因为做不到这一点,所以优先级有些微妙。

关于服务器推送

HTTP2比起HTTP1更出色之處→ 不易受到延遲的影響

可以使用吗?
有时会变得更快。
戏剧性地起作用的情况是飞机上的通信。
一般的Wi-Fi没有那么大。
可以用来减少1RTT的物品。

缓存控制很困难
没有比较客户端和服务器持有状态的方法
这可能是不必要的争议

将来可能需要双向请求,但作为加速方法可能不会被使用。

服务器启动程序可能会使用它。

在H2O的最新版本中,具备让客户端在Cookie中保存缓存状态并使服务器推送的功能。

除了速度之外,还有其他的价值吗?

还有其他需要谈论的事情吗?

双向性
一旦连接上了,就平等。
→ 这会有什么变化吗?
P2P扩展。
使服务器能够通过GET与客户端进行通信。
但由于会改变当前的语义,所以并不会立即发生什么变化。
作为通用协议的HTTP/2

下一次对HTTP的修订更加容易了。
在HTTP1之前几乎没有扩展的余地。

虽然只能通过HTTPS使用HTTP/2,但从安全的角度来看,这是一个很好的安全网络。

HTTP/2基本上会变得更快!通过浏览器和服务器的支持,它最终会变快。
服务器的负载将减少。
在以TLS为前提的时代,通信负荷会增加,因此这个好处更加显著。

谷歌也通过整合会话以提高效益并获得剩余价值。

HTTP/2是超文本传输协议的一种吗?

HTTP/2 不使用是否会致命?嗯,那倒不是那么严重。

如果说存在导入的障碍,那就只是提升所需的劳力或其他相关方面。

减少服务器数量

只要能快一秒,销售额就会提高几个百分点,这是值得的。

值不值得去验证一下呢

如果使用HTTP/2,则不再需要分片和合并,但最好有一个可以动态切换的框架。还存在内容优化的问题。

如果是移动优先的网站,只要针对iOS9和iOS10进行切换,应该可以将其变成仅支持HTTP/2的网站。

HTTP/2缺少什么?

HTTP3仍在专注于TLS1.3上,由于TLS1.3无法满足需求而出现的问题。

该协议本身是双向交互的规范。
为了与现有的HTTP相匹配,被强制施加了服务器和客户端的限制。
它将成为完全的P2P。

请求-响应模型是个问题
我们希望能够实现双向交流
将来会越来越多出现

WebSocket在HTTP/2中无法使用。

QUIC 是什么?

谷歌正在开发的基于UDP的功能
为什么选择UDP?
为了解决TCP的问题。
为了消除由数据包丢失导致的瓶颈问题。
0RTT是无法在HTTP/2中突破的障碍。

将HTTP/2进一步提升

如果TCP等进行标准化,变化需要很长时间。
所以,让我们自己用UDP来做吧,这就是流程。

如果有TLS1.3的库,实现HTTP/2协议大约需要一个星期左右,而QUIC协议可能需要数倍的时间。

微软开发了QUIC的实现。
游戏开发者们对此有要求。

我應該往哪裡去呢?

为什么发生了如此大的变化呢,这是什么意思呢?

过去的技术债务正在极尽所能地偿还,我们能跟上吗?如果跟不上的话,那可能会变成债务。HTTP1将会继续存在…

因为那里有协议,所以想要见识高度。
所以要进行实施。

从一开始网页就不容易,只是黑盒子的内容被揭示出来而已。

监控

@songmu
@mikeda
@rrreeeyyy
@fujiwara

为什么要进行监视?

为了找到遇到困境时会感到不便的事物
为了应对未来做好准备
容量规划

为了优化系统而存在的东西。

优化基础设施成本

最近的监视

之前只是进行了检查监视,但现在指标监视大幅增加。
以前大家不知道在监视什么。
可能是使用了独有的cron工具吧。
开始可以共享经验了。

最好不要将度量监控和检查监控分开来考虑。

我觉得最好是将所有的东西都在Zabbix中一起处理,不要分开。

每隔多久获取一次

用1分钟完成,找不到任何质量下降的痕迹,虽然只是几秒钟。

由于人类能够感知的最小单位只有1秒,所以想要抓住这个机会。
但是这样做会导致死亡,所以目前不能实现。

监视是一个困难的问题

真实的。

只有在操作中,才能明白在中间件上应该监视什么。
有太多的取值,或者不需要查看,或者缺少必要的内容。
很难概括。
并且它将成为一个秘密酱。

尽量避免安装太多新的中间件。

时间序列数据库

Datadog正在使用Cassandra
Datadog正在使用Kafka

关于Fluentd的讨论

Fluentd的影响非常大,我认为它带来了几乎实时的日志处理。

广告
将在 10 秒后关闭
bannerAds