1、blocking_queue_t
一个队列的封装,用于feature_logger_t和predict_manager_t
2、feature_logger_t
用于异步将用户特征、内容特征、以及内容得分写到日志
3、content_feature_redis_cluster_t
用于维护一个redis_cluster的单例
4、predictor_t
由predictor_manager_t维护,根据配置文件加载一系列predictor_t
p_model对应到一个GbdtModel
p_db对应到一个kv数据库
5、predict_manager_t
doc_result_t,文章评分结果,含score、gbdt_score、gbdt_features
task_tracker_t,用于跟踪一次打分任务是否已完成
predict_doc_t,要打分的文章,含p_features、p_predictor
predict_task_t,一个打分任务,含tracker、p_predictor、p_user_features、docs,在任务完成时,通过tracker通知等待者
predict_manager_t,根据配置文件开启一堆线程来完成打分任务
6、predict_manager_t::_predict_worker_func 打分过程
1. feature-extract
1.1 feature data
1.2 gen static , fill cfb key dictionary
1.3 store
2. batch get cfb
3. add cfb features which in dictionary
4. gbdt model predict
7、_model_predict
1. score the doc
2. age decay
8、scoring_t 基于Thrift对外提供打分服务
1. get content profiles
2. copy predictor for per request param override
3. parse user features and generate user gbdt features
4. init task tacker & lock
5. init task
6. add to working queue
7. unlock、wait & get result
8. acquire lock again to make sure all predict thread finished before tracker deletion