主頁 >  其他 > 讀書筆記丨遠程服務呼叫和RESTful,如何分析和抉擇?

讀書筆記丨遠程服務呼叫和RESTful,如何分析和抉擇?

2023-04-27 08:18:20 其他

摘要:相信未來REST規范將會變得更加流行和普及,

本文分享自華為云社區《云原生時代,遠程服務呼叫和RESTful,如何分析和抉擇?》,作者:breakDawn ,

隨著云原生的概念越來越火,服務的架構應該如何發展和演進,成為很多程式員關心的話題,大名鼎鼎的《深入理解java虛擬機》一書作者于21年推出了新作《鳳凰架構》,從這本書中可以看到當前時下很多最新的技識訓者理念,

本博文將沉淀發布這本書的學習筆記和思考, 如果希望了解更加詳細的內容,歡迎購買該書繼續詳細學習,

訪問遠程服務

1 遠程服務呼叫

這一個章節主要講解rpc的設計理念和發展歷史,
先是講解了IPC(行程間通信)所需要的各個必要因素
接著解釋RPC 是IPC的一種特例(這是最初科學家們的想法)
但PRC存在很多可靠性的問題,并不能直接等同IPC的擴展,

接著提出了RPC的三個基本問題:

  1. 如何表示資料
    即序列化協議, 有grpc的proto-buffer、json、xml、java-rmi基于java自帶序列化之列的
  2. 如何傳遞資料
    基于什么網路協議傳輸
    java-rmi的遠程協議
    JSON-RPC協議
    SOAP協議(web service 簡單對下訪問)
  3. 如何表示方法
    如何定義方法,如何在不同語言、不同系統環境中保證 方法簽名唯一,
    需要對介面描述定義語言有一個選型

再后面講解了rpc的發展歷史
CORBA的使用過于復雜,被拋棄
SOAP使用xml很簡單,但是性能奇差
可以看出RPC想同時滿足簡單、普適、高性能是很難的
于是得出一個結論:

不存在完美的RPC框架

最近幾年的RPC框架更傾向于往高層次、插件化發展,
即不再獨立解決RPC的所有問題,而是提供一些擴展點由用戶自己選擇(比如dubbo)
可以任意切換json或者fastjson等序列化方式
可以切換傳輸協議等,

2 REST

rest并不是一種遠程呼叫協議, 他只能說是一種風格,
REST的傳輸效率提升潛力有限,但是可以簡化呼叫,

2.1 REST核心概念(基于HTTP超文本傳輸協議)

  • 資源
    資源指你希望獲取或者修改的東西、資訊本身,他的表現形式可以不同,但是里子是相同的
  • 表征
    就是表現資源的形式,用html還是pdf來回傳
  • 狀態
    指的是服務端對某次會話是否持有狀態,
    例如讀下一篇文章時,當前文章id由服務端存盤還是瀏覽器存盤,這就是有狀態和無狀態的區別,
  • 轉移
    就是服務端提供的行為邏輯, 通常叫做 資源的轉移
  • 統一介面
    就是HTTP協議里提供的GET\HEAD\POST\PUT\DELETE\TRACE\OPTIONS這七種操作,通過這些操作觸發轉移
  • 超文本驅動
    瀏覽器的行為經常是通過服務端回傳的url或者各種資訊觸發了驅動行為
  • 自描述訊息
    為了方便客戶端識別表征,回傳類似于Content-Type等內容,方便用何種字符集處理

2.2 REST核心設計原則

  1. 客戶端與服務端分離
    服務端不處理渲染, 由客戶端來處理
  2. 無狀態
    盡可能希望服務端不要存盤rest會話狀態,達到分布式的高價值回報,
    但是不太可能特別是客戶端持有會話數量級很大的情況下,所以仍舊會持有一定狀態
  3. 可快取
    服務端的應答中要直接或者間接告知客戶端是否可以快取,快取多久
  4. 分層系統
    客戶端不需要知道是否真的連接到了最終的服務器
    代表是CDN內容分發網路
  5. 統一介面
    面向資源編程
    系統設計時聚焦在資源而不是行為上
    例如面向行為時, 登錄就是login介面,注銷就是logout介面
    而面向資源時,登錄就是PUT Session, 注銷就是DELETE Session
  6. 按需代碼
    客戶端的代碼可以有一部分讓服務端發回進行裝載,

