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
代码之力
December 05, 2016
Programming
560
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
700
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
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
600
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
200
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
540
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
870
T3DD26: From RAGs to Riches
martinhelmich
0
130
信頼性の目標を誰も求めてない
shubox
0
460
AIエージェント時代のコードレビューを設計する
nogu66
5
1.1k
Flow は今どうなっているか
mizdra
PRO
0
820
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
180
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
120
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.4k
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
120
Featured
See All Featured
Leo the Paperboy
mayatellez
8
2.2k
The Limits of Empathy - UXLibs8
cassininazir
1
620
How to make the Groovebox
asonas
2
2.4k
For a Future-Friendly Web
brad_frost
183
10k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
230
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Deep Space Network (abreviated)
tonyrice
0
280
Statistics for Hackers
jakevdp
799
230k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
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