昨天講到了HSF容器的啟動 。 HSF容器啟動以后,通過osgi的bundleContext拿到了一組需要暴露給hsf容器外部使用的類,以及基於這些類的urlclassLoader. 這里面有兩個關鍵的類:HSFSpringConsumerBean 和HSFSpringProviderBean ,
HSFSpringProviderBean負責啟動RPC服務器 ,並把HSF服務信息發布到配置中心(淘寶的config server) .
HSFConsumerBean負責從配置中心獲取HSF接口的服務器列表,生成接口的代理類,由這個代理類承擔RPC請求。
整個系統結構圖如下 :
整個過程描述如下:
1、HSFSpringProviderBean啟動HSF服務器, 采用了Apache Mina做網絡通信框架(之前的blog中有描述),淘寶的tbremoting基於apache mina,提供更接近業務層的網絡通信服務。
2、發HSF服務的元信息,包括服務器的ip,端口,是否是異步調用等信息發布到淘寶的配置中心(configserver) ;
3、HSFSpringConsumerBean生成一個HSF接口的代理類, 然后從configserver獲取HSF的服務地址列表,從diamond server(淘寶的另一個配置中心,支持配置信息的實時推送) 獲取流控和服務器路由信息。
4、在HSF接口調用時通過第3步生成的接口的代理類進行一個RPC調用(序列化方式可以采用java和hessian) ,調用服務器的選擇算法目前采用的是隨機分配的方式。
后面結合源碼詳細的展開描述:1、configserver配置信息的發布和訂閱。 2、基於tbremoting進行的rpc的詳細分析。