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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python rpc微服务框架_grpc的微服务探索实践

發(fā)布時(shí)間:2025/3/19 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python rpc微服务框架_grpc的微服务探索实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對于微服務(wù)的實(shí)踐,一般都是基于Java和Golang的,博主最近研究了下基于Python的微服務(wù)實(shí)踐,現(xiàn)在通過一個(gè)簡單的服務(wù)來分析Python技術(shù)棧的微服務(wù)實(shí)踐

技術(shù)棧:Python3 + grpc + Zookeeper

服務(wù)API:通過學(xué)科獲取相應(yīng)的題型

grpc:由Google公司開源的高性能RPC框架,消息協(xié)議使用Google自家開源的Protocol Buffers協(xié)議機(jī)制,傳輸使用HTTP2.0標(biāo)準(zhǔn),支持雙向流和連接多路復(fù)用

Protocol Buffers部分:

syntax = "proto3";

message Subject {

string name= 1;

}

message QuestionType {

string name= 1;

}

service SimpleRpcServer {//server streaming rpc//客戶端發(fā)送學(xué)科,服務(wù)端多次返回該學(xué)科包含的題型

rpc GetSubjectQuestionTypes (Subject) returns (stream QuestionType) {

}

}

這里定義grpc的接口類型為服務(wù)器流式RPC,即客戶端發(fā)起一次請求,服務(wù)器可以返回多個(gè)響應(yīng)信息,典型的例子有:客戶端向服務(wù)端發(fā)送一個(gè)股票代碼,服務(wù)端就把該股票的實(shí)時(shí)數(shù)據(jù)源源不斷的返回給客戶端:

通過protobuf編譯器和Protocol Buffers生成代碼:

python3 -m grpc_tools.protoc -I. --python_out=.. --grpc_python_out=.. simple_calculate.proto

服務(wù)端開啟服務(wù)器,對外提供rpc調(diào)用流程:

客戶端rpc調(diào)用流程:

Zookeeper服務(wù)注冊與發(fā)現(xiàn)策略:

服務(wù)注冊:

1 defregister_zk(host, port):2 """

3 注冊到zookeeper4 """

5 zk = KazooClient(hosts='{host}:{port}'.format(6 host=settings_info["zookeeper"]["host"],7 port=settings_info["zookeeper"]["port"])8 )9 zk.start()10 zk.ensure_path('/rpc_calc') #創(chuàng)建根節(jié)點(diǎn)

11 value = json.dumps({'host': host, 'port': port})12

13 #創(chuàng)建服務(wù)子節(jié)點(diǎn)

14 zk.create(15 '/rpc_calc/calculate_server',16 value.encode(),17 ephemeral=True,18 sequence=True19 )

服務(wù)治理發(fā)現(xiàn):

1 def _get_servers(self, event=None):2 """

3 從zookeeper獲取服務(wù)器地址信息列表4 """

5 servers =self._zk.get_children(6 '/rpc_calc', watch=self._get_servers7 )8 print(servers)9 self._servers =[]10 for server inservers:11 data = self._zk.get('/rpc_calc/' +server)[0]12 ifdata:13 addr =json.loads(data.decode())14 self._servers.append(addr)15

16 defget_server(self):17 """

18 隨機(jī)選出一個(gè)可用的服務(wù)器19 """

20 return random.choice(self._servers)

服務(wù)端實(shí)現(xiàn)代碼:

1 classSimpleRpcServerServicer(calculate_grpc.SimpleRpcServerServicer):2 """

3 實(shí)現(xiàn)被調(diào)用方法的具體代碼4 """

5

6 def __init__(self):7 self.subject_question_type_db ={8 'Chinese': ['單選', '多選', '填空', '解答', '問答', '作文'],9 'Math': ['單選', '填空', '解答'],10 'English': ['單選', '填空', '作文'],11 'Physics': ['單選', '多選', '填空', '解答'],12 'Chemistry': ['單選', '多選', '填空', '解答'],13 'Biology': ['單選', '多選', '填空', '解答'],14 'History': ['單選', '多選', '填空', '解答', '問答']15 }16

17 defGetSubjectQuestionTypes(self, request, context):18 """

19 服務(wù)器流式RPC調(diào)用 根據(jù)subject獲取question_types20 :param request:21 :param context:22 :return:23 """

24 subject =request.name25 question_types =self.subject_question_type_db.get(subject)26 for question_type inquestion_types:27 yield calculate_pb2.QuestionType(name=question_type)

