使用thrift已经有段时间了,目前基本是clien+server的方式,负载是通过nginx来处理。这种处理方式有两个比较大的弊端:
第一:客户端与服务端的关联太紧密,耦合性强
第二:服务的信息没有形成配置化,不易中心化调用
我在参考了slimina的大作,不过他是基于原生的thriftserver来访问的,另外通过apache pool实现了客户端的访问连接池。而我使用nifty分别对客户端,服务器进行了替换,因为nifty自带连接管理。整体思路就是把各服务的配置写入zk,通过zk来统一协调,包括负载的处理。客户端就像使用spring的服务类一要,一个autowire就很方便的调用了。目前只是一个初级版本,接下来首先会在自动生成thrift的idl文件上进行优化。当涉及到流处理参数传递的时候,生成的idl是有问题的。
实际上应该是
最后,贴一下开发流程
代码地址swift
网友评论