Skip to content
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

Request for improvement of functionality with tags to allow balancing by region #1095

Open
Wladimir-N opened this issue Jul 8, 2024 · 15 comments

Comments

@Wladimir-N
Copy link

Problem to solve:
Hello! The functionality with tags is interesting, we will use it to select a BBB server by region. We have 3 regions where bbb servers are located, and students and teachers are also located in different regions. And there are situations when a teacher or student has a poor connection with a certain region or, conversely, a good connection with only one region.
Now, due to the existing functionality of tags, we create a kind of voting for the server inside our website based on what kind of connection which participant has with each of the regions and as a result we can select only 1 region and create a bbb conference in it, which is not the best solution.

Purposed solution:
It would be more interesting if we could specify more than one tag, for example when participants have good connections with two or more regions
Or, for example, vice versa, the ability to specify a tag or tags that should be excluded from balancing. That is, tags of regions with poor communication, so that they are excluded from balancing.
Well, now if you don’t specify a tag when creating a creation request, then this creates balancing between servers without a tag, but ideally I would like to be able to start balancing between all servers, with or without a tag. For example, for the case when all participants have good connections with all regions.

Considered alternatives:
At the moment, we have to select 1 region, and for situations where everyone has equally good connections with all regions, we make a request without a tag, and all servers are added to the balancer 2 times, 1 time with a tag, the second time without. Thus, at the moment we have partially solved our problems. But this still does not solve the situation when we may want to balance across several regions at once or, on the contrary, exclude one region. Of course, we can add servers again with new tags that would mean a couple of regions, but this greatly clutters the number of servers in the output and can be misleading

@Ithanil
Copy link
Collaborator

Ithanil commented Jul 10, 2024

I'm thinking about support for passing a regex as meta_server-tag in a future iteration of the feature. Would that be sufficient for your purposes?

@Wladimir-N
Copy link
Author

I'm thinking about support for passing a regex as meta_server-tag in a future iteration of the feature. Would that be sufficient for your purposes?

If I understand you correctly, then yes. Well, that is, I’ll finally be able to convey this design
(region1|region2|region3)
or
region[123]
This is quite suitable for me and completes my tasks.

But there is still a question that is generally not so critical and may not be closed for me personally.
It would be cool to be able to assign 2 tags to 1 server. For example, one tag is regional, and the second, for example, means that the BBB can host a conference with a large number of people

Well, and accordingly, when balancing, if the server has a match for two tags at once, increased balancing coefficients would be given and the choice would fall on servers that match a larger number of tags

@Wladimir-N
Copy link
Author

I'm thinking about support for passing a regex as meta_server-tag in a future iteration of the feature. Would that be sufficient for your purposes?

Is this implemented in version 1.6.1?

@Ithanil
Copy link
Collaborator

Ithanil commented Jul 23, 2024

I'm thinking about support for passing a regex as meta_server-tag in a future iteration of the feature. Would that be sufficient for your purposes?

Is this implemented in version 1.6.1?

No. Since this improvement of the feature is not useful to our organization, it's nothing that I can contribute super short term. It would rather be a candidate for the next developer summit.
Note that I'm not associated with Blindside Networks, but just on open-source contributor. You might be able to find a way to accelerate the development by reaching out to Blindside Networks.

@Wladimir-N
Copy link
Author

I'm thinking about support for passing a regex as meta_server-tag in a future iteration of the feature. Would that be sufficient for your purposes?

Is this implemented in version 1.6.1?

No. Since this improvement of the feature is not useful to our organization, it's nothing that I can contribute super short term. It would rather be a candidate for the next developer summit. Note that I'm not associated with Blindside Networks, but just on open-source contributor. You might be able to find a way to accelerate the development by reaching out to Blindside Networks.

I meant whether the tag selection functionality is implemented through a regular expression

@Ithanil
Copy link
Collaborator

Ithanil commented Jul 23, 2024

I'm thinking about support for passing a regex as meta_server-tag in a future iteration of the feature. Would that be sufficient for your purposes?

Is this implemented in version 1.6.1?

No. Since this improvement of the feature is not useful to our organization, it's nothing that I can contribute super short term. It would rather be a candidate for the next developer summit. Note that I'm not associated with Blindside Networks, but just on open-source contributor. You might be able to find a way to accelerate the development by reaching out to Blindside Networks.

I meant whether the tag selection functionality is implemented through a regular expression

That's what I meant with "improvement of the feature". Only the basic functionality with single explicit tags is implemented.

@Wladimir-N
Copy link
Author

I'm thinking about support for passing a regex as meta_server-tag in a future iteration of the feature. Would that be sufficient for your purposes?

In other words, even a simple regex has been pushed into the back burner, not to mention even what I wrote in this request?

@Ithanil
Copy link
Collaborator

Ithanil commented Jul 23, 2024

I acknowledge that this might seem like requiring little work to get done, which is probably true, but still I have to justify putting working hours into this without any own benefit. Therefore this just has not the highest priority right now.

@Wladimir-N
Copy link
Author

I acknowledge that this might seem like requiring little work to get done, which is probably true, but still I have to justify putting working hours into this without any own benefit. Therefore this just has not the highest priority right now.

I work in an online school, and the school is ready to pay for adding such functionality (selecting several tags at once via regexp), the only question is, what amount are we talking about?

@Ithanil
Copy link
Collaborator

Ithanil commented Sep 9, 2024

@Wladimir-N Hi Wladimir, unfortunately I'm employed in public education and thus are not able to provide you with such paid service.
If I were to dig into this and provide a prototype, would you be able to build and deploy Docker images with modified code? Because the process of making a production grade Pull Request with tests and documentation, then getting that merged by the maintainer of Scalelite and finally have it shipped in an official release will be a quite lengthy process.

Alternatively, you might want to reach to Blindside Networks to maybe find an agreement.

@Wladimir-N
Copy link
Author

@Wladimir-N Hi Wladimir, unfortunately I'm employed in public education and thus are not able to provide you with such paid service. If I were to dig into this and provide a prototype, would you be able to build and deploy Docker images with modified code? Because the process of making a production grade Pull Request with tests and documentation, then getting that merged by the maintainer of Scalelite and finally have it shipped in an official release will be a quite lengthy process.

Alternatively, you might want to reach to Blindside Networks to maybe find an agreement.

Yes, I can make images, moreover, I tested what you did before the images were released, I built the images on your repository and implemented the tags before you released them.

@Wladimir-N
Copy link
Author

If I were to dig into this and provide a prototype

So will you end up doing it?

@Wladimir-N
Copy link
Author

Let me remind you of this request, it is still relevant.

@Ithanil
Copy link
Collaborator

Ithanil commented Dec 3, 2024

FYI, I'm on the BBB Developer Summit and just have started working on this in #1127 and quickly hacked a prototype solution. It allows passing a semicolon-separated list of tags to match. I also think about introducing a special tag to reference untagged servers (maybe 'notag' or 'none' or something like that).

@Ithanil
Copy link
Collaborator

Ithanil commented Dec 4, 2024

@Wladimir-N FYI: The feature is now complete and only missing unit tests. The documentation has been changed accordingly: https://github.com/blindsidenetworks/scalelite/blob/1ebf251b8fac741dd01025e921c282564a70c5e4/docs/tags-README.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants