Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Thrift下的Node.js跨语言异构.pdf
Search
代码之力
December 05, 2016
Programming
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Thrift下的Node.js跨语言异构.pdf
来自UC团队的刘欣
代码之力
December 05, 2016
More Decks by 代码之力
See All by 代码之力
兔基-多通证的自治贴吧
shiningray
1
330
Node.js 服务前端数据接口的演进
shiningray
0
500
Nodejs直出套路
shiningray
2
530
ActionCable和实时交互
shiningray
0
710
Git, Code Review & Continous Integration
shiningray
0
240
Fiber and em-synchrony
shiningray
2
440
屌丝程序员如何打造日PV百万的网站架构.pdf
shiningray
68
26k
Other Decks in Programming
See All in Programming
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.4k
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
280
No More NoSuchMethodError
exoego
1
120
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
250
ChromeでローカルLLM
ryu1013
0
190
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
300
Groovy as a human and AI friendly programming language
paulk
0
180
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
220
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.4k
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
170
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
400
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
320
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
HDC tutorial
michielstock
2
1k
ラッコキーワード サービス紹介資料
rakko
5
5.7M
Documentation Writing (for coders)
carmenintech
77
5.6k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
550
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
810
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
920
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
47k
Transcript
Thrift下的Node.js跨语⾔言异构 来⾃自前端的thrift实践 @刘欣 UC浏览器器内核&中间件团队 * 前端⼯工程师
uc www.uc.cn 2 分享内容 1 2 3 4 5 6
1 2 3 4 5 6 团队/技术背景介绍 为什什么是thrift? thrift框架 相关介绍 成果介绍 —hydra 转码开放平台 live code 问答环节
ok… UC中间件是做什什么的 … 全后端团队 转码定制 压缩省流 ⾼高并发 ⾼高可⽤用 运⾏行行在服务器器端 的mozilla内核
历史 悠久
4 中间件架构图 组件繁多 云端浏览器器内核 各类缓存交错 ⽹网络拓拓扑复杂
5 如何突围? ⾯面对现状,我们如何改变? 业界现状 云端加速已经逐渐失去存在 的⼟土壤,市场和⽤用户的需求 从追求极致速度,变为追求 极致的阅读体验 纯后端体系 中间件从基因上来说,是⼀一
个纯后端的产品,缺乏良好 的对外接⼊入体系,尤其是缺 乏标准可开放的接⼝口 前端应⽤用如何融⼊入 历史悠久的项⽬目,如何快速 让前端业务接⼊入? 进⽽而将中 间件服务器器端变为⼀一个对外 提供数据能⼒力力的中台产品? 技术选型 原有系统接⼝口,函数可复⽤用 保持⾼高可⽤用,⽀支持⾼高并发 标准⽹网络协议 尽可能的解耦
6 为什什么是它 ? Thirft
7 Thrift 背景 2007 / Facebook于2007年年开发 2008 / Apache 2008年年进⼊入Apache开源项⽬目
Now.. ⼴广泛运⽤用于不不同语⾔言之间系 统的异构,C++,python, java使⽤用最多 2014 / nodejs 2014年年 官⽅方开始⽀支持nodejs
8 Thrift的使⽤用场景 什什么场合下使⽤用? ⼤大型项⽬目下,极有可能调⽤用跨语⾔言服务, 跨团队,甚⾄至是外部企业合作,尤其明 显 跨语⾔言服务 数据采⽤用⼆二进制格式传输,相对 XML 和
JSON 体积更更⼩小,对于 ⾼高并发、⼤大数据量量环境更更有优势 ⾼高并发 代码⾃自动⽣生成,在熟悉Thrift 后,开发速度有保障 快速开发
9 Thrift的实现原理理 它的架构如何?⼜又是如何⼯工作的? 图中⻩黄⾊色部分是⽤用户实现的业务逻辑 褐⾊色部分是根据 Thrift 定义的服务接⼝口描 述⽂文件⽣生成的客户端和服务器器端代码框架 红⾊色部分是根据 Thrift
⽂文件⽣生成代码实现 数据的读写操作。 红⾊色部分以下是 Thrift 的传输体系、协议 以及底层 I/O 通信,使⽤用 Thrift 可以很⽅方 便便的定义⼀一个服务并且选择不不同的传输协 议和传输层⽽而不不⽤用重新⽣生成代码。
Rpc的优势 http restful也可以,为什什么要选择Rpc? 01 ⽀支持多接⼝口 有较多接⼝口需要对接 系统的选择 02 部署灵活 03
⻓长连接 win RPC:远程过程调⽤用。RPC的核⼼心并不不在于使⽤用什什么协议。RPC 的⽬目的是让你在本地调⽤用远程的⽅方法,⽽而对你来说这个调⽤用是 透明的,你并不不知道这个调⽤用的⽅方法是部署哪⾥里里。通过RPC能 解耦服务,这才是使⽤用RPC的真正⽬目的。。
11 UC云端服务的Thrift运⽤用 我们是如何⽤用Thrift来解开前后端耦合的? 中间件的服务,本质上是将⻚页⾯面在服务器器端进⾏行行js 渲染之后产⽣生 的dom结构进⾏行行清洗,并提炼出对⽤用户有核⼼心价值的内容,再重 新组合,排版,展现给⽤用户,我们称之为转码服务 思路路是,中间件只是提供⾼高可⽤用和稳定的js渲染环境,⽽而数据清 洗的,往往是每个实际业务都有⾃自⼰己独有的需求和清洗逻辑 我么将通过Thrift框架⽣生成的代码,使⽤用rpc协议将其交给各个独
⽴立的nodejs 服务去进⾏行行,也就实现了了数据和业务的分离,可以将 中间件的能⼒力力提供给各个集团内的业务单元来使⽤用
12 实际成果输出 Hydra转码开放平台———铁⻢马爬⾍虫系统 我们快速的中间件 的js渲染能⼒力力输出 给了了业务⽅方 业务⽅方不不⽤用在本地 使⽤用phatomjs之 类耗费⼤大量量本地资 源,且难以被前端
掌控的各类⾼高并发, ⾼高可⽤用问题
性能展示 Hydra转码开放平台———铁⻢马爬⾍虫系统 1. 平均⻚页⾯面抽取时间4.5s(在服务器器端经过js 渲染之后), 同⽐比phatomjs, electron都要 快接近1倍 性能 成功率
业务数据获取 浏览器器数据获取 99 % 91 %
live code
Q&A 微信 366348