日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

大数据架构中使用JSON-RPC好,还是RESTful API好?

發(fā)布時(shí)間:2024/1/23 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据架构中使用JSON-RPC好,还是RESTful API好? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)外開放給全世界的API推薦采用RESTful,是否嚴(yán)格按照規(guī)范是一個(gè)要權(quán)衡的問題。要綜合成本、穩(wěn)定性、易用性、業(yè)務(wù)場景等等多種因素。

看到知乎上有這樣一個(gè)問題
WEB開發(fā)中,使用JSON-RPC好,還是RESTful API好?
還有其他優(yōu)秀的推薦方案嗎?
-----------------------------------------------------------------
先科普一下
REST 和 RESTful 什么區(qū)別?
REST,即Representational State Transfer的縮寫。翻譯過來是表現(xiàn)層狀態(tài)轉(zhuǎn)換。
如果一個(gè)架構(gòu)符合REST原則,就稱它為RESTful架構(gòu)。
啥叫json-rpc?
接口調(diào)用通常包含兩個(gè)部分,序列化和通信協(xié)議。常見的序列化協(xié)議包括json、xml、hession、protobuf、thrift、text、bytes等;通信比較流行的是http、soap、websockect,RPC通常基于TCP實(shí)現(xiàn),常用框架例如netty。
RESTful通常采用http+JSON實(shí)現(xiàn)。
JSON-RPC是指通信協(xié)議采用二進(jìn)制方式,而不是http,序列化采用JSON的形式。
======
我厭惡restful API如同我厭惡OOP;但與其說我厭惡restful,倒不如說我厭惡鼓吹restful API的一些偽·程序員。
很多鼓吹restful API的程序員,實(shí)際上并不理解restful的設(shè)計(jì)理念,純粹是在人言亦言,隨便看了幾篇網(wǎng)文在說restful,自己便也更著鼓吹。
做為一個(gè)合格的技術(shù)人員,最基礎(chǔ)的要求是要對(duì)自己所使用的技術(shù)有了解,明白各種技術(shù)的適用場景,然后因地制宜。
restful首先是要求必須把所有的應(yīng)用定義成為“resource”,然后只能針對(duì)資源做有限的四種操作。
這是對(duì)API一個(gè)非常糟糕的抽象,有太多現(xiàn)實(shí)中需要的API,無法順當(dāng)?shù)娜谌氲絩estful所定義的規(guī)范中。
比方說,user login / resetpassword等等。
restful的信徒,他們會(huì)說可以根據(jù)這個(gè)那個(gè)規(guī)范,把login / password等也納入為某種資源,然后進(jìn)行增刪改查。這在我看來,純粹是在解決一些原本不存在,根本不需要解決的問題,純浪費(fèi)。
所有的接口,服務(wù)器端原本就存在有相應(yīng)的函數(shù),它們本來就有自身的命名空間,接受的參數(shù)、返回值、異常等等。
采用輕便的方式暴露出來即可。
無需把一堆函數(shù)重新歸納到“資源”,再削減腦袋把所有的操作都映射為“增刪改查”。
對(duì)應(yīng)到web上,rpc的成熟方案非常多,有古老的soap,也有輕量的json rpc。
JSON rpc基本上僅是要求所有的請(qǐng)求必須有msg id,有函數(shù)名,然后可定義參數(shù),并且區(qū)分返回值與異常;也可定義『命名空間』來對(duì)函數(shù)模塊做劃分。
這與大多數(shù)語言的模塊、函數(shù)定義相符,使用起來是非常便利的。
很多json rpc是供web前端ajax調(diào)用,若前端調(diào)用抽象得當(dāng),調(diào)用遠(yuǎn)程API,實(shí)際上與調(diào)用本地函數(shù)無甚區(qū)別。
實(shí)際上,json rpc也未必需要跟http綁定,即便是在web上,它也可以走web socket,這樣子,前端可以使用同一web socket管道批量發(fā)送請(qǐng)求,而服務(wù)器端亂序返回結(jié)果時(shí),前端也可以根據(jù)msg id做準(zhǔn)確的回調(diào)。
websocket,批量調(diào)用,亂序返回,這些都可以顯著提高API的輸出吞吐,這些是在json rpc的設(shè)計(jì)考量內(nèi)。
調(diào)用更方便,性能也更好,兩全其美是完全可能的。
想當(dāng)然的為了“快”,為了“簡單”就必須犧牲別的,這是嚴(yán)重的思維誤區(qū)。
有些方案,純粹就是糟糕的方案。
restful API僅適用與業(yè)務(wù)非常簡單的場景,比方說,就是為了提供少量數(shù)據(jù)表單的增刪改查。而這種場景實(shí)在是太過簡單,實(shí)際中幾乎找不到。
----------------------------------------------------------
我的觀點(diǎn)
實(shí)際上,這個(gè)問題本質(zhì)上是RESTful和RPC之爭。這兩種風(fēng)格都是隨著架構(gòu)發(fā)展而來。分別適用不同的場景。
http vs 高性能二進(jìn)制協(xié)議
http相對(duì)更規(guī)范,更標(biāo)準(zhǔn),更通用,無論哪種語言都支持http協(xié)議。如果你是對(duì)外開放API,例如開放平臺(tái),外部的編程語言多種多樣,你無法拒絕對(duì)每種語言的支持,相應(yīng)的,如果采用http,無疑在你實(shí)現(xiàn)SDK之前,支持了所有語言,所以,現(xiàn)在開源中間件,基本最先支持的幾個(gè)協(xié)議都包含RESTful。
RPC協(xié)議性能要高的多,例如Protobuf、Thrift、Kyro等,(如果算上序列化)吞吐量大概能達(dá)到http的二倍。響應(yīng)時(shí)間也更為出色。千萬不要小看這點(diǎn)性能損耗,公認(rèn)的,微服務(wù)做的比較好的,例如,netflix、阿里,曾經(jīng)都傳出過為了提升性能而合并服務(wù)。如果是交付型的項(xiàng)目,性能更為重要,因?yàn)槟阗u給客戶往往靠的就是性能上微弱的優(yōu)勢。
RESTful的規(guī)范到底是不是雞肋?
我認(rèn)為,微服務(wù)的盛行,開放平臺(tái)的盛行,的確讓RESTful過于“流行”了。你可以看看,無論是Google、Amazon、netflix(據(jù)說很可能轉(zhuǎn)向grpc),還是阿里,實(shí)際上內(nèi)部都是采用性能更高的RPC方式。而對(duì)外開放的才是RESTful。
如果你的應(yīng)用非常簡單,無論用哪種都無所謂了,基本都能滿足要求。
關(guān)于無狀態(tài)、冪等
這個(gè)跟你是否采用RESTful無關(guān),主要還是看接口內(nèi)部實(shí)現(xiàn),所以,把這個(gè)作為RESTful優(yōu)點(diǎn)的可以閉嘴了。
安全性
顯然,基于Http更安全一些,默認(rèn)80端口,防火墻友好。
RESTful也分為嚴(yán)格的和自由的
RESTful還有個(gè)好處是制定了一系列規(guī)范,但是大多數(shù)使用者都是自由風(fēng)格的,根本不是嚴(yán)格按照RESTful規(guī)范實(shí)現(xiàn)。當(dāng)然存在就是道理,這樣做更高效,但是不夠通用。
無疑,嚴(yán)格按照資源抽象,API看起來更清晰,更容易被大家理解。同時(shí),開發(fā)人員的復(fù)雜度也更高。
最后建議
對(duì)外開放給全世界的API推薦采用RESTful,是否嚴(yán)格按照規(guī)范是一個(gè)要權(quán)衡的問題。要綜合成本、穩(wěn)定性、易用性、業(yè)務(wù)場景等等多種因素。

