目录


简介

summerrpc是一个Python的RPC框架。它支持服务的注册与发现,目前支持使用Zookeeper作为注册中心。summerrpc是基于Tornado实现的,也就是说在框架层面使用的是基于事件的异步网络模型。我们知道,在Python世界中,如果一个框架是基于异步网络库实现的,那么在这个框架中,不能使用任何同步的网络操作。比如著名的爬虫框架Scrapy是基于Twisted实现的,那么在Scrapy中,就不能使用PyMongo这个MongoDB驱动,否则,就会导致整个进程退化为单线程程序,从而导致性能不足。在summerrpc中,对此进行了改进,在网络层面仍旧通过使用异步编程提升吞吐量,但是在执行业务方法时,如果该业务方法是tornado协程,这意味这该方法不会产生阻塞,因此,在IOLoop线程,也就是主线程中,运行它;否则,会使用一个单独的线程来运行它,从而达到不阻塞IOLoop线程的目的。每个RpcServer实例内部都会维护一个线程池,专门用于运行,这些使用了阻塞操作的业务方法,线程池的大小可以通过RpcServerBuilder.with_thread_pool_size(thread_pool_size)方法来设置。
github地址:https://github.com/tim-chow/summerrpc


架构概览

summerrpc-arch-1.png
summerrpc-arch-2.png