crtmpserver的架构简介

一、层 Layers


. 机器层 Machine layer


. 操作系统层 Operating System Layer


  This layer is composed of libraries with functions that make the entire Evostream ecosystem 


  compatible to any Operating System. OS-specific functions used in the whole solution are made 


  transparent to current Operating System, avoiding any unexpected errors in compiling and 


  running the system. With this layer, Evostream can compile and run on Linux, Windows, Mac, 


  Solaris, and other Operating Systems.


  这一层是由库函数组成,使整个Evostream生态系统兼容任何操作系统。


  对于当前的操作系统来说,用于整个解决方案中的特定的操作系统函数是透明的,


  这样就能避免在编译和运行的意外错误。


  有了这一层,Evostream可以编译和运行在Linux, Windows, Mac, Solaris 和其它OS上。

. 网络层 Networking layer


  This layer takes care of transporting the data in and out of the server. 


  This layer has the Input/Output Handlers that handles the transfer of data. 


  The network layer implements either of the 3 socket reactors depending on the Operating System:


  这一层负责服务器的数据输入和输出;


  它有输入/输出句柄,用来处理数据的传输;


  依据操作系统的不同,网络层有三种不同的socket交互方式


    kqueue - BSD based OS


    epoll - Linux based OS


    select - win32 based OS

. 组件层 The components layer

二、组件 Components


1. 公用程序 Utilities


. 缓存 Buffering


. 日志 Logging


. Lua


. 内存池 Mempool


. Misc


. Tinyxml

2. 输出模块 Netio


. kqueue


. epoll


. select

3. 协议 Protocols


These are communication protocols that are interconnected with each other to form a specific 


way of handling the transfer of data in and out of the server. There are Transport protocols 


and Endpoint protocols. Transport protocols are those that are used to transfer data further, 


and all protocol stack must end with an Endpoint protocol. Example is RTMPS with this order 


of protocols in the stack: [outside_world] ←→ SSL ←→ HTTP ←→ RTMP, where SSL and HTTP 


are Transport protocols and RTMP is the Endpoint protocol. There should never be another protocol 


on top of the Endpoint protocol.


通信协议用来和服务器外部以特定的方式处理数据的传输;


这些协议分成传输协议和终端协议;


传输协议用来传输数据,而且,所有的协议栈必须以终端协议结束。 


例如: RTMPS的协议栈的顺序为:


  [outside_world] ←→ SSL ←→ HTTP ←→ RTMP.


其中,


SSL和HTTP是传输协议;


RTMP是终端协议;


且在终端协议之上不能再有任何其它协议;

Within a protocol stack are Near and Far protocols, each indicating its distance from the server. 


Near means a protocol that is on the right of a protocol in a stack (means the one closer to the 


server), whereas Far means the one on the left. 


In the example protocol stack RTMPS - [outside_world] ←→ SSL ←→ HTTP ←→ RTMP , 


SSL is the Far protocol of HTTP, and RTMP is its Near protocol of HTTP. 


The protocol that is nearest to the server is the Near-endpoint (RTMP in this case), 


and the one closest to the outside world is the Far-enpoint (SSL in this case).


协议栈中的协议的远近,指示了它到服务器的距离;


近,意味着在协议在栈的右边(意即靠近服务器), 远,则在左边;


在RTMPS协议栈的例子中:


  [outside_world] ←→ SSL ←→ HTTP ←→ RTMP


SSL比HTTP远,RTMP比HTTP近,


和服务器端最近的是RTMP协议,和外部世界最近的是SSL;

. Base Protocol


  The BaseProtocol class is the base class on which all protocols derive from. 


  BaseProtocol类是基类,所有协议都是源自于它;

. Base Protocol Factory


  The BaseProtocolFactory class in the base class on which all protocol factory derive from.


  BaseProtocolFactory类是基类,所有的协议库都源自于它;


 


. Protocol Factory


  Evostream has a “bank” of protocols and protocol stacks that are all available applications to use. 


  A BaseProtocolFactory class is used as a base class of all protocol factories. 


  Atomic protocols are declared and protocol chains are spawned in the factory. 


  Resources from the factory will then be exported for use by the applications.


  Evostream有一个协议库,所有有效应用的协议栈都可以使用它;


  BaseProtocolFactory类作为所有协议库的基类;


  原子协议和协议链都在这个库中声明和产生;


  库中的资源都将输出给应用使用;

. 协议管理 Protocol Manager

4. 应用和协议句柄 Applications and protocol handlers

