licode 架构整理

  • Nuve Manages Services (Custom APPs), Rooms and Users, generates tokens for delegated auth so custom apps can provide access to users. It balances the Rooms among the available ErizoControllers.
  • MongoDB Only used by Nuve to store information about rooms and tokens. No user information is managed by Licode.
  • Erizo Controler Manages Control, signalling and data streams for the rooms assigned to it by Nuve. New started ErizoControllers are automatically discovered by Nuve as long as they are connected to the same RabbitMQ instance.
  • MCU - Erizo Agent+ErizoJS (ErizoAPI+ErizoC++): Distributed MCU. A better explanation on how this works is available here ErizoJS is NOT erizo.js from the client side, sorry about the naming confusion.
  • RabbitMQ: Message broker, enables the distribution of the architecture. Handles all the messages among the components of Licode. It does not handle media and/or communicate with the Clients.

The new Licode master branch

August 12, 2014 - Lynckia

We have finally made the switch from the async_events branch to master. This branch includes a host of new features that make Licode more potent, configurable, scalable and stable than ever!

Here we will discuss the new distributed MCU architecture. As you know, erizo was a single process started with erizoController, the whole MCU is a single process. From now on, each publisher in Licode will have its own process in the Licode server.

What once was the erizoController process has been divided into three components. These new modules follow the same design philosophy we use in all Licode, they can be deployed separately in different machines or together. This components are:

  • ErizoController: The good old erizoController, it still has the same function in terms of control and signalling.

  • ErizoAgent: This new component is in charge of starting new processes. Any machine running erizoAgent will be able to host resources for the distributed MCU by starting and stopping ErizoJSs. These ErizoJSs can be started on demand and/or have a pool of pre-started ones.

  • ErizoJS: A single broadcaster of the distributed MCU.

This iteration in the architecture brings many new features. Let’s go over some of them:

  • Improved Scalability: A single Licode Room can be now easily distributed among an array of servers. By starting erizoAgent in different machines and configuring them properly, the workload of a room will be intelligently distributed.

  • Improved Stability: Before, an irrecoverable error caused by a single stream could potentially bring down erizoController, shutting down all the rooms managed by it. In the new distributed architecture, a fatal error in a stream will only shutdown that stream, while the rest of the room(s) keep working.

  • Configurable: You can manage this behavior in the revamped Licode configuration file (licode_config.js):

    • config.erizoAgent.maxProcesses: The maximum amount of ErizoJSs this particular ErizoAgent is allowed to start.

    • config.erizoAgent.prerunProcesses: The amount of prestarted processes ErizoAgent will have at all times.

Some of the other new features have already been documented in our Server and Client API Doc pages, or even in this blog:

  • Client Roles.
  • Enhancements to recording and playback
  • Better STUN and TURN configuration
  • Tons of fixes and improvements.

To ease the transition, we will move the current master branch to legacy in our github repository. As always, feel free to write in the list with any problems, suggestions or ideas you have!

Related Posts

注意:
Lynckia is aimed to provide any  type of audio, video and data communication between multiple clients, not only two, by saving bandwidth and processing time on clients.

1.Erizo is a C++ MCU, that offers a full WebRTC stack. It has been implemented from scratch.

2.Nuve doesn't talk directly to Erizo. It starts and stops Erizo Controllers (scaling up and down according to workloads).

These Erizo Controllers talk to Erizo through Erizo API, which is a JavaScript wrapper for Erizo. Erizo API only leverage Erizo functions,and Erizo Controllers also handle connections from clients and manage signalling between clients and the MCU.

Third-party services will use Nuve through their server apps to provide access to their users, and to create and remove rooms, that are the virtual places where users will communicate. In other words,users will be able to publish their streams in the room where they are connected (and only in this room), and to subscribe to any of these streams later.

3.The client-side API talks to Erizo Controller, not to Nuve. And all systems can be installed on Ubuntu or Mac. They potentially could be used in any other platform, but we haven't tried more than these. For the time being Cloud deployment and management are up to users that
want to install Lynckia.


转自 https://github.com/lynckia/licode/issues/335

你可能感兴趣的:(webrtc)