2.3 REST的好處

  • 降低服務介面的學習成本
  • 資源天然具有集合與層次介面
    這樣很多資源可以很容易組合在一起并讓使用者想到介面url是什么
    例如獲取 用戶 icyfenix的購物車中的第2本書,這個是有層次的,那么介面就是GET /user/icyfenix/cart/2
  • REST系結于HTTP協議,HTTP又是大家非常熟悉的

2.4 RMM(Richardson提出的restful成熟度模型)

第0級:完全不rest

提供的api定義里總是包含了各種動作,例如
/queryXXX
/applyXXX
類似于RPC的行為介面
壞處是一旦要提供其他對XXX的操作,必須重新撰寫介面,無法對XXX的查詢能力進行復用!

第1級:開始引入資源的概念

api的endpoint定義應該圍繞名詞+資源id而不是動詞來定義,
POST /doctors/mjones 獲取醫生的檔期
POST /schedules/{id} 觸發對這個id的調度

第2級: 引入統一介面,映射到HTTP方法上

上面的method都是POST,實際上可以把HTTP方法的method、回傳碼都給利用上

  • 對一個資源的增加用POST,洗掉用DELETE,更新用PUT
  • 依賴HTTP的回傳碼定義資源可能的例外情況,例如201代表創建成功,409代表沖突(被人搶先預約)
  • 利用HTTP自帶的認證和授權資訊,

第3級:超文本控制,轉移行為通過回應控制

第2級里, 所有介面的定義仍然需要使用者自己查詢檔案來記憶和應用
實際上應該只需要一個操作起始入口, 例如獲取醫生的檔期介面
這個介面要回傳的body里,已經告知了對應資源的名稱,例如檔期資源的key就叫做schedules
那么就能馬上知道下一個介面查詢用schedules了!
這樣代碼里可以做好適配,當你要把檔期的key名做修改時,客戶端代碼根本不用變動!

2.2.4 REST的不足和爭議

1.restful面向資源編程只適合做CRUD,不適合過于復雜的業務邏輯

  • 面向程序編程,以演算法和處理程序為中心,這符合計算機世界中主流的互動方式
  • 面向物件編程,將資料和物件行為統一起來,因為這符合現實世界的主流互動方式
  • 面向資源編程,資料作為主體,行為看成統一介面,為了符合網路世界的主流互動方式

2.rest不利于事務支持
作者不同意這個觀點, 認為不會有阻礙,取決于系統的事務設計

3.rest沒有傳輸可靠性支持
雖然確實沒有類似于重發等機制的保證,但rest介面一般盡可能要求冪等性,來做到應用代碼做重發時可以不用擔心重復的問題

4.缺少對資源做部分或者批量處理的能力
rest語意里不能涵蓋這種情況,得定義特殊的介面或者引數,那么低3級里面就不能涵蓋了,

相關思考

基于REST的規范,呼叫者可以非常快速地理解自己需要的介面內容是什么樣的,例如華為云當前的很多云服務公開介面都會基于REST理念進行開放, 并且各云服務的開放介面都會集成到API Explorer和華為云SDK中心供開發者直接呼叫,這些平臺提供了豐富的介面檔案和示例代碼,幫助開發者更快地上手和使用 REST 介面,

相信未來REST 規范將會變得更加流行和普及,隨著云計算和大資料技術的不斷發展,REST 介面將會被廣泛應用于各種領域,例如醫療、金融、電商等,REST 介面的開放性、可擴展性和易用性,將會為開發者帶來更加高效、便捷和可靠的開發體驗,

 

點擊關注,第一時間了解華為云新鮮技術~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551314.html

標籤:其他

上一篇:Vulnhub之Hacksudo Thor靶機詳細測驗程序(提權成功)

下一篇:返回列表

