[GH-ISSUE #1988] 如何添加新的负载均衡的策略 #1583

Closed
opened 2026-05-05 13:00:24 -06:00 by gitea-mirror · 4 comments
Owner

Originally created by @junit on GitHub (Sep 17, 2020).
Original GitHub issue: https://github.com/fatedier/frp/issues/1988

希望能够控制负载均衡的策略,请问有什么方法可以实现吗。

Originally created by @junit on GitHub (Sep 17, 2020). Original GitHub issue: https://github.com/fatedier/frp/issues/1988 希望能够控制负载均衡的策略,请问有什么方法可以实现吗。
Author
Owner

@fatedier commented on GitHub (Sep 18, 2020):

这个方面目前只支持最简单的轮询,以后会考虑增加一些常见的策略,不知道你希望使用的是哪种策略?

<!-- gh-comment-id:694617303 --> @fatedier commented on GitHub (Sep 18, 2020): 这个方面目前只支持最简单的轮询,以后会考虑增加一些常见的策略,不知道你希望使用的是哪种策略?
Author
Owner

@junit commented on GitHub (Sep 19, 2020):

这个方面目前只支持最简单的轮询,以后会考虑增加一些常见的策略,不知道你希望使用的是哪种策略?

我希望可以根据用户名分割出业务字段,通过业务字段控制负载策略。
比如格式:{用户名}-{sessionId}
通过sessionId来控制固定路由到同一个客户端中。

// 伪代码
m := map[string] // 带自动时间过期特性的map
client, ok := m[sessionId]
if !ok {
client = 随机分配一个client
m[sessionId] = client
}

<!-- gh-comment-id:695333399 --> @junit commented on GitHub (Sep 19, 2020): > 这个方面目前只支持最简单的轮询,以后会考虑增加一些常见的策略,不知道你希望使用的是哪种策略? 我希望可以根据用户名分割出业务字段,通过业务字段控制负载策略。 比如格式:{用户名}-{sessionId} 通过sessionId来控制固定路由到同一个客户端中。 // 伪代码 m := map[string] // 带自动时间过期特性的map client, ok := m[sessionId] if !ok { client = 随机分配一个client m[sessionId] = client }
Author
Owner

@fatedier commented on GitHub (Sep 21, 2020):

你这个还是比较定制化的,不是很通用,短期内应该没有办法支持。类似的需求你可以直接 fork 代码在代码中修改,按照自己的业务逻辑来定制。

<!-- gh-comment-id:696126011 --> @fatedier commented on GitHub (Sep 21, 2020): 你这个还是比较定制化的,不是很通用,短期内应该没有办法支持。类似的需求你可以直接 fork 代码在代码中修改,按照自己的业务逻辑来定制。
Author
Owner

@rty813 commented on GitHub (Jan 23, 2021):

引用一下goproxy的负载均衡策略:

roundrobin 轮流使用
leastconn 使用最小连接数的
leasttime 使用连接时间最小的
hash 使用根据客户端地址计算出一个固定上级
weight 根据每个上级的权重和连接数情况,选择出一个上级

<!-- gh-comment-id:765882227 --> @rty813 commented on GitHub (Jan 23, 2021): 引用一下goproxy的负载均衡策略: > roundrobin 轮流使用 leastconn 使用最小连接数的 leasttime 使用连接时间最小的 hash 使用根据客户端地址计算出一个固定上级 weight 根据每个上级的权重和连接数情况,选择出一个上级
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#1583
No description provided.