• Ambari源代码分析之总览


    一、基本概念:

    1. Resource:Ambari把能够被管理的资源的抽象为一个Resource实例,资源能够包括服务、组件、主机节点等,一个resource实例中包括了一系列该资源的属性;
    2. Property:服务组件的指标名称;
    3. ResourceProvider和PropertyProvider分别相应Resource和Property的提供方,获取指标须要先获取Resource,然后获取Property相应的metric;
    4. Query:Query是Resource的内部对象,代表了对该资源的操作;
    5. Request:一个Request代表了对Resource的操作请求,包括http信息及要操作的Resource的实例,Request依照http的请求方式分为四种:GET、PUT、DELETE、POST;
    6. Predicate:一个Predicate代表了一系列表达式,如and、or等;

    二、源码结构:

    1. org.apache.ambari.server.api.services:对web接口的入口方法,处理/api/v1/*的请求;
    2. org.apache.ambari.server.controller:对Ambari中cluster的管理操作,如新增host,更新service、删除Component等;
    3. org.apache.ambari.server.controller.internal:主要存放ResourceProvider和PropertyProvider;
    4. org.apache.ambari.server.orm.*:数据库操作相关;
    5. org.apache.ambari.server.agent.rest:处理与Agent的接口的入口方法;

    三、获取指标流程:

    1. jersy接口接收到请求,创建一个ResourceInstance实例;
    2. 解析http请求构造一个Request对象,然后交给reques的process()方法来处理;
    3. reques解析url或http_body得到一个Predicate对象;
    4. 依据http类型获取handler,GET请求相应ReadHandler;
    5. handler向Query对象中加入�分页、Render、Predicate等属性后,然后让query.execute();
    6. 依据Resource.Type获得相应的ResourceProvider对象,调用其getResources方法得到Set<Resource>;
    7. 调用相应的PropertyProvider填充Resource;
    8. 处理结果,放回json结果


  • 相关阅读:
    单例设计模式
    MySQL数据类型
    MySQL创建、修改、删除数据库
    HTTP请求与响应
    netcore在CentOS7 下使用处理图片的问题
    SQL删除重复数据
    不同浏览器对cookie大小与个数的限制
    asp.net实现SQL2005的通知数据缓存
    MS SQL 设置自增长字段默认值
    MS SQL 批量操作
  • 原文地址:https://www.cnblogs.com/blfshiye/p/3787230.html
Copyright © 2020-2023  润新知