標籤雲
其他(158198) Python(38107) JavaScript(25394) Java(18001) C(15217) 區塊鏈(8260) C#(7972) AI(7469) 爪哇(7425) MySQL(7148) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5870) 数组(5741) R(5409) Linux(5329) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4562) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2431) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1960) Web開發(1951) HtmlCss(1927) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1855) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 讀書筆記丨遠程服務呼叫和RESTful,如何分析和抉擇?

    摘要:相信未來REST規范將會變得更加流行和普及。 本文分享自華為云社區《云原生時代,遠程服務呼叫和RESTful,如何分析和抉擇?》,作者:breakDawn 。 隨著云原生的概念越來越火,服務的架構應該如何發展和演進,成為很多程式員關心的話題。大名鼎鼎的《深入理解java虛擬機》一書作者于21年 ......

    uj5u.com 2023-04-27 08:18:20 more
  • Vulnhub之Hacksudo Thor靶機詳細測驗程序(提權成功)

    Hacksudo Thor 作者:jason huawen 靶機資訊 名稱:hacksudo: Thor 地址: https://www.vulnhub.com/entry/hacksudo-thor,733/ 識別目標主機IP地址 (kali?kali)-[~/Desktop/Vulnhub/Ha ......

    uj5u.com 2023-04-27 08:18:15 more
  • 億級榷訓業務穩如磐石,華為云CodeArts PerfTest發布

    摘要:近日,華為云性能測驗服務CodeArts PerfTest全新上線,提供低門檻、低成本的一站式云化性能測驗解決方案。 本文分享自華為云社區《億級榷訓業務穩如磐石,華為云CodeArts PerfTest發布》,作者:華為云頭條 。 計算機軟體作為人類邏輯智慧的偉大結晶之一,已經滲透到了人類社會 ......

    uj5u.com 2023-04-27 08:18:04 more
  • 合合資訊新推出反光消除技術,助力手寫文字識別更精準

    近期,合合資訊旗下掃描全能王推出液晶手寫板(簡稱“手寫板”),為用戶帶來仿真、流暢的書寫繪畫體驗,一同發布的還有掃描全能王APP的新功能“拍手寫板”。該功能可幫助用戶在拍攝手寫板內容后去除圖片上的反光干擾,形成更貼近白紙、板報的圖片,并通過手寫字跡識別,快捷、有序地獲取可編輯、可分享的電子檔案,助力 ......

    uj5u.com 2023-04-27 08:12:44 more
  • 【Excel統計分析插件】上海道寧為您提供統計分析、資料可視化和

    Analyse-it與許多Excel加載項開發人員不同,使用完善的軟體開發和QA實踐,包括單元/集成/系統測驗、敏捷開發、代碼審查、問題跟蹤和用于變更管理的、源代碼控制 ......

    uj5u.com 2023-04-27 08:07:31 more
  • 一文詳解多模態認知智能

    摘要:多模態認知智能是AI人工智能當前發展的主流趨勢之一,其核心是以多模態知識的獲取,表示與推理為主要內容的跨模態知識工程與認知智能,也是為了更好的處理多模態的資料,需要融合多種感知模態和智能處理技術。 本文分享自華為云社區《GPT-4發布,AIGC時代的多模態還能走多遠?系列之三:多模態認知智能》 ......

    uj5u.com 2023-04-27 08:07:18 more
  • 04-1 氣體燃料燃燒:擴散火焰與預混火焰、層流火焰傳播速度

    擴散火焰與預混火焰的火焰形式 擴散火焰:燃料和訊訓劑邊混合邊燃燒,這時由于擴散作用對燃燒起控制作用,又稱擴散燃燒。 預混火焰:燃料和訊訓劑預先混合好,這時化學動力學因素對燃燒起控制作用,亦稱動力燃燒。 可以看出火焰區別,層流外表面相對光滑,湍流外表面不平整;部分預混火焰有內焰和外焰;全預混火焰不明亮 ......

    uj5u.com 2023-04-27 08:06:49 more
  • 一文講透產品經理如何用好ChatGPT

    4.0版本推出后,在中文互聯網上并沒有輔助產品經理作業的詳細介紹。因此,我基于GPT-4,梳理了幫助產品經理全流程提效的方法,整理了一些prompt,本文旨在分享這些識訓,希望能拋磚引玉。 ......

    uj5u.com 2023-04-27 08:05:57 more
  • 合合資訊新推出反光消除技術,助力手寫文字識別更精準

    近期,合合資訊旗下掃描全能王推出液晶手寫板(簡稱“手寫板”),為用戶帶來仿真、流暢的書寫繪畫體驗,一同發布的還有掃描全能王APP的新功能“拍手寫板”。該功能可幫助用戶在拍攝手寫板內容后去除圖片上的反光干擾,形成更貼近白紙、板報的圖片,并通過手寫字跡識別,快捷、有序地獲取可編輯、可分享的電子檔案,助力 ......

    uj5u.com 2023-04-27 08:05:41 more
  • 一文詳解多模態認知智能

    摘要:多模態認知智能是AI人工智能當前發展的主流趨勢之一,其核心是以多模態知識的獲取,表示與推理為主要內容的跨模態知識工程與認知智能,也是為了更好的處理多模態的資料,需要融合多種感知模態和智能處理技術。 本文分享自華為云社區《GPT-4發布,AIGC時代的多模態還能走多遠?系列之三:多模態認知智能》 ......

    uj5u.com 2023-04-27 08:05:27 more