Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nodejs直出套路

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for 代码之力 代码之力
December 05, 2016

 Nodejs直出套路

来自腾讯的姚穗斌的分享

Avatar for 代码之力

代码之力

December 05, 2016
Tweet

More Decks by 代码之力

Other Decks in Programming

Transcript

  1. 定一个小目标,用Nodejs做直出页面 • Step 1,先打通各种后台server • Http(s) • protobuf协议 • Redis

    • Mysql • 私有协议 • UDP协议 • … • 外部协议都能找到npm包了,但私有协议怎么搞?
  2. EasySock模块 • 为解决以下问题而生: • 处理socket发送、接收数据,以及数据包完整性校验 • 封装网络请求中各种复杂的异步调用以及中间过程,屏蔽tcp连接细节 • 支持长连接、socket复用以及并发请求 •

    自动管理连接状态,在合适的时候帮你断开连接或重新连接 • 各种异常处理 • 屏蔽复杂的网络操作: • Socket生命周期管理,用长连接还是短连接? • 并发请求带来的复杂度增长 • TCP和UDP在socket复用上的差异 • https://github.com/ysbcc/easy_sock TCP UDP EasySock
  3. 加入负载均衡 • 线上服务不能单点运行 • EasySock之上增加名字服务 • 外部调用 • 请求名字服务,获取服务器ip/端口 •

    创建EasySock建立服务器连接 • 发起网络请求 • 将连接保存进连接池,对不同ip地址的服务器各维护一个长连接 name TCP UDP EasySock Sockapi
  4. 套路三:一个完整的直出页面 • 所有页面生成都可归结为这3个过程: • 请求数据 • 加工数据 • 页面渲染 •

    一个直出服务只需写2个文件 • data.json 用于描述数据请求,以及数据处理 • template.tpl 模板文件,用于渲染