1 背景
presto虽然可以集群化部署,但是由于coordinate存在单点问题,商业化应用还是存在一定的问题,本文会给出一种简单的集群化部署方案,解决presto的单点问题。
2 架构图
3 方案说明
1、 presto采用多coordinate,多集群的方式进行部署;
2、 client在运行任务时,可根据负载均衡的规则,随机选择一个presto集群建立连接,创建任务;
3、 任务建立成功后,client将连接的presto coordinate的会话信息保存在状态存储中(mongo/cdb/redis均可);
4、 后续每次这个任务的查询交互,都直接访问对应的presto集群即可;
此方案再不修改presto代码的情况,可以快速搭建出一套容灾集群化部署的方案,但是方案的缺点就是冗余过多,不同presto集群间的计算资源不容易共享,当然也可以采用presto worker在同一机器上混布的方式解决这个问题,但终归不是一个最优方案,但是它的便利性还是有值得借鉴的地方。
后续可以考虑将coordinate利用zookeeper等搭建出集群化的方案,使presto单点问题更容易解决。