本次分享主要介绍实时音视频技术的部分技术细节,提供染色抓包、全息日志和异常发现的Node.js基础设施

摘要2018 音视频技术沙龙·上海站丨又拍云 Open Talk
NO.42。一、活动介绍随着移动互联网的普及和智能终端设备的广泛应用,短视频、在线教育、
在线狼人杀、直播竞答等各类形式的音视频形式的应用越来越广泛,技术的不断升级正在提升应用的体验。本期又拍云
Open Talk
,将会结合一线的实践案例,与众多音视频开发者探讨新一代音视频技术的实践和发展趋势。又拍云
Open Talk
是由又拍云发起的系列主题分享沙龙,秉承又拍云帮助企业提升发展速度的初衷,从
2015 年开启以来,Open Talk 至今已成功举办 41 期,辐射线上线下近 70,000
技术人群。不管是从某个“主题”出发,并从横向拓展技术干货分享,还是以某个“品牌企业”为主,从纵深丰富演讲内容,活动都场场爆满。截止目前,又拍云
Open Talk 已经举办 41 期活动,分别在北京、上海、广州、深圳、杭州等12
座城市举办,覆盖美拍、唱吧、美联集团、唯品会、哔哩哔哩、华为等诸多知名企业,往期的活动的讲稿及视频详见:
年 06 月 24 日( 周日
)14:00-17:30三、活动地点上海市徐汇区田林路200号C座一楼
COCOSPACE四、活动流程13:00-14:00签到14:00-14:40刘华平 /
网易云音乐音视频实验室负责人
《音效算法及在音乐流媒体平台上的应用》14:40-15:20朱高锋 /
又拍云多媒体开发资深工程师
《窄带高清编码实现》15:20-15:30茶歇15:30-16:10李志杰 / 谷人云 CEO
《实时音视频技术的边边角角》16:10-16:50石硕 / 战旗直播高级流媒体工程师
《视频直播的用户体验体系与质量监控方案》16:50-17:30自由交流五、嘉宾介绍分享嘉宾一:刘华平
,网易云音乐音视频实验室负责人上海大学通信学院在职博士,曾任掌门集团(WIFI万能钥匙)音视频技术研发总监,资深研究员;行者悟空声学技术有限公司首席技术官(联合创始人);阿里巴巴前高级技术专家(P8),
阿里音乐音视频部门总监;Visualon音频部门经理、盛大创新院研究员、Freescale
上海研发中心多媒体部门。早期 Google Android SDK多媒体架构的贡献者,开源
AMR_WB
编码器工程开发者;5项技术发明专利、二十余篇专业论文和多项软件著作权,参与过浙江省杭州重大专项项目,浙江省金华科委项目,上海市科委项目(球谐域全景音频关键技术研究)。分享主题:音效算法及在音乐流媒体平台上的应用主题简介:按某一维度对数字音频后处理相关算法进行分类讲解,同时介绍目前主流平台上音效相关产品的设计,同时对数字音频后处理算法发展方向进行个人的解读。分享嘉宾二:朱高锋,又拍云多媒体开发资深工程师先后任职于诺基亚等通信公司,目前主要负责又拍云
PrismCDN 项目的设计与开发工作,对 P2P
、流媒体技术有较深入的研究。PrismCDN 是在 CDN 的基础上完美融合 P2P
及流媒体技术,高效整合利用零散闲置的上行带宽资源构建内容分发网络服务。分享主题:《窄带高清编码实现技术》主题简介:视频转码产生的成本,远远小于带宽的成本,在视频质量损失没有感知的情况下,通过窄带高清技术实现码率
30%
的节省,可以大大降低带宽的成本。本次分享,将介绍又拍云如何实现窄带高清及将来的优化思路。分享嘉宾三:李志杰,谷人云
CEO曾就职于腾讯无线,盛大SDO,阿里数娱负责运维平台开发和运维体系的搭建,后就职于苏州蜗牛负责VR平台以及直播CDN平台的整体规划和团队管理,在完整的经历了VR的迅速衰退和CDN的群雄火拼后成功以项目失败告终。目前整合以前工作中的优势资源创办了谷人云,开始在实时互动音视频,网络实时传输领域提供公有云以及私有云的服务。分享主题:《实时音视频技术的边边角角》主题简介:当前在各类社交产品及教育产品中,实时音视频技术已经得到普及和大范围使用,本次分享主要介绍实时音视频技术的部分技术细节,并且结合案例探讨实时音视频技术和业务在结合过程中的一些实现流程和细节注意点。最后简单介绍当前市场实时音视频技术的发展历程和市场情况。分享嘉宾四:石硕,战旗直播高级流媒体研发工程师2012年进入直播行业,先后在奥点云、战旗直播从事流媒体开发工作;2013年独立完成《RTMP协议规范1.0》的中文翻译;对于Windows、Android、iOS平台的直播和播放框架都有一定的研究。分享主题:《视频直播的用户体验体系与质量监控方案》​主题简介:随着直播行业的火热,用户对观看体验的要求也越来越高,高清、流畅、低延迟成为了各大直播平台竞相追逐的目标;什么样的视频流才能达到最佳的观看体验,如何在成本与用户体验之间做选择,这是每个平台都需要思考的问题。为了提高用户体验,视频直播的质量监控就显得尤为重要;通常情况下,视频的分辨率是比较容易收集的,流畅度可以通过卡顿率来收集,但延迟的收集就比较费劲了,目前业界还没有一个完美的解决方案,需要自己动手。往期讲稿/视频回顾
“付费票” 的参会者可以凭票参与现场 “圆点机械键盘” 的抽奖,奖品数量总共 2
台。七、主办方又拍云是国内知名企业级云服务商、国家高新技术企业,持有工信部颁发的
CDN 牌照;致力于为客户提供一站式的在线业务加速服务,以场景化 CDN
、PrismCDN 为核心,为客户提供对象存储、HTTPS/SSL 证书、多媒体处理(WebP
自适应、H.265 自适应、窄带高清等)、影像识别、文字识别、短视频 SDK、直播
SDK、连麦 SDK
等服务,打造了安全可靠的全站加速、海外加速、图片应用、短视频应用、直播应用、音频应用等场景化解决方案。又拍云拥有
6 个数据处理中心、300 多个国内CDN节点、15 个海外CDN节点、5000
台服务器、5TB 保有带宽,日均请求超过 1000 亿次。八、协办方谷人云成立于
2015 年,专注于互动音视频领域,核心员工来自 YY、腾讯和阿里等。谷人云于
2016
年先后发布高质量游戏语音消息组件,即时通讯组件,实时互动语音组件以及实时互动视频组件,在协议优化以及实时传输领域对外输出技术。目前谷人云主要服务于游戏、教育、直播,金融,通讯等多种类型客户,月用户总使用时长过亿分钟,服务覆盖中国以及海外各地。IT趣学社致力于互联网技术分享和交流,打造最全面的互联网/IT行业会员网络,汇聚互联网/IT高端技术精英,促进行业交流,实现资源共享。IT趣学社成功举办多次互联网/IT精英技术沙龙/峰会,邀请国内国外互联网/IT顶尖专家分享最热的技术,每场沙龙参会嘉宾、沙龙晚宴到场嘉宾人数爆满且级别质量很高,IT趣学社目前拥有北京、上海、广州、深圳、成都、西安技术普通社群共
180+个社群,拥有精英联盟( CTO & 运维总监)群共 6 个,累积汇集了 500 个
CTO 和 1500 多个运维总监/经理会员,共计有 80000+
技术会员。COCOSPACE是双创大潮中成长起来的创新型孵化器行业
的领导者,公司以“投资型科创空间运营商”为业务定位,
秉承着着为年轻人提供“co-work & co-coffee”的休闲
办公社区的初心,树立了独具特色的“基地+基金”、
“孵化+投资”科创空间运营模式,以“+创业投资、+创
业教练、+创业者社区”的“COCO+”为核心价值体系,
致力于为创业公司和成长型企业提供灵动办公空间、全程
资本服务、深度创业辅导和全栖创业者社区等一站式创业
服务。九、合作伙伴十、联系我们活动咨询请添加又小拍微信号:upyun1111
或扫描下方二维码,备注“音视频技术沙龙”,主办方将会邀请您到活动群,活动直播链接也将会在活动群内发布。

