-
Notifications
You must be signed in to change notification settings - Fork 271
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请问一下,假如启动2个proxy服务,使用同一份buffer文件,会存在并发问题吗? #73
Comments
并发写有可预见的风险。 |
因为之前的计划是proxy1和proxy2使用相同的缓存文件,例如local.dat。 |
重复写入并无必要,而且你还要面对local.dat的跨节点竞争写问题。 |
刚才根据您的意见已经将这个方案否定掉了。 |
proxy高可用方案的正解是heartbeat或keepalive。上层再加nginx,如果只有一个,nginx本身不HA。如果有两个,等于没用。 |
哦,我们打算使用k8s部署方式来保证服务的高可用 |
那你也可以用k8s方式直接保证proxy的高可用。 |
假设角色有influx-porxy、influxdb1、influxdb2. influxdb1存在缓存,influxdb2正常提供服务。 |
这些个问题我没测试过,只凭我对系统的了解猜测一下:
|
@shell909090 您好 我想问下在config.py配置文件中的nodes、defdefault_node的作用是什么以及其中zone代表是什么,指的是influxdb的库吗?测试跟我的理解有偏差。 |
机房地域。proxy策略是,多个机房同时写入,优先查询本机房。 |
@shell909090 那意思是查询和写入没走nodes,我测试时,就算nodes和default_node为空,查询和写入也没问题。nodes只是做了一个地域机房的标记吗? |
那你有没有查询写入的时候把本机房的backend关掉试试呢? |
@shell909090 backend关掉就不能写入和查询数据了,只能NODES和defalut_node为空,还不能注释。 |
在满足以上条件的情况下,你的所有写入都会发送到两个backends,你的query会被发送到同zone的backend。 在关闭同zone的backend时,query会被发送到跨zone的backend。 |
@shell909090 这个已经测试过了 我才用了三个backend,而且都是处于不同zone中。我现在比较麻烦的是node中就算不配置zone和db也可以访问到backend中去。这块不太理解这个NODES在这是怎么样的存在。按照我的理解NODES就是一个查询的入口,通过NODES将查询映射到对应的backed中去?如果是这样为什么我在清空NODES还是可以正确映射到对应的backend上去。 |
因为所有nodes用的是同一个映射关系。nodes数据结构里主要是描述这个node的属性,例如zone。zone主要影响query的优先顺序。如果没有zone,那么query的时候是随机的。 |
假设我有两个influxdb,分别为influx1、influx2。
还有两个proxy,分别proxy1、proxy2,都连接influx1和influx2,实现相同的功能,从而实现proxy的高可用。
我想到的做法是,将2个proxy的本地持久化的buffer文件通过nfs的形式使用同一份文件。
可问题是,不太知道这样并发写是否存在问题。
并且假如influx1重启,2个proxy也应该会同时根据buffer文件,将数据消费到influx1中吧。
希望您能帮忙看一下这个方案是否可行呢?
The text was updated successfully, but these errors were encountered: