成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

開發(fā) 架構(gòu)
本文主要講服務(wù)開發(fā)過程中的痛點(diǎn)、從服務(wù)框架的演進(jìn)歷程中找到規(guī)律、大型微服務(wù)框架的設(shè)計(jì)要點(diǎn)和框架關(guān)鍵實(shí)現(xiàn)細(xì)節(jié)。

大綱

• 發(fā)現(xiàn)問題:服務(wù)開發(fā)過程中的痛點(diǎn)

• 以史鑒今:從服務(wù)框架的演進(jìn)歷程中找到規(guī)律

• 大道至簡:大型微服務(wù)框架的設(shè)計(jì)要點(diǎn)

• 精雕細(xì)琢:框架關(guān)鍵實(shí)現(xiàn)細(xì)節(jié)

復(fù)雜業(yè)務(wù)開發(fā)過程中的痛點(diǎn)

痛點(diǎn)

• 時(shí)間緊、任務(wù)多、團(tuán)隊(duì)大、業(yè)務(wù)增快,如何還能保證架構(gòu)穩(wěn)定可靠?

• 研發(fā)水平參差不其、項(xiàng)木壓力自顧不暇,如何保證質(zhì)量基線不被突破?

• 公司有各種⼯具平臺、 SDK、優(yōu)秀實(shí)踐,如何盡可能的在業(yè)務(wù)中使用?

•用什么“框架”可以解決問題?

從服務(wù)框架的演進(jìn)歷程中找到規(guī)律

讓我們先來看下服務(wù)框架的進(jìn)化史

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

 

標(biāo)志性的服務(wù)框架

Web 服務(wù)框架: MVC 架構(gòu)

• ASP.Net(since 2002):傳統(tǒng) C/S 開發(fā)模式在 Web 上的應(yīng)⽤

• Ruby on Rails(since 2005): MVC 框架的巔峰, “約定⼤于配置”

• Web 服務(wù)框架: SaaS 與 RESTful

• Sinatra(since 2007):純路由框架,諸多框架的靈感源泉

• 微服務(wù)框架: RPC 服務(wù)

• Thrift(since 2007):開源 IDL-based 框架的⿐祖

• 微服務(wù)架構(gòu):容器化與 FaaS

• Serverless(since 2015):基于云計(jì)算平臺,回歸框架本質(zhì)

• Istio(since 2018):專注于解決網(wǎng)絡(luò)問題

服務(wù)框架的演進(jìn)趨勢

服務(wù)框架正在演變成新的“操作系統(tǒng)”

• 學(xué)習(xí)曲線: Exponential Rise(漸進(jìn)式) → Sigmoid(階躍式)

• 風(fēng)格:配置 → 約定 → DSL → 容器化

• 業(yè)務(wù)代碼與框架代碼的關(guān)系: Is-a → Has-a → Duck-typing

• 工具鏈: IDE → 代碼⽣成器 → 編譯器

大型微服務(wù)框架的設(shè)計(jì)要點(diǎn)

站在全局視⻆觀察微服務(wù)架構(gòu)

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

 

大型微服務(wù)框架的設(shè)計(jì)目標(biāo)

框架即一款面向開發(fā)人員的效率產(chǎn)品,基于公司的基礎(chǔ)設(shè)施量身定制

• 目標(biāo)用戶:來不不同背景、具有基本業(yè)務(wù)研發(fā)能⼒的開發(fā)者

• 設(shè)計(jì)要點(diǎn):讓開發(fā)人員專注于業(yè)務(wù)開發(fā)本身,無需關(guān)注滴滴各種基礎(chǔ)設(shè)施底層細(xì)節(jié)

• 設(shè)計(jì)原則:直觀、簡潔、智能、個(gè)性化

• 預(yù)期收益:提升⼈效,降低維護(hù)成本;提升整體架構(gòu)穩(wěn)定性和可伸縮性;簡化技術(shù)升級難度

大型微服務(wù)框架的設(shè)計(jì)要點(diǎn)

完全屏蔽業(yè)務(wù)無關(guān)的通用技術(shù)細(xì)節(jié)

• 功能:服務(wù)治理、虛擬化、水平擴(kuò)容、問題定位、性能壓測、系統(tǒng)監(jiān)控、兼容遺留系統(tǒng)……

