NUBOMEDIA 起步

原创
2017/03/20 17:40
阅读数 739

NUBOMEDIA的核心使用Kurento媒体服务器(KMS)。 KMS 为 NUBOMEDIA 平台提供媒体功能,可用于创建具有适当媒体功能的云媒体,并适合处理弹性、可扩展性。 这意味着KMS的数量由 NUBOMEDIA PaaS 控制,根据系统的负载缩放和缩小。

因此,成为NUBOMEDIA开发人员的第一步,与Kurento联系很重要。 为此,建议您查看Kurento文档。 了解Kurento的一个简单方法是按照以下步骤:

一旦您完成此过程,下一步是使用 NUBOMEDIA 在云环境中部署和使用我们的应用程序。 简而言之,您可以将 NUBOMEDIA 看作是具有不同支架技术的开发平台:

  • NUBOMEDIA API 和 SDK。 NUBOMEDIA 是为研发人员而开发的,因此,一方面提供了一套完整的Java API。 另一方面,移动开发的SDK(用于Android和iOS)也由 NUBOMEDIA 提供。 在本页中,您可以找到不同API和SDK的概述,本文档的后续部分将对其进行详细说明

  • NUBOMEDIA PaaS 管理。 PaaS管理器可以被视为一个工具,旨在控制在NUBOMEDIA PaaS中构建和部署NUBOMEDIA应用程序的方式。 请继续阅读以了解更多详情。

NUBOMEDIA APIs and SDKs

从开发人员的角度来看,NUBOMEDIA功能通过一组API访问。 因此,为了创建NUBOMEDIA应用程序,开发人员只需要理解这些NUBOMEDIA开发API,以便他们可以使用它们来创建丰富的RTC媒体应用程序。 NUBOMEDIA提供了一套完整的API,可以分为三组:

  • 媒体能力API: 这些 API 向应用程序逻辑暴露了:Media,WebRtcPeer 和 Repository API 低级媒体功能。

  • 信令API: 媒体能力的API(Media,WebRtcPeer,Repository API)信令是不可知的,这意味着它们既不需要也不用承担用于信令的任何种类的特定特性。 因此,NUBOMEDIA 可以通过任何种类的信令协议访问,包括SIP,XMPP或REST。 然而,为了简化常见的开发任务,NUBOMEDIA提供了一个基于JSON-RPC的简单信令API,适用于大多数不需要特定互操作性特性的应用程序。

  • 抽象通信API。开发人员通常使用RTC媒体功能来创建专用于个人对个人通信的应用程序。 在这种情况下,应用业务逻辑需要管理RTC多媒体会话中的参与者之间的通信拓扑。 在一般情况下,该逻辑需要由应用程序开发人员编程。 然而,存在许多相当受欢迎并且在应用中系统地出现的通信拓扑。 因此,在我们的架构中,我们建议具体的通信API抽象这些拓扑上的媒体逻辑的低级细节,以便开发者可以以敏捷和高效的方式使用它们。 特别是,我们已经确定了这些常见拓扑中的两种:房间和树形拓扑。

总而言之,NUBOMEDIA提供六种不同的API。 下表提供了这些API的简要摘要:

API Description
Media API 允许开发人员使用媒体服务器功能。 其中我们可以找到媒体传输,媒体存档,媒体处理,媒体转码等。
WebRtcPeer API 提取客户端WebRTC媒体功能,以简单,无缝和统一的方式展示浏览器的媒体捕获和通信功能
Repository API 可以访问弹性可伸缩媒体存储库,用于归档媒体信息和元信息
Signaling API 基于JSON-RPC为应用程序提供一个简单的信令机制。 此API可以在应用程序服务器和客户端使用
Room API 使开发人员的应用功能能够创建适合真实社交互动的群组通信应用程序。 此API可以在应用程序服务器和客户端使用
Tree API 允许开发人员构建视频广播网络应用程序。 此API可以在应用程序服务器和客户端使用

