mediasoup 源码分析(八) 服务器级联 PipeTransport 分析

一、级联概念

        服务器级联通常指两个服务或者多个服务之间互相通信。比如视频会议或者在线教育中的小班课, 由于参会人员或者上课的学生分布在全国各地,如果是外教英语课还要跨国。这两种情况下用户会连接到不同的媒体服务,比如学生A连接华南节点、学生B连接华东节点、老师连北京某个节点。他们会进入同一个房间进行上课,此时就需要媒体服务之间进行夸地区、跨服通信。

而级联就是用来解决这个问题的。

二、mediasoup的级联方案PipeTransport

    mediasoup通过PipeTransport实现两台worker之间的级联通信。

       注意:虽然mediasoup提供了PipeTransport这种级联方案。但是,实现方式偏简单。比如。没有考虑节点负载、两个节点之间网络状态、路由线路的选择问题。所以,实际线上应用时,如果并发量较高需要做定制化修改。

 PipeTransport的创建过程

node.js层和前面介绍的PlainTraport创建类似,不再单独介绍。下面只讲c++层。

代码见:PipeTransport.cpp

PipeTransport::PipeTransport(const std::string& id, RTC::Transport::Listener* listener, json& data)
	  : RTC::Transport::Transport(id, listener, data)
{
  //构造函数主要获得监听的IP,然后绑定一个udp服务监听
   	try
	{
       //实际应用时要注意内网IP和外网IP问题
       auto jsonIpIt = jsonListenIpIt->find("ip");
		// This may throw.
		this->udpSocket = new RTC::UdpSocket(this, this->listenIp.ip);
	}
}
//当接收到另一个worker传过来的数据时,会触

你可能感兴趣的:(mediasoup源码分析)