• 工具鏈:項(xiàng)目模板、代碼生成器、文檔生成器、發(fā)布打包腳本……

• 設(shè)計(jì)⻛格: Interceptors、組合模式、依賴注入……

• 讓不可靠的調(diào)⽤變得可靠

• RPC 調(diào)用 ≈ 函數(shù)調(diào)用

• 訪問基礎(chǔ)服務(wù) ≈ 訪問本地存儲

• 服務(wù)拆分/合并 ≈ 類拆分/合并

框架關(guān)鍵實(shí)現(xiàn)細(xì)節(jié)

業(yè)務(wù)實(shí)踐

業(yè)務(wù)背景:復(fù)雜的業(yè)務(wù)流程,快速增漲與迭代,異構(gòu)服務(wù)架構(gòu),跨國多機(jī)房部署

• 核心能力

• 隔離層封裝:各種存儲、隊(duì)列、平臺服務(wù)封裝

• 透明支持各種運(yùn)維基礎(chǔ)設(shè)施:構(gòu)建、發(fā)布、多機(jī)房配置、 metrics

• 提供效率和測試⼯具:⽇志采集、問題⾃動跟蹤、全鏈路壓測、 mock、接⼝測試

• 應(yīng)⽤層協(xié)議隔離:⽀持 thrift/http 協(xié)議 interceptor

• 工具鏈:模板、代碼⽣成器、依賴管理、版本管理、發(fā)布腳本

站在巨人肩膀上:滴滴基礎(chǔ)平臺建設(shè)現(xiàn)狀

• Odin:運(yùn)維平臺,提供 metrics 上報(bào)、多維度監(jiān)控、報(bào)警、服務(wù)樹等功能

• 把脈:日志平臺,提供日志采集通道、基于 traceid 的全鏈路⽇志查詢能⼒

• DiSF:服務(wù)注冊平臺,提供高可用的服務(wù)名字服務(wù)、管理服務(wù)分組

• RDS:提供高可用、透明水平擴(kuò)展的 MySQL 集群,支持?jǐn)?shù)據(jù)總線、分身等能力

• DDMQ:低延遲高可用的消息隊(duì)列服務(wù),單機(jī) TPS 吞吐超過百萬,支持延時(shí)消息

• Fusion:基于 rocksdb 的高性能高可用分布式持久化存儲方案,完全兼容 Redis 協(xié)議

• 彈性云:基于 k8s,高效、可伸縮的集群管理平臺,服務(wù)自動容錯(cuò),基礎(chǔ)設(shè)施免運(yùn)維

整體架構(gòu)

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

 

實(shí)現(xiàn)要點(diǎn):框架與業(yè)務(wù)正交

實(shí)現(xiàn)思路

• 傳統(tǒng)框架的 MVC、 middleware、 AOP、執(zhí)行流程……都不存在也不需要

• 框架是一個(gè)執(zhí)行環(huán)境,由一堆不關(guān)聯(lián)的基礎(chǔ)庫組成高度可擴(kuò)展,業(yè)務(wù)可獨(dú)立于框架運(yùn)行

如何實(shí)現(xiàn)

• 提供工具鏈,用于生成最初的項(xiàng)⽬模板并通過代碼生成器實(shí)現(xiàn)類似 AOP 的效果

• 基于 Go interface 的 duck-typing 特性和運(yùn)行時(shí)反射,動態(tài)生成業(yè)務(wù)路由

收益

• 業(yè)務(wù)開發(fā)⽆需關(guān)注框架本身

• 框架本身的升級可以做到完全透明,方便所有服務(wù)統(tǒng)一框架版本

框架的啟動邏輯

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

 

實(shí)現(xiàn)要點(diǎn):隔離層屏蔽業(yè)務(wù)與底層的聯(lián)系

如何實(shí)現(xiàn)

• 為所有基礎(chǔ)服務(wù)(mysql/redis/mq/es/...)定義 interface,業(yè)務(wù)只允許調(diào)用 interface 的方法

• 基于 SPI 設(shè)計(jì)思路,提供基礎(chǔ)服務(wù)的工廠,動態(tài)實(shí)例化對應(yīng) interface

收益

• 可透明的升級服務(wù)驅(qū)動,快速在大量服務(wù)中實(shí)現(xiàn)共性邏輯或者修復(fù)共性問題

