Clone this repo:
  1. 0947552 Update README.md by Ian Luo · 6 months ago master
  2. e745a6d Merge pull request #12 from zhaowei7146/readme by Ian Luo · 10 months ago
  3. 9acfd06 The content is duplicated in the README.md and needs to be deleted by zhaowei7146 · 11 months ago
  4. 5ab6c6e Merge pull request #10 from Heluwe/baiji_team8_dubbo-client-py by ken.lj · 1 year, 1 month ago
  5. ab48698 Add redme to english by xly · 1 year, 2 months ago

Python Client For Apache Dubbo

Achieve load balancing on the client side、auto discovery service function with Zookeeper

Python calls the Dubbo interface's jsonrpc protocol

Please use dubbo-rpc-jsonrpc and configure protocol in Dubbo for jsonrpc protocol
Reference https://github.com/apache/incubator-dubbo-rpc-jsonrpc

Installation

Download code
python setup.py install
pip install
pip install dubbo-client==1.0.0b5 Git install
pip install git+http://git.dev.qianmi.com/tda/dubbo-client-py.git@1.0.0b5
or
pip install git+https://github.com/qianmiopen/dubbo-client-py.git@1.0.0b5

Load balancing on the client side, service discovery

Get the registration information of the service through the zookeeper of the registry.
Dubbo-client-py supports configuring multiple zookeeper service addresses. “host”:“192.168.1.183:2181,192.168.1.184:2181,192.168.1.185:2181”
Then the load balancing algorithm is implemented by proxy, and the server is called.
Support Version and Group settings.

Example

    config = ApplicationConfig('test_rpclib')
    service_interface = 'com.ofpay.demo.api.UserProvider'
    #Contains a connection to zookeeper, which needs caching.
    registry = ZookeeperRegistry('192.168.59.103:2181', config)
    user_provider = DubboClient(service_interface, registry, version='1.0')
    for i in range(1000):
    try:
        print user_provider.getUser('A003')
        print user_provider.queryUser(
            {u'age': 18, u'time': 1428463514153, u'sex': u'MAN', u'id': u'A003', u'name': u'zhangsan'})
        print user_provider.queryAll()
        print user_provider.isLimit('MAN', 'Joe')
        print user_provider('getUser', 'A005')

    except DubboClientError, client_error:
        print client_error
    time.sleep(5)

TODO

Optimize performance, minimize the impact of service upper and lower lines.
Support Retry parameters
Support weight call
Unit test coverage

Licenses

Apache License

Thanks

Thank @jingpeicomp for being a Guinea pig. It has been running normally for several months in the production environment. Thank you!