內(nèi)部調(diào)用推薦采用RPC方式。當(dāng)然不能一概而論,還要看具體的業(yè)務(wù)場景。
另外一個(gè)因素是人,關(guān)鍵是你有什么人,postgresql、MySQL都有用的不錯(cuò)的,遷來遷去,關(guān)鍵是你的人對(duì)哪個(gè)更熟悉。

總結(jié)

以上是生活随笔為你收集整理的大数据架构中使用JSON-RPC好,还是RESTful API好?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美在线一区二区三区 | 欧美日韩看片 | 日本一区二区三区在线观看视频 | 奇米第四色777 | 国内自拍xxxx18 | 天天操天天干天天爽 | 最新视频 - 88av| 2一3sex性hd| 久久99久 | 老外黄色一级片 | av无码精品一区二区三区 | 亚洲av无码专区在线 | 一区二区三区激情视频 | 国产精品久久二区 | 日本黄色免费网址 | 亚洲国产视频在线观看 | 美女天天操 | 欧美整片sss| 成人免费无码大片a毛片抽搐色欲 | 亚洲女人久久久 | 国产精品无码久久久久久电影 | 少妇名器的沉沦 | 亚洲欧美一区二区在线观看 | 爆操少妇 | 亚洲一级片 | 国产精品久久久久久久久久辛辛 | 亚洲色偷精品一区二区三区 | 无码精品视频一区二区三区 | 一眉道姑 | 亚洲第一天堂久久 | 亚洲操片 | 亚洲精品系列 | 欧美影院一区二区三区 | 国产夫妻在线观看 | www.69视频 | 性视频在线播放 | 亚洲精品av在线 | 青青草视频免费看 | 蜜臀av一区二区三区激情综合 | 六月色婷婷| 国产av一区二区三区最新精品 | 小镇姑娘国语版在线观看免费 | 在线成人黄色 | 亚洲激情偷拍 | 国产伦理吴梦梦伦理 | 精品人妻一区二区三区久久 | 精品国产麻豆 | 91在线高清 | 亚洲精品国产精品乱码不66 | 国产精品大片 | 91精品国产91久久久久久久久久久久 | 北条麻妃99精品青青久久 | 好色艳妇小说 | 免费在线色视频 | 日韩av不卡在线 | 久久久久久久综合 | 久久午夜精品 | 午夜在线视频免费观看 | 亚洲国产无码久久 | 欧美黄色免费在线观看 | 亚洲av无码一区二区三区观看 | 穿越异世荒淫h啪肉np文 | 在线一区二区三区四区 | 国产偷自拍视频 | 亚洲精品国产片 | 干日本少妇首页 | 理论片高清免费理伦片 | 精品在线观看视频 | 日韩亚洲一区二区 | 波多野结衣一区二区三区在线观看 | 成人拍拍拍 | 国产日韩精品中文字无码 | 国产精品高潮呻吟久久久久久 | 午夜一区二区三区 | 日韩黄色一级片 | 青青草狠狠操 | 超碰在线天天 | 一级国产特黄bbbbb | 欧美视频在线一区二区三区 | 天天摸天天添 | 在线观看国产一区 | av免费网| 久久国产99 | 亚洲 日本 欧美 中文幕 | 最好看的日本字幕mv视频大全 | 欧美大片免费看 | 九九亚洲 | 69**夜色精品国产69乱 | 4388成人网| 深夜成人在线观看 | 99久久亚洲精品 | 国产一级淫片免费 | 国产伦精品一区二区. | 国产 日韩 欧美 综合 | 国产成人精品视频ⅴa片软件竹菊 | 视频二区在线 | 中文字幕无码av波多野吉衣 | 国产又粗又猛又爽又黄又 | 欧美日韩人妻精品一区二区 |