• 透明的管理基礎(chǔ)服務(wù)的資源(長連接、 mysql cursor 等),避免出現(xiàn)資源泄露

• 統(tǒng)⼀控制重試、超時(shí)、服務(wù)發(fā)現(xiàn)、故障摘除邏輯,業(yè)務(wù)⽆感知且不易出錯(cuò),提升整體穩(wěn)定性

• 對所有基礎(chǔ)服務(wù)提供了 mock 能力,可以實(shí)現(xiàn) AOP 能力

案例: Redis 接口設(shè)計(jì)

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

 

實(shí)現(xiàn)要點(diǎn):協(xié)議劫持

如何實(shí)現(xiàn)

• HTTP 協(xié)議:包裝 http.Handler,用責(zé)任鏈模式處理 http.Request 和 http.ResponseWriter

• RPC 協(xié)議:劫持協(xié)議序列化流程,用FSM(有限狀態(tài)機(jī))來跟蹤序列化過程并適時(shí)修改數(shù)據(jù)

收益

• 將業(yè)務(wù)數(shù)據(jù)和服務(wù)框架數(shù)據(jù)充分隔離,避免互相⼲擾

• 實(shí)現(xiàn)接口熱補(bǔ)丁和 in/out 數(shù)據(jù)錄制與重放,方便測試

• 可透明的增強(qiáng)服務(wù)能力,為實(shí)現(xiàn)跨服務(wù)邊界的 context 打好基礎(chǔ)

使用FSM 劫持 thrift protocol

FSM 實(shí)現(xiàn)思路

• 利用 Go interface 特性,實(shí)現(xiàn)一個(gè) interfaceproxy,代理并劫持部分感興趣的接口

• 維護(hù)一個(gè) FSM 狀態(tài)機(jī),當(dāng) protocol read/write走到感興趣的地⽅時(shí)候篡改 read/write 數(shù)據(jù)

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

 

實(shí)現(xiàn)要點(diǎn):跨服務(wù)邊界的 context

如何實(shí)現(xiàn)

• 實(shí)現(xiàn)符合 context.Context 接口的自定義 context,支持序列化與反序列化,支持超時(shí)控制

• 結(jié)合協(xié)議劫持,透明的從服務(wù)框架數(shù)據(jù)中提取必要信息進(jìn)行反序列化,并在所有 RPC 調(diào)用前

透明的將最新 context 序列化并放在服務(wù)框架數(shù)據(jù)中傳輸給下游

• 需要重新實(shí)現(xiàn)一個(gè)基于時(shí)間片輪轉(zhuǎn)的低精度 time.Timer,提升并發(fā)效率并避免 timer 泄露

收益

• 可透明的在服務(wù)間傳遞上下文信息,從而實(shí)現(xiàn)流量染色、調(diào)用跟蹤、防雪崩等功能

低精度 timer 實(shí)現(xiàn)原理

滴滴出行架構(gòu)大神分享:大型微服務(wù)框架設(shè)計(jì)實(shí)踐

 

實(shí)現(xiàn)要點(diǎn):防雪崩

如何實(shí)現(xiàn)

• 通過跨服務(wù)邊界的 context 來傳遞上游超時(shí)預(yù)期,并不斷記錄各個(gè)環(huán)節(jié)耗時(shí)

• 一旦框架發(fā)現(xiàn)自己的可用時(shí)間已經(jīng)耗盡,主動終止后續(xù) rpc 調(diào)⽤并快速返回,防止請求積壓

收益

• 從根本上避免請求堆積造成的雪崩

跨服務(wù)邊界的超時(shí)時(shí)間控制

超時(shí)信息如何跨服務(wù)邊界傳遞

• 超時(shí)時(shí)間由最上游設(shè)置,框架捕捉到超時(shí)信息并將時(shí)間記錄在 trace 里透明的傳播到下游每一個(gè)服務(wù)節(jié)點(diǎn)

• 每個(gè)節(jié)點(diǎn)從接收到請求開始后計(jì)時(shí),自動計(jì)算自己消耗的時(shí)間并計(jì)算當(dāng)前調(diào)用鏈路總耗時(shí)

• 當(dāng)鏈路總耗時(shí)超過超時(shí)時(shí)間,自動 fail-fast,快速返回失敗信息

