阿里巴巴大数据之路-数据服务层

首页 > 科技 > 大数据 > 正文 2020-10-11

发表自话题:阿里大数据查询平台

阿里数据服务架构演进过程如下:

DWSOA:一个需求一个接口,编码实现接口,接口数量5000/年。开发效率低,投入成本高,扩展性差。OpenAPI:一类需求一个接口,配置实现接口,接口数量200/年。相比上一种方式,这种方式有效收敛了数量。SmartDQ:所有需求一个接口,配置实现接口,接口数量1,缺点是服务形式不够丰富,只能满足简单的查询服务需求(毕竟SQL并不能解决复杂的业务逻辑)。SmartDQ通过在OpenAPI的基础上,再抽象一层,用DSL(领域专用语言)来描述取数需求,新做一套DSL必然有学习成本,因此采用标准的SQL语法。OneService:提供多种服务类型来满足用户需求。

A、OneService-SmartDQ:通过SQL语法提供简单的查询服务需求。

B、OneService-Lego:采用插件方式满足个性化需求,为了避免插件之间相互影响,我们将插件做成微服务,使用Docker做隔离。Lego可以采用轻量级的Node.JS技术栈实现,适合处理高并发、低延迟的IO密集型场景。

C、OneService-iPush:主要提供websocket和long polling两种方式,其应用场景主要是商家端实时直播。比如双11,此时使用websocket方式可以有效缓解服务器压力,给用户带来最实时的体验。

D、OneService-uTiming:主要提供即时任务和定时任务两种模式,其主要应用场景是满足用户运行大数据量任务的需求。

最佳实践:

资源分配:复杂的计算逻辑可以提前计算;Get接口只返回一条记录,查询代价小响应时间短,List接口返回多条记录,查询时间相对较长,可以设计Get线程池和List线程池两个独立的线程池避免Get接口和List接口相互影响;查询可以在引擎层自动进行拆分查询,然后再把查询结果进行合并。缓存优化:元数据缓存、模型缓存、结果缓存。查询能力:由于离线数据和实时数据存放在不同地方,并且离线数据最准确,需要优先使用离线数据,如果离线数据还未产出,则改用实时数据,这就是要对离线和实时进行合并查询;能采用推送的,就不采用轮询,因为轮询对服务器压力大。限流、降级:限流就是直接降到0,降级就是只将存在问题的资源置为失效状态。

标签组:[大数据] [接口] [线程池

上一篇python 大数据查询

下一篇mysql大数据量查询优化

相关阅读

相同话题文章

相关话题