5. 流 Streaming

6. 媒体格式 Media formats


. flv


. mkv


. mp3


. mp4

crtmpserver的架构简介的更多相关文章

  1. LoadRunner系统架构简介

    1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...

  2. Extjs6官方文档译文——应用架构简介(MVC,MVVM)

    应用架构简介 Extjs 同时提供对于MVC和MVVM应用架构的支持.这两个架构方式共享某些概念,而且都旨在沿着逻辑层面划分应用程序代码.每种方法在选择如何划分应用组件上都有其各自的优势. 本指南的目 ...

  3. Kafka:架构简介【转】

    转:http://www.cnblogs.com/f1194361820/p/6026313.html Kafka 架构简介 Kafka是一个开源的.分布式的.可分区的.可复制的基于日志提交的发布订阅 ...

  4. LoadRunner系统架构简介与运行原理

    1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...

  5. Cortex-M0(+)内核的处理器架构简介

    Cortex-M0(+)内核的处理器架构简介 2015年03月02日 16:51:12 阅读数:3158 系统架构 Cortex-M0处理器具有32位系统总线接口,以及32位地址线,即有4GB的地址空 ...

  6. 【转帖】LoadRunner系统架构简介

    LoadRunner系统架构简介: LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP协 ...

  7. TP 5.0 架构 简介

    TP 5.0 架构 简介 thinkphp 5.0 为API开发而设计的的高性能框架,是与以往thinkphp5.0以下版本大不相同的新型框架,病对以颠覆和重构版本,采用全新的架构思想,引入了更多的P ...

  8. ceph架构简介

    ceph架构简介 在测试OpenStack的后端存储时,看到了ceph作为后端存储时的各种优势 ,于是查询资料,总结了这篇ceph架构的博客,介绍了ceph的架构和ceph的核心组件.ceph整体十分 ...

  9. Kafka 探险 - 架构简介

    Kafka 探险 - 架构简介 这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一 ...

随机推荐

  1. 符合altium designer操作习惯的cadence快捷键设置

    本人开始学习画PCB的时候,用的都是protel,后来转投altium desinger,因为这两个软件上手快且大学里教的也就是这两种.但由于工作需要换成cadence,这就给我造成了很大的困扰,尤其 ...

  2. 不通用版(从SVN取版本,通过MAVEN生成JAVA包,通过SALTSTACK传送到远程服务器并自动重启TOMCAT服务)PYTHON代码

    从昨晚写到今天啊, 第一版测试成功了. PHP和JAVA的更新相对来说,PHP的自动化更新是简单多啦~~ 当然,这只是运维工作当中的一环~~ #!/usr/bin/env python # -*- c ...

  3. linux crontab 计划任务 atd和windows下的计划任务

    crontab 命令 如果发现您的系统里没有这个命令,请安装下面两个软件包. vixie-cron crontabs crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类 ...

  4. 【HDOJ】2195 Monotone SE Min

    简单DP.将[0,1]的浮点数离散化为[0,1000]的整数.最后再除以1000^2. /* 2195 */ #include <cstdio> #include <cstring& ...

  5. NOI 2005 维修数列

    妈妈呀我终于过了!!!原来是数据坑我!!! 弃疗弃疗弃疗弃疗!!!!我调了一天呢....被GET_SUM 8 0打败了.... 啥也不说了....还是我太年轻.... 更新了一下常数,跑的还是可以的: ...

  6. Delphi 托盘程序实现 转

    unit MainUnit; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F ...

  7. AES - Rijndael 算法(二)

    三:Rijndael算法实现(C++版本) /*-------------------- Rijndael round subkeys ---------------------*/u8 roundK ...

  8. 一个在字符串中查找多个关键字的函数strstrs(三种不同算法实现及效率分析)

    平时项目中有时需要用到在字符串中搜索两个或更多的关键字的情景.例如:将字符串"ab|cd#ef|"按竖线或者井号做分隔 如果是大项目,一般会采用正则表达式做处理.但有时写个小程序, ...

  9. SqlServer中计算列详解

    计算列区别于需要我们手动或者程序给予赋值的列,它的值来源于该表中其它列的计算值.比如,一个表中包含有数量列Number与单价列Price,我们就可以创建计算列金额Amount来表示数量*单价的结果值, ...

  10. .Hibernate一对一映射与组件映射

    1.按照外键映射(Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射) 实现需要: 创建实体类Users1和Resume1 public class Users1 { p ...