摘要经过腾讯六年的迭代与沉淀, Tencent Server Web (以下简称TSW)
这一公司级运维组件将正式开源并发布到Github。基本介绍Tencent Server
Web(TSW),是一套面向WEB前端开发者,以提升问题定位效率为初衷,提供染色抓包、全息日志和异常发现的Node.js基础设施。TSW关注业务的运维监控能力,适用于http、websocket协议的业务场景,可无缝与即有项目进行整合。支持公有云、私有云和本地部署。TSW每天为百亿次请求提供稳定服务,广泛应用在QQ空间、微视、微云、QQ音乐、全民K歌、腾讯云等三十多个重要业务当中。开放平台官方网站tswjs.org,同时也是开放平台,提供用户维度的日志/抓包/监控服务。了解更多选择自己喜欢的登录方式QQ登录
— 适合个人用户微信登录 — 适合个人用户企业微信登录 —
适合企业用户用户维度的抓包对于染色的用户对请求生命周期内的抓包进行收集提供抓包查看、下载等功能抓包格式支持Fiddler和Charles,以及HAR用户维度的全息日志对请求生命周期内的日志,采用全息的方式记录,形成流水流水按用户维度聚合提供查看功能,快速定位问题原因异常发现内置指标实时监控代码异常推送告警应用案例           
                             
                             
                             
              
          资源地址官方网址:

