一个 RPC 框架
项目描述
# Doge
[](https://github.com/zhu327/doge/blob/master/LICENSE)
[](https://travis-ci.org/zhu327/doge)
[](https://codecov.io/gh/zhu327/doge)
Doge 是一个类似于 [Alibaba Dubbo] 的 Python RPC 框架(http://dubbo.io/) 和【微博 Motan】(https://github.com/weibocom/motan)。
## Features

- 服务治理, 服务注册, 服务发现
- 高可用策略、failoverRequestHA
- 在均衡策略、RandomLB、RoundrobinLB
- 限流策略、gevent Pool
## 快速启动##
安装
```sh
pip install dogerpc
```
你可以[示例](https: //github.com/zhu327/doge/tree/master/examples): 找到以下实例
### Doge server
1. 新建服务器端配置文件
```javascript
{
"registry": { // 注册中心
"protocol" " etcd", // 注册协议, 支持 etcd 与直接协议, etcd
"host": "127.0.0.1", // 注册中心 host
"port": 2379, // 中心端口
// "address": "127.0. 0.1:2379,127.0.0.1:4001", // 注册中心地址, 有etcd, 可配置多个节点
"ttl": 10 // 用于etcdttl, 服务器注册检查,10s
},
“服务”:{
"name": "test", // 服务名称
"node": "n1", // 节点节点名称
"host": "127.0.0.1", // 服务暴露ip
"port": 4399, // 服务暴露端口
"limitConn": 100 // 任选服务最大连接数, 定义, 默认不限制
}
}
```
2. 定义RPC方法类, 启动服务
```python
# coding: utf-8
from gevent import monkey
monkey.patch_socket( ) # 依赖gevent
import logging
logging.basicConfig(level=logging.DEBUG)
from doge.rpc.server import new_server
# 定义rpc方法类
Sum(object):
def sum(self, x, y):
return x + y
if __name__ == '__main__':
server = new_server('server.json') #基于配置文件实例化服务器对象
server.load(Sum) # 加载暴露rpc方法类
server.run() # 启动服务并注册节点信息到注册中心
```
### Doge client
1. 新建客户端配置文件
```javascript
{
"registry" : { // 注册中心
"protocol": "etcd", // 注册协议,支持 etcd 与 direct, etcd
"host": "127.0.0.1", // 注册中心 host
"port": 2379, // 注册中心端口
// "address": "127.0.0.1:2379,127.0.0.1:4001", // 注册中心地址,如果有etcd集群,可配置多个node
"ttl": 10 // etcd注册ttl,用于服务器的心脏检查, 默认10s
},
"refer": {
"haStrategy": "failover", // 高可用策略, 支持故障转移备份RequestHA, 默认故障转移
"loadbalance": "RoundrobinLB", // 均衡策略, 支持RandomLB RoundrobinLB, 默认RoundrobinLB
}
}
```
2. 创建客户端并调用远程方法
```python
# coding: utf-8
from __future__ import print_function
from gevent import
monkey.patch_socket()
import logging
logging.basicConfig(level=logging.DEBUG)
from doge. rpc.client import Cluster
if __name__ == '__main__':
cluster = Cluster('client.json') #基于配置文件实例化Cluster对象
client = cluster.get_client("test") #获取服务名的Client对象
print (client.call('sum', 1, 2)) #远程调用服务Sum类下的sum方法
```
## doge json gateway
基于Bottle实现的json rpc gateway
<https://gist.github.com/ zhu327/24c8262dc40c5de7eeaddbfc572f4215>
##要求
- [gevent](https://github.com/gevent/gevent)
- [mprpc](https://github.com/studio-ousia/mprpc)
- [python-etcd](https://github.com /jplana/python-etcd)
- [pyformance](https://github.com/omergertel/pyformance)
## 许可证
Apache 许可证,版本 2.0
[](https://github.com/zhu327/doge/blob/master/LICENSE)
[](https://travis-ci.org/zhu327/doge)
[](https://codecov.io/gh/zhu327/doge)
Doge 是一个类似于 [Alibaba Dubbo] 的 Python RPC 框架(http://dubbo.io/) 和【微博 Motan】(https://github.com/weibocom/motan)。
## Features

- 服务治理, 服务注册, 服务发现
- 高可用策略、failoverRequestHA
- 在均衡策略、RandomLB、RoundrobinLB
- 限流策略、gevent Pool
## 快速启动##
安装
```sh
pip install dogerpc
```
你可以[示例](https: //github.com/zhu327/doge/tree/master/examples): 找到以下实例
### Doge server
1. 新建服务器端配置文件
```javascript
{
"registry": { // 注册中心
"protocol" " etcd", // 注册协议, 支持 etcd 与直接协议, etcd
"host": "127.0.0.1", // 注册中心 host
"port": 2379, // 中心端口
// "address": "127.0. 0.1:2379,127.0.0.1:4001", // 注册中心地址, 有etcd, 可配置多个节点
"ttl": 10 // 用于etcdttl, 服务器注册检查,10s
},
“服务”:{
"name": "test", // 服务名称
"node": "n1", // 节点节点名称
"host": "127.0.0.1", // 服务暴露ip
"port": 4399, // 服务暴露端口
"limitConn": 100 // 任选服务最大连接数, 定义, 默认不限制
}
}
```
2. 定义RPC方法类, 启动服务
```python
# coding: utf-8
from gevent import monkey
monkey.patch_socket( ) # 依赖gevent
import logging
logging.basicConfig(level=logging.DEBUG)
from doge.rpc.server import new_server
# 定义rpc方法类
Sum(object):
def sum(self, x, y):
return x + y
if __name__ == '__main__':
server = new_server('server.json') #基于配置文件实例化服务器对象
server.load(Sum) # 加载暴露rpc方法类
server.run() # 启动服务并注册节点信息到注册中心
```
### Doge client
1. 新建客户端配置文件
```javascript
{
"registry" : { // 注册中心
"protocol": "etcd", // 注册协议,支持 etcd 与 direct, etcd
"host": "127.0.0.1", // 注册中心 host
"port": 2379, // 注册中心端口
// "address": "127.0.0.1:2379,127.0.0.1:4001", // 注册中心地址,如果有etcd集群,可配置多个node
"ttl": 10 // etcd注册ttl,用于服务器的心脏检查, 默认10s
},
"refer": {
"haStrategy": "failover", // 高可用策略, 支持故障转移备份RequestHA, 默认故障转移
"loadbalance": "RoundrobinLB", // 均衡策略, 支持RandomLB RoundrobinLB, 默认RoundrobinLB
}
}
```
2. 创建客户端并调用远程方法
```python
# coding: utf-8
from __future__ import print_function
from gevent import
monkey.patch_socket()
import logging
logging.basicConfig(level=logging.DEBUG)
from doge. rpc.client import Cluster
if __name__ == '__main__':
cluster = Cluster('client.json') #基于配置文件实例化Cluster对象
client = cluster.get_client("test") #获取服务名的Client对象
print (client.call('sum', 1, 2)) #远程调用服务Sum类下的sum方法
```
## doge json gateway
基于Bottle实现的json rpc gateway
<https://gist.github.com/ zhu327/24c8262dc40c5de7eeaddbfc572f4215>
##要求
- [gevent](https://github.com/gevent/gevent)
- [mprpc](https://github.com/studio-ousia/mprpc)
- [python-etcd](https://github.com /jplana/python-etcd)
- [pyformance](https://github.com/omergertel/pyformance)
## 许可证
Apache 许可证,版本 2.0
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
dogerpc-0.1.4.tar.gz
(11.5 kB
查看哈希)
内置分布
dogerpc-0.1.4-py2.py3-none-any.whl
(15.7 kB
查看哈希)