隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴大,常規(guī)的垂直應(yīng)用架構(gòu)已無法應(yīng)對,分布式服務(wù)架構(gòu)以及流動計算架構(gòu)勢在必行,需一個治理系統(tǒng)確保架構(gòu)有條不紊的演進。
目前市場一些基本的架構(gòu):
Dubbo是阿里巴巴公司開源的一個高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的RPC實現(xiàn)服務(wù)的輸出和輸入功能,可以和spring框架無縫集成。
Dubbo是一款高性能,輕量級的開源Java RPC框架,他提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負(fù)載均衡,以及服務(wù)自動注冊和發(fā)現(xiàn)。
Remoting:網(wǎng)絡(luò)通信框架,實現(xiàn)了sync-over-async和request-response消息機制。
RPC:一個遠程過程調(diào)用的抽象,支持負(fù)載均衡,容災(zāi)和集群功能。
Registry:服務(wù)目錄框架用于服務(wù)的注冊和服務(wù)事件發(fā)布和訂閱。
節(jié)點角色
調(diào)用關(guān)系
特點
連通性,健壯性,伸縮性,以及向未來架構(gòu)的升級性。想要了解更多,可直接去官網(wǎng)查看:
https://dubbo.apache.org/zh/
1、透明化的遠程方法調(diào)用,就像調(diào)用本地方法一樣調(diào)用遠程方法,只需簡單配置,沒有任何API侵入。
2、軟負(fù)載均衡及容錯機制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點。
3、服務(wù)自動注冊與發(fā)現(xiàn),不再需要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。
python想要實現(xiàn)dubbo接口的調(diào)用可以參考dubbo的官方文檔中提到的:dubbo可以通過telnet命令進行服務(wù)治理,可以通過telnet鏈接dubbo服務(wù),再通過invoke方法調(diào)用dubbo接口,詳情見:
https://dubbo.apache.org/zh/docs/v2.7/user/references/telnet/
而在Python中有一個第三方包telnetlib
,所以我們可以通過這個包來執(zhí)行telnet命令,進而對dubbo接口進行調(diào)用。
注意:python版本為2.7
pip install dubbo_telnet
#-*- coding: utf-8 -*-
import dubbo_telnet
import json
Host = '192.168.0.1' # Doubble服務(wù)器IP
Port = 9036 # Doubble服務(wù)端口
# 初始化dubbo對象
conn = dubbo_telnet.connect(Host, Port)
# 設(shè)置telnet連接超時時間
conn.set_connect_timeout(10)
# 設(shè)置dubbo服務(wù)返回響應(yīng)的編碼
conn.set_encoding('gbk')
# 顯示服務(wù)列表
print conn.do("ls")
# 顯示指定服務(wù)的方法列表
print conn.do("ls XXXService")
# 方法調(diào)用
interface = 'XXXService'
method = 'userinfo'
param = user_id
result = conn.invoke(interface, method, param)
print json.dumps(result, sort_keys=True, indent=4, separators=(',', ': '), skipkeys=True, ensure_ascii=False)
# 詳見:https://hhyo.github.io/2017/10/20/python-dubbo-telnet/