brpc 內(nèi)建服務(wù)實(shí)現(xiàn)

brpc有很多的內(nèi)建服務(wù)缸血,便于生產(chǎn)環(huán)境使用,本次分析內(nèi)建服務(wù)基本統(tǒng)一部分械筛,各服務(wù)不同數(shù)據(jù)統(tǒng)計(jì)等實(shí)現(xiàn)這里暫時(shí)不討論捎泻,后續(xù)會(huì)分析幾個(gè)具體內(nèi)部實(shí)現(xiàn)。

如果你想看看內(nèi)建服務(wù)只需啟動(dòng)一個(gè)demo服務(wù)埋哟,執(zhí)行簡單的命令:
curl localhost:8003

[host build]$ curl localhost:8003
    __
   / /_  _________  _____
  / __ \/ ___/ __ \/ ___/
 / /_/ / /  / /_/ / /__
/_.___/_/  / .___/\___/
          /_/

github : https://github.com/brpc/brpc

/status : Status of services
/connections : List all connections
/flags : List all gflags
  /flags/port : List the gflag
  /flags/guard_page_size;help* : List multiple gflags with glob patterns (Use $ instead of ? to match single character)
  /flags/NAME?setvalue=VALUE : Change a gflag, validator will be called. User is responsible for thread-safety and consistency issues.
/vars : List all exposed bvars
  /vars/rpc_num_sockets : List the bvar
  /vars/rpc_server*_count;iobuf_blo$k_* : List multiple bvars with glob patterns (Use $ instead of ? to match single character)
/rpcz : Recent RPC calls(disabled)
  /rpcz/stats : Statistics of rpcz
  /rpcz?time=2021/01/22-19:50:38 : RPC calls before the time
  /rpcz?time=2021/01/22-19:50:38&max_scan=10 : N RPC calls at most before the time
  Other filters: min_latency, min_request_size, min_response_size, log_id, error_code
  /rpcz?trace=N : Recent RPC calls whose trace_id is N
  /rpcz?trace=N&span=M : Recent RPC calls whose trace_id is N and span_id is M
/hotspots/cpu : Profiling CPU (disabled)
/hotspots/heap : Profiling heap (disabled)
/hotspots/growth : Profiling growth of heap (disabled)
curl -H 'Content-Type: application/json' -d 'JSON' 172.17.226.15:8003/ServiceName/MethodName : Call method by http+json
/version : Version of this server, set by Server::set_version()
/health : Test healthy
/vlog : List all VLOG callsites
/sockets : Check status of a Socket
/bthreads : Check status of a bthread
/ids : Check status of a bthread_id
/protobufs : List all protobuf services and messages
/list : json signature of methods
/threads : Check pstack (disabled)
/dir : Browse directories and files (disabled)
[lfz@iz2zec6g7egdxs0gpgesoiz build]$ curl localhost:8003/hotspots/cpu
Error: cpu profiler is not enabled.
Read the docs: docs/cn/{cpu_profiler.md,heap_profiler.md}

brpc內(nèi)建的服務(wù)統(tǒng)一使用了rpc請(qǐng)求框架完成服務(wù)的搭建工作笆豁。
基本統(tǒng)一的default_method來請(qǐng)求需要的功能郎汪。

如果你大概了解brpc使用方式,看一下下文內(nèi)容就明白了闯狱。
以下是實(shí)現(xiàn)的proto文件一部分煞赢。

package brpc;
...
message IndexRequest {}
message IndexResponse {} 
message FlagsRequest {}
message FlagsResponse {} 
message VersionRequest {}
message VersionResponse {}
message HealthRequest {}
message HealthResponse {}
message StatusRequest {}
message StatusResponse {}
message ProtobufsRequest {}
message ProtobufsResponse {}
message ConnectionsRequest {}
message ConnectionsResponse {}
message ListRequest {}
message ListResponse {
    repeated google.protobuf.ServiceDescriptorProto service = 1;
}
message VarsRequest {}
message VarsResponse {}
message BthreadsRequest {}
message BthreadsResponse {}
message IdsRequest {}
message IdsResponse{}
message SocketsRequest {}
message SocketsResponse {}
message RpczRequest {}
message RpczResponse {}
message ThreadsRequest {}
message ThreadsResponse {}
message DirRequest {}
message DirResponse {}
message VLogRequest {}
message VLogResponse {}
message MetricsRequest {}
message MetricsResponse {}
message BadMethodRequest {
    required string service_name = 1;
}
message BadMethodResponse {}

service index {
    rpc default_method(IndexRequest) returns (IndexResponse);
}

service version {
    rpc default_method(VersionRequest) returns (VersionResponse);
}

service health {
    rpc default_method(HealthRequest) returns (HealthResponse);
}

service status {
    rpc default_method(StatusRequest) returns (StatusResponse);
}

service protobufs {
    rpc default_method(ProtobufsRequest) returns (ProtobufsResponse);
}

service connections {
    rpc default_method(ConnectionsRequest) returns (ConnectionsResponse);
}

service list {
    rpc default_method(ListRequest) returns (ListResponse);
}

service threads {
    rpc default_method(ThreadsRequest) returns (ThreadsResponse);
}

service vlog {
    rpc default_method(VLogRequest) returns (VLogResponse);
}

service bthreads {
    rpc default_method(BthreadsRequest) returns (BthreadsResponse);
}

service ids {
    rpc default_method(IdsRequest) returns (IdsResponse);
}

service sockets {
    rpc default_method(SocketsRequest) returns (SocketsResponse);
}

service brpc_metrics {
    rpc default_method(MetricsRequest) returns (MetricsResponse);
}

service badmethod {
    rpc no_method(BadMethodRequest) returns (BadMethodResponse);
}
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哄孤,隨后出現(xiàn)的幾起案子照筑,更是在濱河造成了極大的恐慌,老刑警劉巖瘦陈,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凝危,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡晨逝,警方通過查閱死者的電腦和手機(jī)蛾默,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捉貌,“玉大人支鸡,你說我怎么就攤上這事』韬玻” “怎么了苍匆?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棚菊。 經(jīng)常有香客問我浸踩,道長,這世上最難降的妖魔是什么统求? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任检碗,我火速辦了婚禮,結(jié)果婚禮上码邻,老公的妹妹穿的比我還像新娘折剃。我一直安慰自己,他們只是感情好像屋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布怕犁。 她就那樣靜靜地躺著,像睡著了一般己莺。 火紅的嫁衣襯著肌膚如雪奏甫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天凌受,我揣著相機(jī)與錄音阵子,去河邊找鬼。 笑死胜蛉,一個(gè)胖子當(dāng)著我的面吹牛挠进,可吹牛的內(nèi)容都是我干的色乾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼领突,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼暖璧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起攘须,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤漆撞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后于宙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浮驳,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年捞魁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了至会。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谱俭,死狀恐怖奉件,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昆著,我是刑警寧澤县貌,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站凑懂,受9級(jí)特大地震影響煤痕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜接谨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一摆碉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脓豪,春花似錦巷帝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至笤闯,卻和暖如春现拒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背望侈。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勋桶,地道東北人脱衙。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓侥猬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捐韩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子退唠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容