• 利⽤ Go context deadline 只會縮短不會提前的特性,方便的用 context 管理超時(shí)

• 避免服務(wù)器之間的時(shí)鐘差異影響計(jì)時(shí),始終使用時(shí)間差來記錄號是,而不使用絕對 deadline

業(yè)務(wù)收益

支撐規(guī)模

• 涉及開發(fā)人員近 100 人,上線 70+ 服務(wù),國內(nèi)外雙機(jī)房部署

• 可支撐百萬級日訂單規(guī)模、萬級并發(fā)長連接

業(yè)務(wù)收益

• 零成本:透明接⼊公司運(yùn)維、發(fā)布、日志、壓測等平臺,支持服務(wù)注冊發(fā)現(xiàn)、彈性伸縮等能力

• 零事故:從未出現(xiàn)因?yàn)閱吸c(diǎn)故障造成的全局穩(wěn)定性事故

• 高質(zhì)量:快速實(shí)現(xiàn)全鏈路壓測常態(tài)化,透明實(shí)現(xiàn)多環(huán)境部署、單測、集成測試等

• 易維護(hù):透明升級各種 driver,簡化代碼依賴管理過程

未來計(jì)劃

提升開發(fā)者體驗(yàn)

• 命令行工具,用于整合各種工具

• 進(jìn)一步與滴滴線上線下環(huán)境整合

• 整合更多的公司服務(wù)和框架

• 配置管理中⼼化

• 開源?

責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2016-05-24 16:47:04

滴滴出行分布式架構(gòu)設(shè)計(jì)

2017-12-01 11:00:16

WOTD滴滴出行賴春波

2017-11-02 10:10:00

服務(wù)器滴滴車主APP異常

2017-05-16 06:23:07

2016-11-24 10:00:55

華為敏捷網(wǎng)絡(luò)

2016-04-07 10:35:46

架構(gòu)設(shè)計(jì)架構(gòu)師滴滴出行

2017-06-30 15:33:57

大數(shù)據(jù)數(shù)據(jù)分析用戶評論

2024-01-29 08:20:03

物化視圖StarRocksOLAP系統(tǒng)

2016-04-15 00:47:14

滴滴出行架構(gòu)師架構(gòu)設(shè)計(jì)

2021-07-05 06:10:55

滴滴出行網(wǎng)絡(luò)安全數(shù)據(jù)安全

2021-07-08 05:42:01

滴滴出行網(wǎng)絡(luò)安全數(shù)據(jù)安全

2017-12-02 18:53:27

滴滴出行業(yè)務(wù)中臺對策

2019-08-16 08:41:00

微服務(wù)架構(gòu)安全

2015-07-22 15:19:46

Docker云計(jì)算微服務(wù)

2022-04-25 10:44:08

微服務(wù)架構(gòu)設(shè)計(jì)

2020-12-28 12:22:12

微服務(wù)架構(gòu)微服務(wù)API

2018-01-23 13:59:30

滴滴出行

2017-05-05 16:10:39

滴滴出行斯坦福人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品一区二区观看 | 欧美成视频 | 日韩网站免费观看 | 欧美中文字幕一区二区三区 | 日韩精品免费一区 | 免费黄色录像视频 | 久久久国产一区二区三区 | 成人免费大片黄在线播放 | 亚洲视频一区在线观看 | 国产情侣久久 | 国产美女h视频 | 男女在线网站 | 国产剧情久久 | 围产精品久久久久久久 | 亚洲激情在线 | 精品亚洲一区二区三区 | 欧美一区二区三区 | 国产91在线视频 | 男女羞羞视频在线看 | a级毛片毛片免费观看久潮喷 | 91精品国产自产在线老师啪 | 中文字幕国产视频 | 在线看片国产 | 一区二区在线不卡 | 先锋资源吧 | 午夜影院 | 精品久久久久久久久久久 | 欧美在线a | 福利av在线| 成人在线视频免费播放 | 国产精品18hdxxxⅹ在线 | 中文字幕日韩在线 | 国产99久久精品 | 成年人在线观看视频 | 日本特黄a级高清免费大片 特黄色一级毛片 | 日本不卡一区二区三区在线观看 | 久久视频精品 | 四虎最新视频 | 欧美日韩一 | 欧美精品成人一区二区三区四区 | 国产精品久久久久久一区二区三区 |