精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用Java實現簡單的HTTP服務器

jf_ro2CN3Fa ? 來源:CSDN-簡簡單單神經蛙 ? 2023-09-21 15:08 ? 次閱讀

關于SpringCloud遠程調用采用HTTP而非RPC。

首先SpringCloud開啟Web服務依賴于內部封裝的Tomcat容器,而今信息飛速發展,適應大流量的微服務,采用Tomcat處理HTTP請求,開發者編寫Json作為資源傳輸,服務器做出相應的響應,可以更加的靈活處理業務數據,而HTTP協議是跨平臺的,符合微服務B/C數據交互的方式,可以的一套服務器對應移動H5、App、小程序提供服務。

RPC基于TCP協議,客服端與服務端需要進行三次握手完成可靠連接,第四步進行數據傳輸。因為TCP是數據傳輸層,傳輸協議需要服務器統一編寫,進行二進制傳輸,依賴序列化和反序列化規則,對于大部分應用需要靈活變動數據則不適用,RPC常用于Socket連接或一些基本不變動的傳輸格式數據,減少數據變動帶來的開發成本

建立Socket連接至少需要一對套接字,其中一個運行于客戶端,稱為ClientSocket ,另一個運行于服務器端,稱為ServerSocket ,套接字之間的連接過程分為三個步驟:服務器監聽,客戶端請求,連接確認。

一個簡單HTTP請求處理

在Web應用中,瀏覽器請求一個URL,服務器就把生成的HTML網頁發送給瀏覽器,而瀏覽器和服務器之間的傳輸協議是HTTP,那么接下來我們看下如何用Java來實現一個簡單的HTTP服務器。

45bd41b6-568c-11ee-939d-92fbcf53809c.jpg

RPC

RPC(Remote Procedure Call:遠程過程調用):是一種進程間通信方式,是一種技術的思想,而不是規范。它允許程序調用另一個地址空間(通常是共享網絡的另一臺機器上)的過程或函數,而不用程序員顯式編碼這個遠程調用的細節。即程序員無論是調用本地的還是遠程的函數,本質上編寫的調用代碼基本相同。

通俗的說法就是:比如說現在有兩臺服務器A和B,一個應用部署在A服務器上,另一個應用部署在B服務器上,如果A應用想要調用B應用提供的方法,由于他們不在一臺機器下,也就是說它們不在一個JVM內存空間中,是無法直接調用的,需要通過網絡進行調用,那這個調用過程就叫做RPC。

45cafebe-568c-11ee-939d-92fbcf53809c.png45d904e6-568c-11ee-939d-92fbcf53809c.png

RPC兩個核心模塊:通訊,序列化。

注意:無論是何種類型的數據,最終都需要序列化轉換成二進制流在網絡上進行傳輸,數據的發送方需要將對象序列化轉換為二進制流,而數據的接收方則需要把二進制流反序列化為對象。

Restful(HTTP)

Restful 指的是一組架構約束條件和原則。" 如果一個架構符合 Restful 的約束條件和原則,就稱它為 Restful 架構。隱藏在 Restful 背后的理念就是使用 Web的現有特征和能力,更好地使用現有 Web 標準中的一些準則和約束。

雖然 Restful 本身受 Web技術的影響很深, 但是理論上 Restful 架構風格并不是綁定在 HTTP 上,只不過目前 HTTP 是唯一與 Restful 相關的實例。所以我們這里描述的 Restful 也是通過 HTTP 實現的 Restful。

RPC和HTTP的區別

首先,兩者十分相似,有請求有響應。

不同:

RPC需要滿足像調用本地服務一樣調用遠程服務,也就是對調用過程在API層面進行封裝。

Http協議沒有這樣的要求,因此請求、響應等細節需要我們自己去實現。

優點

RPC更加透明,對用戶方便。

HTTP方式更加靈活,沒有規定API和語言,跨語言,跨平臺。

缺點

RPC需要在API層面進行封裝,限制了開發的語言環境。

選擇

速度方面:RPC速度比HTTP快,底層都是TCP,HTTP消息往往比較臃腫,但是可以采用gzip壓縮。

難度方面:RPC實現有點兒復雜,HTTP相對比較簡單。

靈活性方面:HTTP更靈活,不需要關系實現的細節,可以跨平臺,跨語言。

未來發展方向

微服務,強調獨立,自治,靈活。RPC限制較多,因此微服務框架中,一般都會采用基于HTTP的rest風格服務。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9029

    瀏覽量

    85207
  • HTTP
    +關注

    關注

    0

    文章

    501

    瀏覽量

    31076
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1351

    瀏覽量

    78997
  • RPC
    RPC
    +關注

    關注

    0

    文章

    111

    瀏覽量

    11515
  • springcloud
    +關注

    關注

    0

    文章

    17

    瀏覽量

    1530

原文標題:SpringCloud 遠程調用為啥要采用HTTP,而不是RPC?

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    在labview中如何用http工具向web服務器發送數據?

    求助攻!在labview中如何用http工具向web服務器發送數據?
    發表于 10-17 20:48

    如何通過uip協議棧和ENC28J60網卡實現一個簡單HTTP服務器

    如何通過uip協議棧和ENC28J60網卡實現一個簡單HTTP服務器
    發表于 11-01 06:12

    使用NodeMCU創建一個簡單HTTP服務器

    我正在嘗試使用NodeMCU創建一個簡單HTTP服務器 . 我啟動nodeMCU然后將其連接到wifi,然后運行下面的程序 . 我可以從瀏覽連接到
    發表于 11-01 06:03

    如何使用Apache FtpServer實現嵌入式FTP服務器

    1.Apache FtpServer是一個純Java實現的FTP服務器2.既可以作為一個完整的FTP服務器單獨使用,也可以在Java程序中調
    發表于 12-27 06:49

    如何基于HTTP Web服務器示例實現TLS HTTPS服務器

    我正在嘗試基于此 HTTP Web 服務器示例實現 TLS HTTPS 服務器:https://github.com/STMicroelectronics/x-cube-azrtos-
    發表于 01-04 06:23

    JAVA教程之TCP服務器

    JAVA教程之TCP服務器端,很好的JAVA的資料,快來學習吧
    發表于 04-11 17:28 ?10次下載

    java如何實現簡單http服務器

    超文本傳輸協議是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念
    發表于 12-06 09:15 ?6634次閱讀
    <b class='flag-5'>java</b>如何<b class='flag-5'>實現</b><b class='flag-5'>簡單</b>的<b class='flag-5'>http</b><b class='flag-5'>服務器</b>

    何用Python 實現 HTTP 和 FTP 服務器

    有時你需臨時搭建一個簡單的 Web Server,但你又不想去安裝 Apache、Nginx 等這類功能較復雜的 HTTP 服務程序時。這時可以使用 Python 內建的 SimpleHTTPServer 模塊快速搭建一個
    發表于 06-19 11:48 ?1528次閱讀

    如何正確的理解使用WEB服務器和應用程序服務器HTTP服務器

    WEB服務器、應用程序服務器HTTP服務器有何區別?IIS、Apache、Tomcat、Weblogic、WebSphere都各屬于哪種服務器
    發表于 05-27 08:00 ?0次下載
    如何正確的理解使用WEB<b class='flag-5'>服務器</b>和應用程序<b class='flag-5'>服務器</b>及<b class='flag-5'>HTTP</b><b class='flag-5'>服務器</b>

    Java編程:發送HTTP請求到服務器

    Java程序需要向服務器發送請求或讀取服務器數據時,使用URLConnection類是比較好的選擇。URLConnection類封裝了與服務器互動操作的方法,通過它可以建立與
    的頭像 發表于 07-01 09:59 ?3060次閱讀
    <b class='flag-5'>Java</b>編程:發送<b class='flag-5'>HTTP</b>請求到<b class='flag-5'>服務器</b>

    基于LwIP的HTTP服務器設計

    前面我們實現了TCP服務器和客戶端的簡單應用,接下來我們實現一個基于TCP協議的應用協議,那就是HTTP超文本傳輸協議。
    的頭像 發表于 12-14 15:15 ?1656次閱讀
    基于LwIP的<b class='flag-5'>HTTP</b><b class='flag-5'>服務器</b>設計

    用于Java服務器的ChartFX 8

    多年來,ChartFX for Java 一直是Java服務器應用程序數據可視化組件的領導者。ChartFX 8 for Java Server 現在為NetBeans和所有基于Ecl
    的頭像 發表于 07-29 08:58 ?850次閱讀

    HTTP服務器項目實現介紹

    項目介紹 本項目實現的是一個HTTP服務器,項目中將會通過基本的網絡套接字讀取客戶端發來的HTTP請求并進行分析,最終構建HTTP響應并返回
    的頭像 發表于 11-08 16:54 ?907次閱讀
    <b class='flag-5'>HTTP</b><b class='flag-5'>服務器</b>項目<b class='flag-5'>實現</b>介紹

    如何利用AWFlow搭建HTTP服務器

    本文將基于EsDA開發套件快速在開發板上搭建HTTP服務器,為HTTP客戶端提供了訪問板子的外設資源,數據以及文件讀寫等接口,實現設備與網絡服務
    的頭像 發表于 12-14 08:24 ?557次閱讀
    如何利用AWFlow搭建<b class='flag-5'>HTTP</b><b class='flag-5'>服務器</b>

    使用NS1串口服務器HTTP模式上傳服務器數據

    HTTP協議工作于客戶端-服務端架構之上。瀏覽作為HTTP客戶端通過URL向HTTP服務端即W
    的頭像 發表于 08-30 12:36 ?276次閱讀
    使用NS1串口<b class='flag-5'>服務器</b><b class='flag-5'>HTTP</b>模式上傳<b class='flag-5'>服務器</b>數據