Ambari之Get请求的处理流程

关于Get请求如何转化成对应XXResourceProvider

Get查询请求相关实现类图.png

  1. createResource(),根据Resource.Type获得ResourceDefnition,然后创建QueryImpl implement ResourceInstance,并由ClusterControllerHelper创建ClusterController(所有XXResourceProvider访问入口)注入到QueryImpl中。
  2. handlerequest(),创建GetRequest
  3. request.process(),解析Renderer、Predicate
  4. ReadHandler.handlerRequest(), 封装Query,setPage、setSort、setRenderer、setPredicate,query.execute
  5. ClusterController.getResource(Type,Request,Predicate), 根据Type获得Provider.
  6. provider.queryForResources(), 最终调用对应reourceProvider.getResource()返回查询结果QueryResponse.

一个Get请求具体调用实例

StackService.png

获得服务列表接口 (StackService)

/stacks/HDP/versions/2.3/services?fields=StackServices/,components/,components/dependencies/Dependencies/scope,artifacts/Artifacts/artifact_name&_=1457076234100

RequestFactory 会根据请求类型来创建对应的Request, EG: 此例中的GetRequest。 之后GetRequest实现了getRequestHandler方法来创建处理请求的handler,EG: 此例中的ReadHandler。ReadHandler负责解析参数中的查询条件进行查询,随后返回结果Result对象。最终Result被ResponseBuidler封装为Responde返回前台。

定时任务流程

Quartz





 

posted @ 2016-04-26 11:00  jasonbrooke  阅读(350)  评论(0)    收藏  举报