客戶端實(shí)現(xiàn)代碼:

1 definvoke_get_subject_question_types(stub):2 """

3 根據(jù)學(xué)科獲取題型4 Server Streaming RPC 服務(wù)器流式RPC 客戶端發(fā)送,服務(wù)器響應(yīng)多個(gè)5 :param stub:6 :return:7 """

8 subject = calculate_pb2.Subject(name='Chinese')9 question_types =stub.GetSubjectQuestionTypes(subject)10 for question_type inquestion_types:11 print(question_type.name)

服務(wù)測試:

開啟三個(gè)服務(wù),地址分別是 host:8003 host:8005 host:8009,客戶端開啟兩個(gè),client1 和 client2 ,測試結(jié)果:

已經(jīng)成功注冊了三個(gè)server到Zookeeper,客戶端1使用的是8003端口的server,客戶端2使用的是8005端口的server;grpc框架對于完整的rpc實(shí)現(xiàn)來說,實(shí)質(zhì)上是封裝了 網(wǎng)絡(luò)傳輸、數(shù)據(jù)協(xié)議的打包解包,使得實(shí)現(xiàn)rpc更加簡單,其本質(zhì)仍然是遵守rpc的實(shí)現(xiàn)原理的

總結(jié)

以上是生活随笔為你收集整理的python rpc微服务框架_grpc的微服务探索实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文幕无线码中文字蜜桃 | 无码人妻一区二区三区在线 | 亚洲一区h | 国产精品一区二区三区免费在线观看 | 手机版av | 成人国产av一区二区三区 | 国产在线午夜 | 久久伊人操 | 中国爆后菊女人的视频 | 黄色亚洲视频 | 成年人的毛片 | 涩涩视频在线 | av在线免费播放网址 | 久久综合欧美 | 看片一区| 卡一卡二视频 | 免费a级大片 | 精品在线免费播放 | 青青青在线观看视频 | 欧美无砖区 | 六月婷婷在线 | 伊人日韩| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 欧美黄色性 | av免费网址在线观看 | 婷婷射 | 国产精品呦呦 | 国产精品国语对白 | 三上悠亚在线观看一区二区 | 少妇搡bbbb搡bbb搡小说 | 亚洲黄色激情视频 | 激情网页 | 轮番上阵免费观看在线电影 | 97超碰在线免费观看 | 欧美寡妇性猛交 | 嫩草大剧院 | 国产精品视频成人 | 欧美精品在线观看一区二区 | 污污在线免费观看 | 一区二区影院 | 国产又粗又猛又爽又 | 国产精品区二区三区日本 | 久久手机看片 | 欧美成人综合 | 欧美电影一区二区三区 | 午夜精产品一区二区在线观看的 | 欧美变态另类刺激 | 日本三级大全 | 中文毛片无遮挡高潮免费 | 日韩三级免费看 | 国产视频福利在线观看 | 精品久久人人妻人人做人人 | 一区不卡视频 | 波多野结衣电影免费观看 | 精品视频一区二区 | 欧美三级精品 | 欧美xxxx胸大 | 日本电影一区二区三区 | 午夜精品福利在线 | 在线黄色免费网站 | 日韩在线网 | 少妇又紧又色 | 视频一区二区欧美 | 毛片.com| 最新中文字幕在线观看视频 | 丁香花电影免费播放电影 | 国产高清视频网站 | 亚洲欧美日韩色 | 久久中文娱乐网 | 日韩啊v | 日韩视频h| 内射无码专区久久亚洲 | 免费福利小视频 | av片亚洲| 成人免费视频国产 | 天天爱天天爽 | 国产资源在线播放 | 亚洲欧美日韩一区在线观看 | 欧美性生活一级 | 福利电影一区二区 | 老太脱裤让老头玩ⅹxxxx | 国产高清精品在线观看 | 午夜精品久久久久久久第一页按摩 | 美女诱惑av | 国内自拍区 | 亚洲视频久久 | 国模在线| 精品久操 | 天天做夜夜做 | 老司机午夜视频 | 中文字幕成人在线视频 | 精品一区二区免费 | 激情五月五月婷婷 | 西西4444www大胆无视频 | 91看片黄色| 熟妇人妻久久中文字幕 | 欧美色图亚洲天堂 | 久久久av电影 | 娇妻被肉到高潮流白浆 |