摘要NGINX 官方博客正式宣布 NGINX 支持原生的
gPRC,现在就可以从代码仓库拉取快照版本。该特性将会被包含在 NGINX OSS
1.13.10、NGINX Plus R15 以及 NGINX 1.13.9 当中。引言NGINX
官方博客正式宣布 NGINX 支持原生的
gPRC,现在就可以从代码仓库拉取快照版本。该特性将会被包含在 NGINX OSS
1.13.10、NGINX Plus R15 以及 NGINX 1.13.9
当中(博客原文链接:
已经能够代理 gRPC TCP 连接,用户可以用它:发布 gRPC 服务,并应用 NGINX
提供的 HTTP/2 TLS 加密机制、速率限定、基于 IP
的访问控制以及日志等功能。在单个端点上发布多个 gRPC 服务,使用 NGINX
检查方法调用,将各个方法调用路由到相应的服务上。对一组 gRPC
服务进行负载均衡,可以使用轮询算法、最少连接数原则或其他方式在集群上分发流量。什么是
gRPC?gRPC
是一种远程过程调用协议(gRPC官网:
3.x,基于Netty 4.x +,用于客户端和服务器端之间的通信。gRPC
紧凑小巧,跨多种编程语言,同时支持请求与响应式的交互方式和流式交互方式。gRPC
因其跨语言特性和简洁的设计变得越来越流行,其中服务网格的实现就使用了
gRPC。gRPC 通过 HTTP/2 传输数据,可以传输明文文本数据和 TLS
加密过的数据。gRPC 调用是通过 HTTP POST
请求来实现的,每个请求里包含了一个编码过的消息体(protocol buffer
是默认的编码方式)。gRPC
的响应消息里也包含一个编码过的消息体,并在消息尾部带上状态码。gRPC
不能通过 HTTP 进行传输,而必须使用 HTTP/2,这是因为要充分利用 HTTP/2
连接的多路复用和流式特性。通过 NGINX 来管理 gRPC 服务下面的示例对 gRPC
的 Hello World
快速入门教程进行了修改,用它来创建一个简单的客户端到服务器端应用。例子中提供了
NGINX
的配置信息,而把应用程序的实现留给读者,不过文中还是会给出一些提示。1、暴露简单的
gRPC 服务首先,在客户端和服务器端之间安插 NGINX,NGINX
为服务器端的应用程序提供了一个稳定可靠的网关。然后开始部署包含了 gRPC
更新包的 NGINX。如果要从源代码开始编译 NGINX,要记得把 http_ssl 和
http_v2 两个模块包含进去:$ auto/configure –with-http_ssl_module
—with-http_v2_moduleNGINX 使用一个 HTTP 服务器来监听 gRPC 流量,并使用
grpc_pass 指令来代理 gRPC 流量。像下面的配置那样,在 80
端口上监听未加密的 gRPC 流量,并把请求重定向到 50051 端口上:http {
log_format main ‘$remote_addr – $remote_user [$time_local]
“$request” ‘ ‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent”‘; server { listen 80 http2; access_log
logs/access.log main; location / { # Replace localhost:50051 with the
address and port of your gRPC server # The ‘grpc://’ prefix is
optional; unencrypted gRPC is the default grpc_pass
grpc://localhost:50051; } }}要确保 grpc_pass
的地址是正确的。然后重新编译客户端,让它指向 NGINX 的 IP
地址和端口。在运行新的客户端时,可以看到与之前一样的响应消息,不过这时
NGINX 会终断和转发事务。这个可以从访问日志中看出来:$ tail
logs/access.log192.168.20.1 – – [01/Mar/2018:13:35:02 +0000] “POST
/helloworld.Greeter/SayHello HTTP/2.0” 200 18 “-”
“grpc-go/1.11.0-dev”192.168.20.1 – – [01/Mar/2018:13:35:02 +0000]
“POST /helloworld.Greeter/SayHelloAgain HTTP/2.0” 200 24 “-”
“grpc-go/1.11.0-dev”要注意,NGINX 不支持在同一个明文(非
TLS)端口上同时使用 HTTP/1 和
HTTP/2,如果一定要同时使用两种版本的协议,需要分别为它们创建不同的端口。2、发布基于
TLS 的 gRPC 服务Hello World 快速入门教程使用的是未加密的
HTTP/2,这样方便测试和部署,但要部署到生产环境就不能这么简单了。可以通过
NGINX 来增加一个加密层:创建一个自签名的证书对,然后修改 NGINX
服务器的配置如下:server { listen 1443 ssl http2; ssl_certificate
ssl/cert.pem; ssl_certificate_key ssl/key.pem; #…}让 gRPC
客户端使用 TLS,连接到 1443
端口,并禁用证书检查——这在使用自签名证书或未经信任的证书时是一个必要的步骤。例如,如果使用了
Go 语言编写的示例,就需要导入 crypto/tls 和
google.golang.org/grpc/credentials,并修改 grpc.Dial() 方法:creds :=
credentials.NewTLS( &tls.Config{ InsecureSkipVerify: true } )//
记得修改地址,使用新的端口conn, err := grpc.Dial( address,
grpc.WithTransportCredentials( creds ) )这样就可以加密 gRPC
流量了。在部署到生产环境时,需要将自签名证书换成由可信任证书机构发布的证书,客户端也需要配置成信任该证书。3、代理加密的
gRPC 服务有时候可能需要在内部对 gRPC
流量进行加密,那么就要修改服务器端应用程序的配置,把原先监听未加密(grpc)连接改为监听
TLS 加密(grpcs)连接。cer, err := tls.LoadX509KeyPair( “cert.pem”,
“key.pem” )config := &tls.Config{ Certificates: []tls.Certificate{cer}
}lis, err := tls.Listen( “tcp”, port, config )在 NGINX 的配置里,需要将
grpc-pass 配置成上游服务器的地址:# Use grpcs for TLS-encrypted gRPC
trafficgrpc_pass grpcs://localhost:50051;4、路由 gRPC
流量如果同时存在多个 gRPC
服务,并且每个服务是由不同的服务器应用程序提供的,那么该怎么办?如果能够将这些服务通过单个
TLS 端点暴露出来是不是更好?在 NGINX
里,可以对服务和它的方法稍作修改,然后使用 location 指令来路由流量。gRPC
的请求 URL 是使用包名、服务名和方法名来生成的。比如这个叫作 SayHello 的
RPC 方法:package helloworld;service Greeter { rpc SayHello
(HelloRequest) returns (HelloReply) {}}调用这个方法就会生成一个 POST
请求,URL 是
/helloworld.Greeter/SayHello,这个可以从日志中看出来:192.168.20.1 – –
[01/Mar/2018:13:35:02 +0000] “POST /helloworld.Greeter/SayHello
HTTP/2.0” 200 18 “-” “grpc-go/1.11.0-dev”要使用 NGINX
来路由流量,可以这样配置:location /helloworld.Greeter { grpc_pass
grpc://192.168.20.11:50051;}location /helloworld.Dispatcher { grpc_pass
grpc://192.168.20.21:50052;}location / { root html; index index.html
index.htm;}6、对 gRPC 流量进行负载均衡那么该如何增加 gRPC
服务的容量,以便提供高可用性?可以使用 NGINX 的 upstream 组:upstream
grpcservers { server 192.168.20.21:50051; server
192.168.20.22:50052;}server { listen 1443 ssl http2; ssl_certificate
ssl/certificate.pem; ssl_certificate_key ssl/key.pem; location
/helloworld.Greeter { grpc_pass grpc://grpcservers; error_page 502 =
/error502grpc; } location = /error502grpc { internal; default_type
application/grpc; add_header grpc-status 14; add_header grpc-message
“unavailable”; return 204; }}当然,如果上游监听的是 TLS 端口,可以使用
grpc_pass grpcs://upstreams。NGINX
支持多种负载均衡算法,其内置的健康检测机制可以检测到无法及时响应或发生错误的服务器,并把它们移除。如果没有可用的服务器,就会返回
/error502grpc 指定的错误消息。

相关文章