『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践( 三 )


华为云给出的方案是存算分离 。
通过四个方法解决了其中的四个关键点:依照时序数据不会修改的特征 , 数据分类为热数据与冷数据 , 热数据可写可搜 , 冷数据可搜不可写 。 这样解决了时序数据特征到数据处理模型的映射 。 热转冷时 , 将数据转移到对象存储 , 由于对象存储使用的是纠删码存储 , 冗余与有效载荷的比值远小于1 , 大幅节约了原先由于多副本带来的存储成本 。 计算节点内还是保留多副本概念 , 用于维护可靠性 , 但是都仅仅是指向同一份对象存储 , 不会重复存储 。 对于冷数据 , 不会长时间维持全部的元数据以及Cache , 而是自建内存管理机制 , 尽可能的少用内存 , 实现小马拉大车 , 少量节点带动大量数据 。
通过上述方式 , 实现了日志数据保留成本下降至20% , 同时数据容量相比优化前提升12倍 。
五、报表加速
为了统计PV/UV曲线或者请求的平均时延曲线等运营运维的数据用于企业业务或者IT管理的决策参考 , 通常IT部门会引入ES来根据原始的指标数据来制作报表 。 但是这个方式在统计跨度稍大的范围时 , 就很容易出现报表很慢或者OOM的情况 。
华为云采用了报表加速技术解决 。
『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践
本文插图
华为云搜索报表加速方式
如上图 , 这个方案分为两个部分 , 上面一部分是Rollup 。 Rollup的原理并不复杂 , 把时间按照一定的粒度比如5分钟进行分割 , 将里面的数据按照配置好的聚合语句预先进行一遍聚合计算 。 那么后续再来报表请求的时候 , 直接基于预先聚合好的粗粒度数据计算 , 可以大幅提升计算效能 。 这个方案ES的非开源包XPack中有实现 , 华为云搜索也采用了自己的实现 。
更贴近客户也是更独特的部分是图中的下半部分 。 由于ES中Rollup是一套独立的API , 用户需要自己进行预聚合的操作与任务维护 。 华为云搜索则是通过判断用户的慢日志 , 来自动化的协助用户决策 , 是否需要进行加速 , 并生成中间数据辅助计算 。 优化前后 , 用户的业务不需要进行任何修改 , 在已有的接口之上便可获得加速能力 。
最后得到的效果是 , 基本所有加速的报表提速都在100倍以上 。
欢迎扫码试用华为云搜索服务