1. 程式人生 > >2、thrift的原理重點分析之協議規則thrift檔案

2、thrift的原理重點分析之協議規則thrift檔案

  我們知道系統間的通訊需要提前設定一定的規則,只有各自雙方都遵守這個規則,才能相互間通訊,如果每個都有自己的規則,則就無法通訊。thrift框架規定了自己的協議,這個協議通過編寫thrift檔案進行設定,其實就是服務端提供服務的介面。

  我們首先了解一下這個thrift的協議怎樣寫:

案例:

namespace java cn.stq.thrift
include "../Ex.thrift" 
const i32 a=5
struct User{
  1:string realName,
  2:string loginName,
  3:string birthday
}
service  UserService {
list<User> getUser() throws (1:Ex.thriftDataException dataEx,2:Ex.thriftBusinessException businessEx,3:Ex.thriftSystemException systemEx)
}

namespace:說明名稱空間,  java:說明生成java程式碼,如果要生成c#程式碼,則改成csharp,cn.stq.thrift:說明生成的程式所在的包

const:用於修飾常量的。

include "../Ex.thrift":說明引入的thrift檔案。Ex.thrift:表示自定義的異常檔案

struct:表示結構體,這樣我們就可以引入java中的JavaBean了

service:表示向外界提供的服務。

thrift的所支援的資料型別:

1)基礎資料型別:

boolean型別,值為true或false

byte型別

i16型別  java中對應char

i32型別 java中對應的int

i64型別 java中對應的long

string型別  java中對應的String

double型別 java對應的浮點型double

2) 容器

list型別 java對應的List

set型別 java對應Set

map型別 java對應的Map

3)列舉

例如:

enum Grade{
	M1,M2,M3,H1,H2,H3,MS,HS
}

4)結構體  可以定義像java的javaBean

例如:

struct User{
  1:string realName,
  2:string loginName,
  3:string birthday
}

服務:這是thrift檔案的重點了,服務就是服務端對外提供的功能了,如果你想對外提供什麼功能,就可以在這新增服務了,但是thrift檔案時靜態檔案,當生成具體的程式碼後,就無法改變了,這也是thrift框架的一個缺點吧。

相關推薦

2thrift原理重點分析協議規則thrift檔案

  我們知道系統間的通訊需要提前設定一定的規則,只有各自雙方都遵守這個規則,才能相互間通訊,如果每個都有自己的規則,則就無法通訊。thrift框架規定了自己的協議,這個協議通過編寫thrift檔案進行設定,其實就是服務端提供服務的介面。   我們首先了解一下這個thrift

【原創】【小程序開發教程】2小程序域名配置申請支持SSL(https)

證書頒發 分享圖片 tro get 操作方法 alt 賽門鐵克 似的 http 要把一個網站對接進小程序,一、網站的域名必須通過備案(ICP備案)。在買域名的時候,各個域名服務商都有提供相應的備案平臺,可以方便的提交備案。工信部官網:http://www.miitbeian

2編譯原理字母表,符號表

【1】 字母表 & 符號 符號串 【2】文法及其分類 文法的分類 0型文法 總結: 文法 G(Vn,Vt,P,S) Vn: 非空有限的非終結符號集 Vt:終結符號集 P: 產生式集 S(屬於Vn)文法的識別符號

演算法原理分析分治法

一.目錄 1.演算法基本原理 2.經典問題 二.分治法基本原理     分而治之,先將原問題的規模下降,分解為子問題,此所謂“分”,然後解決子問題,此為“治”。     分治法的基本思想是將一個規模為n的原問題分解為k個規模較小的子問題,這些子問題互相獨立且與原問題相同。遞

9.2Libgdx的輸入處理滑鼠觸控和鍵盤

Libgdx支援的最主要的裝置是desktop或瀏覽器的滑鼠支援,Android的觸控式螢幕支援和鍵盤的支援。我們接下來了解一下。 鍵盤 使用者按下或釋放一個按鍵生成了相應的事件。每個事件包含了一個 key-code來識別是哪個按鍵按下或釋放。這些key-code在不同的

cocos2dx 原始碼分析 Widget 標頭檔案 (3.11.1)

//一直想找時間梳理下,雖然我可能講的不好,但多寫多講才會進步啊!嗯,厚臉皮的試試。 /**************************************************************************** Copyright (c) 20

統計分析引數檢驗與非引數檢驗匹配樣本與獨立樣本2樣本與K樣本介紹----附SPSS操作指南

       最近幾天博主需要做一些計算生物學分析,重新溫習了一遍統計學的知識。由於博主此次使用的是非引數檢驗,將重點介紹非引數檢驗相關內容,仍然是深入淺出的風格,先放一些概念,再總結實際使用的技巧。寫在這裡,供大家參考學習。    