此外,NUBOMEDIA提供了一个完整的SDK来创建使用NUBOMEDIA应用程序提供的媒体功能的移动应用程序。 您可以找到以下SDK:

API Description
Android SDK Android版本的客户端NUBOMEDIA APIs:WebRtcPeer,Signaling,Room,Tree
iOS SDK 为iOS设备提供NUBOMEDIA客户端功能

这套API / SDK的灵感来自流行的Web三层模型。 在这个模型中,我们可以区分三个层:

  • 客户端,通常包括在执行客户端应用逻辑的web浏览器上。 该逻辑通常使用诸如HTML和JavaScript之类的编程语言并且在专用第三方API(例如Angular, Bootstrap等)的帮助下开发。

  • 应用服务器(AS),托管服务器端应用程序逻辑。 此层通常包含应用程序的业务逻辑。

  • 服务层包括应用程序工作所需的许多服务。 在NUBOMEDIA中,该层由一组媒体服务器(即Kurento媒体服务器)和媒体存储库(即Kurento存储库)组成。

在下面的图中,我们可以看到不同的NUBOMEDIA API / SDK如何适用于这个三层模型:

NUBOMEDIA Tree Tier Model (clients -- application-server -- service-layer)

NUBOMEDIA PaaS Manager

NUBOMEDIA是一个PaaS,因此它可以上传,部署和执行用Java语言编写的应用程序。 NUBOMEDIA PaaS 根据系统的负载弹性提供服务层基础设施(即KMS和媒体存储库的所需实例)。

Paas Manager提供的功能可以由开发人员以两种方式使用:

  • 使用PaaS GUI。 PaaS Manager GUI是一个允许使用NUBOMEDIA PaaS Manager的Web应用程序。 此应用程序可以在以下链接中找到(下面的快照显示了此GUI的一些示例)。 NUBOMEDIA项目管理一个保留作为项目一部分的NUBOMEDIA PaaS实例。 如果你不是NUBOMEDIA项目的一部分,但是你想使用NUBOMEDIA,你应该按照安装说明安装你自己的PaaS

  • 使用PaaS Manager API。 除了GUI之外,PaaS Manager还通过REST API公开其功能。 有关更多详细信息,请参阅PaaS API文档

输入图片说明

应用服务器也由NUBOMEDIA PaaS提供。 由于应用程序是用Java制作的,我们建议使用Spring-Boot作为应用程序服务器端技术。 Spring-Boot以一种简单的无缝方式为开发人员嵌入Tomcat服务器。 请查看教程示例

Using Maven for NUBOMEDIA applications

如前所述,NUBOMEDIA为开发人员提供了一套完整的Java API。 因此,强烈建议对Java项目使用构建自动化工具,例如Maven。

Maven是一个主要用于Java项目的构建自动化工具。 它解决了构建软件的两个方面:首先,它描述如何构建软件(即它处理构建生命周期),其次,它描述其依赖性。 Maven拥抱约定优于配置的想法,也就是说,Maven为项目的配置提供了默认值:

Maven project example snapshot

** Structure description **

  • The project root contains the pom.xml. This file (Project Object Model, POM) provides all the configuration for the project

  • src/main/java: Contains the Java source code

  • src/main/resources: Contains the resources for the project (e.g. property files, images, etc)

  • src/test/java: Contains the testing Java source code (e.g. JUnit test cases)

  • src/test/resources : Contains resources for testing

  • target: This folder is used to house all output of the build

Maven项目配置的中心部分是文件pom.xml。 模板示例如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <!-- model version is always 4.0.0 for Maven 2.x POMs -->
    <modelVersion>4.0.0</modelVersion>

    <!-- project coordinates, i.e. a group of values which uniquely identify  this project -->
    <groupId>eu.nubomedia.example</groupId>
    <artifactId>maven-project-example</artifactId>
    <version>1.0.0</version>

    <!-- library dependencies -->
    <dependencies>
        <!-- coordinates of the required library -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

groupId, artifactId, 和 version 称为项目坐标。 此信息唯一标识项目:

-groupId:专案群组(例如com.mycompany.mydivision)

  • artifactId:项目名称(例如myproject)

  • version:项目版本。 我们建议使用语义版本控制

每个子句依赖关系使用它们的坐标来标识Maven项目使用的库。 默认情况下,这些依赖关系从Maven Central存储库下载并存储在本地存储库(位于〜/ .m2 / repository)中。 每个依赖关系可以使用scope子句配置。 此值用于限制依赖关系的类路径和传递性。 最重要的范围值如下:

  • compile:这是默认范围,如果未指定则使用。 编译依赖项在项目的所有类路径中可用

  • test:此作用域表示正常使用应用程序不需要依赖性,并且只能用于测试编译和执行

  • provided:使用此作用域声明的依赖性在编译时需要,但在运行时不需要。 例如,当为Java EE构建Web应用程序时,您将设置对提供的Servlet API的依赖,因为Web容器提供该库。

Maven基于构建生命周期的中心概念。 对于开发人员构建项目,这意味着只需要学习一小组命令来构建任何Maven项目,并且POM将确保他们获得他们想要的结果。 Maven项目中的每个构建由不同的构建阶段列表定义,其中构建阶段表示生命周期中的一个阶段。 构建中的默认阶段如下:

  • validate:验证项目是否正确,并提供所有必要的信息
  • compile:编译项目的源代码
  • test:使用合适的单元测试框架测试编译的源代码
  • package:获取编译后的代码并将其以可分发格式打包,如JAR
  • verify:对集成测试的结果运行任何检查
  • install:将软件包安装到本地存储库中
  • deploy:在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享

Running your first NUBOMEDIA application

现在让我们看看如何在NUBOMEDIA PaaS上部署应用程序。 它可以通过从头开始创建应用程序来完成,但为了使此过程更容易,我们建议使用一个NUBOMEDIA教程作为模板,根据应用程序的特定需求开发代码。 如果您使用的是Media API,可以使用magic-mirror教程在NUBOMEDIA上运行第一个应用程序。 在此之前,请注意以下提示:

  • 我们建议使用Spring-Boot作为NUBOMEDIA应用程序的基本技术。 Spring-Boot以一种简单的无缝方式为开发人员嵌入Tomcat服务器。 应用程序打包为可运行的JAR,并且当执行此JAR时,将启动Tomcat服务器,并自动部署Web应用程序。
  • 我们建议Maven管理生命周期和管理应用程序的依赖。
  • 我们使用GitHub托管将部署在NUBOMEDIA上的应用程序。
  • 在内部,NUBOMEDIA PaaS使用Docker容器来部署应用程序。

NUBOMEDIA应用程序基本上是一个Java项目,使用一些NUBOMEDIA API,它可以部署在NUBOMEDIA PaaS中。 为了配置部署,名为Dockerfile的文件应位于存储库的根目录中(有关详细信息,请参阅参考文档)。

现在让我们看看这个例子(magic-mirror tutorial)。 一旦登录PaaS管理器,我们必须点击应用程序部分中的创建应用按钮,并提供我们项目的GitHub URL,在我们的示例中,此URL是以下内容:

https://github.com/nubomedia/nubomedia-magic-mirror

有关PaaS管理器的文档页面,请参阅有关其余配置值的含义的更多信息。 最重要的值如图所示:

输入图片说明

然后我们需要点击Create App按钮。 部署应该开始,将状态从CREATED更改为RUNNING(完成需要几分钟时间):

输入图片说明

部署完成后(即处于RUNNING状态),我们将能够通过点击PaaS提供的URL打开应用程序。 此外,可以访问构建和应用程序日志,以便跟踪我们的应用程序,并显示监视图以跟踪PaaS中的资源消耗。 有关Kurento Media Server日志跟踪格式的更多信息,请访问此页面

输入图片说明

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部