Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Thrift下的Node.js跨语言异构.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
代码之力
December 05, 2016
Programming
550
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
320
Node.js 服务前端数据接口的演进
shiningray
0
480
Nodejs直出套路
shiningray
2
520
ActionCable和实时交互
shiningray
0
690
Git, Code Review & Continous Integration
shiningray
0
240
Fiber and em-synchrony
shiningray
2
420
屌丝程序员如何打造日PV百万的网站架构.pdf
shiningray
68
26k
Other Decks in Programming
See All in Programming
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
850
Foundation Models frameworkで画像分析
ryodeveloper
1
610
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
140
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
480
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
330
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
400
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
850
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
Cloudflare is Agents
chimame
0
160
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.9k
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Odyssey Design
rkendrick25
PRO
2
750
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
470
How STYLIGHT went responsive
nonsquared
100
6.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Statistics for Hackers
jakevdp
799
230k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
460
Code Review Best Practice
trishagee
74
20k
Everyday Curiosity
cassininazir
0
280
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