Presto worker发现机制 (on k8s)

本文深入探讨了Presto在Kubernetes环境中的worker发现机制,当K8s pod重启导致IP变化时,如何通过域名解决通信问题。Presto使用Apache Airlift进行服务发现,worker通过/v1/node接口注册,并通过内部地址配置为域名以适应K8s的动态环境。同时,文章指出Presto不需要依赖外部组件如DB或Zookeeper,而是基于网络实现服务发现。
摘要由CSDN通过智能技术生成

Presto 服务发现机制

吃个瓜

网上Presto有两个版本:prestosql/prestodb,大家喜欢称为社区版和Facebook版,除了包名,现在看还没多大的区别。但是这两家都在称自己是***offical***的,惊喜不?主要原因是两者是同一波人搞的。原Facebook Presto的三位核心另外拉了一个项目。为啥呢?facebook虽然开源了presto,但是并不怎么搭理开源社区的各位,还是围着自家转,文档什么的都是少到可怜。那三位有些不爽了,毕竟脱离了广大群众的软件不是好软件。总体来说,Presto也算是起了个早床,赶了个晚集。

导火索

大家引入Presto的时候感觉真是爽,查询速度飞起。突然有一天发现Presto抛出异常,报出的错误是和某某节点通信异常。鬼就鬼在这个节点ip不存在,后来发现是因为presto在k8s上的worker pod重启了,上面的ip呢是重启前的ip地址。其根源是冬冬在bbs上有讲的内存设置问题,同时也引发了另一个思考:Presto on k8s时不能按ip来进行通信,因为ip是浮动的。 那么有没有办法用域名呢?

问题解决的路径

获取worker信息

要想解决问题,首先就得把问题了解透彻了,怎么知道集群中有哪些worker?worker怎么标识的?

Presto的页面上能看到有几个节点,可以从证明Presto的coordinate肯定知道这个信息。圈里一般的玩法是提供个api或者是存储位置让用户看。正如瓜中所述,Presto的使用文档格式清晰,排版漂亮,但都是些基础的配置,你想找点高深的配置或者接口,就得费点心了。Presto的源码里面有个文档文件夹,绝对的宝库。

presto-docs/src/main/sphinix/

子文件夹rest中包含了rest接口的所有说明,可知通过接口 /v1/node 能拿到coordinater上worker的信息。标准的返回:

{
   
    "uri":"http://10.209.57.156:8080",
    "recentRequests":25.181940555111073,
    "recentFailures":0.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值