隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大,常規(guī)的垂直應(yīng)用架構(gòu)已無法應(yīng)對,分布式服務(wù)架構(gòu)以及流動計(jì)算架構(gòu)勢在必行,需一個(gè)治理系統(tǒng)確保架構(gòu)有條不紊的演進(jìn)。
目前市場一些基本的架構(gòu):
Dubbo是阿里巴巴公司開源的一個(gè)高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的RPC實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和spring框架無縫集成。
Dubbo是一款高性能,輕量級的開源Java RPC框架,他提供了三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯(cuò)和負(fù)載均衡,以及服務(wù)自動注冊和發(fā)現(xiàn)。
Remoting:網(wǎng)絡(luò)通信框架,實(shí)現(xiàn)了sync-over-async和request-response消息機(jī)制。
RPC:一個(gè)遠(yuǎn)程過程調(diào)用的抽象,支持負(fù)載均衡,容災(zāi)和集群功能。
Registry:服務(wù)目錄框架用于服務(wù)的注冊和服務(wù)事件發(fā)布和訂閱。
節(jié)點(diǎn)角色
調(diào)用關(guān)系
特點(diǎn)
連通性,健壯性,伸縮性,以及向未來架構(gòu)的升級性。想要了解更多,可直接去官網(wǎng)查看:
https://dubbo.apache.org/zh/
1、透明化的遠(yuǎn)程方法調(diào)用,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置,沒有任何API侵入。
2、軟負(fù)載均衡及容錯(cuò)機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點(diǎn)。
3、服務(wù)自動注冊與發(fā)現(xiàn),不再需要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。
python想要實(shí)現(xiàn)dubbo接口的調(diào)用可以參考dubbo的官方文檔中提到的:dubbo可以通過telnet命令進(jìn)行服務(wù)治理,可以通過telnet鏈接dubbo服務(wù),再通過invoke方法調(diào)用dubbo接口,詳情見:
https://dubbo.apache.org/zh/docs/v2.7/user/references/telnet/
而在Python中有一個(gè)第三方包telnetlib
,所以我們可以通過這個(gè)包來執(zhí)行telnet命令,進(jìn)而對dubbo接口進(jìn)行調(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連接超時(shí)時(shí)間
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/
聯(lián)系客服