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

Virtualize the private chat experience for multiple small groups of users on one Rocket.Chat instance #630

Closed
Sing-Li opened this issue Aug 30, 2015 · 9 comments
Labels

Comments

@Sing-Li
Copy link
Member

Sing-Li commented Aug 30, 2015

We know one instance of Rocket.Chat can handle tens of thousands of users with ease already.

However, to provide Rocket.Chat service to a small group (5 users, say), it is still necessary to incur the cost of running a meteor and a mongo instance.

It would be ideal to be able to operate 2,000 private chats of 5 users each, on the same server/VPS config as the one that can handle a single 10,000 users public chat.

One solution is rely on post-docker hosting technologies like sandstorm.io that can freeze-dry and switch containers at a very high rate.

Another is to consider partitioning at the collection level. See the research link below, and an attempt by a community member to do something similar:

https://github.com/mizzao/meteor-partitioner

jaypanares@2b04cc4

Perhaps there are more alternatives.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@rodrigok
Copy link
Member

Interesting, something like add teams to rocket chat, right?

With this lib 1 user (email) can be part of only one group, so if I want to connect to more then one chat in the same instance I need to use 2 emails, right?

@Sing-Li
Copy link
Member Author

Sing-Li commented Aug 30, 2015

idn, it would be ideal to somehow extend it to partition the user collection as well - more research than practical .. unless MDG would put it on their roadmap 😃

@Sing-Li
Copy link
Member Author

Sing-Li commented Aug 30, 2015

hey ... can we 'virtualise' the real email + an appearance id ... and then gen a unique guid email to be used by meteor?? just a thought

the appearance id might just be a 'context identifier', from which white-labeled instance the user is logging in, for example:

([email protected] + 'rocketchat team') -> [email protected]
([email protected] + 'sings own family chat') -> [email protected]

@Sing-Li
Copy link
Member Author

Sing-Li commented Aug 30, 2015

@jaypanares - would you mind sharing your operating experience with this lib. Are you running 24 7 , any problems?

@geekgonecrazy
Copy link
Contributor

I think implementing teams would potentially be the first step to this.

If done right we could have the ability to isolate channels strictly to teams. Also allow just logging in to the team. A lot of customizations could be made using that approach.

Even if completely different instances I probably wouldn't have multiple mongo instances. Just multiple db's for each, and cluster the db's for redundancy. Need to measure.. but I wouldn't think rocket.chat would be too heavy to run multiple instances.

@liuliming2008
Copy link

How about:
1 a reg and longin instance
2 one email can create and join mutlple team, can switch to other teams after login
3 redirect teams(url, such as xx.rocket.com ) to different rocket chat instance(on the same host or not), instance connetted to one or more(if neccessary) db according the db config of these teams
4 dynamically migrate one team from one instance to another by the team members

I guess slack use the similar approach

@liuliming2008
Copy link

And:
1 one instance have reg,login,team creation and all rocket features
2 when app need to expand to more than one instance, just start one, and shift more chat traffic to he new one

@geekgonecrazy
Copy link
Contributor

Some of this is being discussed over on #658

@marceloschmidt marceloschmidt added this to the Roadmap milestone Sep 21, 2015
@engelgabriel
Copy link
Member

Shoudl we close this and keep all the discussion on #630?

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

No branches or pull requests

6 participants