Thrift原理分析(二)協議和編解碼

協議和編解碼是一個網路應用程式的核心問題之一,客戶端和伺服器通過約定的協議來傳輸訊息(資料),通過特定的格式來編解碼位元組流,並轉化成業務訊息,提供給上層框架呼叫。 Thrift的協議比較簡單,它把協議和編解碼整合在了一起。抽象類TProtocol定義了協議和編解碼的頂層介面。個人感

利用Python進行資料分析第七章 記錄2 資料規整化:清理轉換合併重塑

索引上的合併 DataFrame中傳入引數left_index=True或者right_index=True(或者兩個都傳入),表示DataFrame的index(索引)被用作兩個DataFrame連線的連線鍵,如下: dataframe1 = DataFrame({'key':

Vue 2.3.4原始碼分析雙向繫結原理

    要想實現雙向繫結需要做到兩點:1.如何監聽data物件是否改變;2.物件變化後如何去更新檢視    一、如何監聽data物件是否改變     在Vue監聽data物件是否改變主要通過defineReactive方法來做到的,就是利用Object.definePrope

SpringBoot學習筆記一【Idea下建立springboot示例啟動原理分析與兩種部署啟動方式】

1、使用背景 首先說下我們為什麼使用springboot,原因有以下幾點 1、快速建立獨立執行的spring專案以及與主流框架繼承 2、使用嵌入式的Servlet容器,無需打成war包 3、starters自動依賴於版本控制 4、大量的自動配置,簡化開發,也可修改預設值 5、

spring原始碼分析@ImportSelector@ImportImportResource工作原理分析

/** * Apply processing and build a complete {@link ConfigurationClass} by reading the * annotations, members and methods from the source class.

深入理解HTTP協議原理分析快取

3.2 快取的實現原理 3.2.1什麼是Web快取 WEB快取(cache)位於Web伺服器和客戶端之間。 快取會根據請求儲存輸出內容的副本,例如html頁面,圖片,檔案,當下一個請求來到的時候:如果是相同的URL,快取直接使用副本響應訪問請求,而不是向源伺服器再次傳送請求

Nginx實現HTTP/2——原理實踐與資料分析

HTTP/2(Hypertext Transfer Protocol Version 2)無疑是下一代網際網路加速技術的基石與方向,自誕生以來經歷了00~17 共 18 版草案,目前,已經擁有了明確的RFC標準:RFC 7540和RFC 7541。 目前支援

5thrift原始碼分析_TBinaryProtocol(二進位制)

  在上一篇文章中我們分析了thrift協議的總介面,這個總介面是一個抽象類,它只是聲明瞭讀方法和寫方法,具體按照什麼方式讀和寫,這需要子類去實現它。這次我們就分析一下利用二進位制格式讀和寫所有的資料。   RPC框架呼叫使用到的協議主要是傳送函式相關的資訊到伺服器和接受伺

HDFS源碼分析NameNode(2)————Format

return exceptio 數據信息 row oid creat tail 進行 alt    在Hadoop的HDFS部署好了之後並不能馬上使用,而是先要對配置的文件系統進行格式化。在這裏要註意兩個概念,一個是文件系統,此時的文件系統在物理上還不存在,或許是網絡磁盤來

Java數據結構LinkedListArrayList的效率分析

Java 前言: 在我們平常開發中難免會用到List集合來存儲數據,一般都會選擇ArrayList和LinkedList,以前只是大致知道ArrayList查詢效率高LinkedList插入刪除效率高,今天來實測一下。 先了解一下List

quick-cocos2d-x遊戲開發【2】——項目結構分析創建新場景

fileutil 遊戲 log world plain ack 設計 avi sca 創建完一個新項目之後,我們能夠簡單的看一看這個項目的文件組成,有這麽一個文件層次結構 幾個proj.*目錄就不用說了,是相應的平臺的解決方式,res專門存放我們的遊戲資源

權限分析SUIDSGIDsticky

linux、網絡SUIDUID我們都知道是用戶標識,可以使用命令查看當前用戶idid -u username //顯示當前用戶的id,其中0表示管理員(一般為root)/etc/shadow文件。對任何人都不開放權限,除了root用戶[[email protected]/* */ ~]#ll /

大數據學習Scala中main函數的分析以及基本規則2

語言 python rgs 數字 popu 結束 圖片 區別 返回 一、main函數的分析 首先來看我們在上一節最後看到的這個程序,我們先來簡單的分析一下。有助於後面的學習 object HelloScala { def main(args: