XMPP协议(IM)

XMPP协议(IM),第1张

XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

全称:可扩展通讯和表示协议

简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。XMPP is the IETF's formalization of the base XML streaming protocols for instant messaging and presence developed within the Jabber open-source community in 1999

XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时 *** 作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其 *** 作系统和浏览器不同。

XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;

核心的XML流传输协议

基于XMLFreeEIM流传输的即时通讯扩展应用

XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。

XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。

XMPP的扩展协议Jingle使得其支持语音和视频

XMPP的官方文档是RFC 3920

XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。

传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。

以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML Stream。在<stream>与</stream>中间的那些<message></message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一方发信给另外一方。通信的最后阶段是</stream>关闭流,关闭TCP/IP连接。

目前不少IM应用系统如:Google公司的Google Talk以及Jive Messenger等开源应用,都是遵循XMPP协议集而设计实现的,这些应用具有很好的互通性。

153 服务多个客户
JabberServer可以正常工作,但每次只能为一个客户程序提供服务。在典型的服务器中,我们希望同时能处理多个客户的请求。解决这个问题的关键就是多线程处理机制。而对于那些本身不支持多线程的语言,达到这个要求无疑是异常困难的。通过第14章的学习,大家已经知道Java已对多线程的处理进行了尽可能的简化。由于Java的线程处理方式非常直接,所以让服务器控制多名客户并不是件难事。
最基本的方法是在服务器(程序)里创建单个ServerSocket,并调用accept()来等候一个新连接。一旦accept()返回,我们就取得结果获得的Socket,并用它新建一个线程,令其只为那个特定的客户服务。然后再调用accept(),等候下一次新的连接请求。
对于下面这段服务器代码,大家可发现它与JabberServerjava例子非常相似,只是为一个特定的客户提供服务的所有 *** 作都已移入一个独立的线程类中:
//: MultiJabberServerjava
// A server that uses multithreading to handle
// any number of clients
import javaio;
import javanet;
class ServeOneJabber extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ServeOneJabber(Socket s)
throws IOException {
socket = s;
in =
new BufferedReader(
new InputStreamReader(
socketgetInputStream()));
// Enable auto-flush:
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socketgetOutputStream())), true);
// If any of the above calls throw an
// exception, the caller is responsible for
// closing the socket Otherwise the thread
// will close it
start(); // Calls run()
}
public void run() {
try {
while (true) {
String str = inreadLine();
if (strequals("END")) break;
Systemoutprintln("Echoing: " + str);
outprintln(str);
}
Systemoutprintln("closing");
} catch (IOException e) {
} finally {
try {
socketclose();
} catch(IOException e) {}
}
}
}
public class MultiJabberServer {
static final int PORT = 8080;
public static void main(String[] args)
throws IOException {
ServerSocket s = new ServerSocket(PORT);
Systemoutprintln("Server Started");
try {
while(true) {
// Blocks until a connection occurs:
Socket socket = saccept();
try {
new ServeOneJabber(socket);
} catch(IOException e) {
// If it fails, close the socket,
// otherwise the thread will close it:
socketclose();
}
}
} finally {
sclose();
}
}
} ///:~
每次有新客户请求建立一个连接时,ServeOneJabber线程都会取得由accept()在main()中生成的Socket对象。然后和往常一样,它创建一个BufferedReader,并用Socket自动刷新PrintWriter对象。最后,它调用Thread的特殊方法start(),令其进行线程的初始化,然后调用run()。这里采取的 *** 作与前例是一样的:从套扫字读入某些东西,然后把它原样反馈回去,直到遇到一个特殊的"END"结束标志为止。
同样地,套接字的清除必须进行谨慎的设计。就目前这种情况来说,套接字是在ServeOneJabber外部创建的,所以清除工作可以“共享”。若ServeOneJabber构建器失败,那么只需向调用者“掷”出一个违例即可,然后由调用者负责线程的清除。但假如构建器成功,那么必须由ServeOneJabber对象负责线程的清除,这是在它的run()里进行的。
请注意MultiJabberServer有多么简单。和以前一样,我们创建一个ServerSocket,并调用accept()允许一个新连接的建立。但这一次,accept()的返回值(一个套接字)将传递给用于ServeOneJabber的构建器,由它创建一个新线程,并对那个连接进行控制。连接中断后,线程便可简单地消失。
如果ServerSocket创建失败,则再一次通过main()掷出违例。如果成功,则位于外层的try-finally代码块可以担保正确的清除。位于内层的try-catch块只负责防范ServeOneJabber构建器的失败;若构建器成功,则ServeOneJabber线程会将对应的套接字关掉。
为了证实服务器代码确实能为多名客户提供服务,下面这个程序将创建许多客户(使用线程),并同相同的服务器建立连接。每个线程的“存在时间”都是有限的。一旦到期,就留出空间以便创建一个新线程。允许创建的线程的最大数量是由final int maxthreads决定的。大家会注意到这个值非常关键,因为假如把它设得很大,线程便有可能耗尽资源,并产生不可预知的程序错误。
//: MultiJabberClientjava
// Client that tests the MultiJabberServer
// by starting up multiple clients
import javanet;
import javaio;
class JabberClientThread extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private static int counter = 0;
private int id = counter++;
private static int threadcount = 0;
public static int threadCount() {
return threadcount;
}
public JabberClientThread(InetAddress addr) {
Systemoutprintln("Making client " + id);
threadcount++;
try {
socket =
new Socket(addr, MultiJabberServerPORT);
} catch(IOException e) {
// If the creation of the socket fails,
// nothing needs to be cleaned up
}
try {
in =
new BufferedReader(
new InputStreamReader(
socketgetInputStream()));
// Enable auto-flush:
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socketgetOutputStream())), true);
start();
} catch(IOException e) {
// The socket should be closed on any
// failures other than the socket
// constructor:
try {
socketclose();
} catch(IOException e2) {}
}
// Otherwise the socket will be closed by
// the run() method of the thread
}
public void run() {
try {
for(int i = 0; i < 25; i++) {
outprintln("Client " + id + ": " + i);
String str = inreadLine();
Systemoutprintln(str);
}
outprintln("END");
} catch(IOException e) {
} finally {
// Always close it:
try {
socketclose();
} catch(IOException e) {}
threadcount--; // Ending this thread
}
}
}
public class MultiJabberClient {
static final int MAX_THREADS = 40;
public static void main(String[] args)
throws IOException, InterruptedException {
InetAddress addr =
InetAddressgetByName(null);
while(true) {
if(JabberClientThreadthreadCount()
< MAX_THREADS)
new JabberClientThread(addr);
ThreadcurrentThread()sleep(100);
}
}
} ///:~
JabberClientThread构建器获取一个InetAddress,并用它打开一个套接字。大家可能已看出了这样的一个套路:Socket肯定用于创建某种Reader以及/或者Writer(或者InputStream和/或OutputStream)对象,这是运用Socket的唯一方式(当然,我们可考虑编写一、两个类,令其自动完成这些 *** 作,避免大量重复的代码编写工作)。同样地,start()执行线程的初始化,并调用run()。在这里,消息发送给服务器,而来自服务器的信息则在屏幕上回显出来。然而,线程的“存在时间”是有限的,最终都会结束。注意在套接字创建好以后,但在构建器完成之前,假若构建器失败,套接字会被清除。否则,为套接字调用close()的责任便落到了run()方法的头上。
threadcount跟踪计算目前存在的JabberClientThread对象的数量。它将作为构建器的一部分增值,并在run()退出时减值(run()退出意味着线程中止)。在MultiJabberClientmain()中,大家可以看到线程的数量会得到检查。若数量太多,则多余的暂时不创建。方法随后进入“休眠”状态。这样一来,一旦部分线程最后被中止,多作的那些线程就可以创建了。大家可试验一下逐渐增大MAX_THREADS,看看对于你使用的系统来说,建立多少线程(连接)才会使您的系统资源降低到危险程度。

目前是没有这种app的。

现在的聊天软件挺多的。比如旺信、易信、遇见、来往、陌陌。

主要的聊天工具:

Jabber:

Jabber是一个以XML为基础,跨平台、开放原始码,且支持SSL加密技术之实时通讯协议,Jabber的开放式架构,让世界各地都可以拥有Jabber的服务器,不再受限于官方。

不仅如此,一些Jabber的爱好者,还尽心研发出Jabber的协议转换程序,让Jabber使用者 还能与其它实时通讯程序之使用者交谈,这是其它知名实时通讯软件皆无法做到的喔!

IRC:

IRC是InternetRelayChat的缩写, 一般说来,他就是多人在线实时交谈系统。也就是一个以交谈为基础的系统。在IRC之中,可以好几个人加入某个相同的频道,来讨论相同的主 题,这样的频道,我们称之为channel,当然,一个人可以加入不只一个频道,这点与News的特色是非常类似的。

IRC是由芬兰的 JarkkoOikarinen在80(1988)年代的晚期所发展的,起初的目的,是要让他的布告栏(bulletinboard)使用者除了可以看文件之外,还可以做在线实时的讨论。

Anychat
Anychat是基于先进的H264视频编码标准、AAC音频编码标准与P2P技术,整合了佰锐科技在音视频编码、多媒体通讯领域领先的开发技术而设计的高质量、宽适应性、分布式、模块化的网络音视频互动平台。
Skype
通过在全世界范围内向客户提供免费的高质量通话服务,正在逐渐改变电信业。Skype是网络即时语音沟通工具。具备IM所需的其他功能,比如视频聊天、多人语音会议、多人聊天、传送文件、文字聊天等功能。它可以免费高清晰与其他用户语音对话,也可以拨打国内国际电话,无论固定电话、手机、小灵通均可直接拨打,并且可以实现呼叫转移、短信发送等功能。
FastMsg
FastMsg是一款功能强大的即时通讯软件,完全免费,无任何功能限制。无论是企业内部应用,还是电子商务/论坛社区的运营,均可下载服务端程序自由部署到局域网/公网服务器。
Jabber
Jabber是一个以XML为基础,跨平台、开放原始码,且支持SSL加密技术之实时通讯协议,Jabber的开放式架构,让世界各地都可以拥有Jabber的服务器,不再受限于官方。不仅如此,一些Jabber的爱好者,还尽心研发。
IRC
IRC是InternetRelayChat的缩写, 一般说来,他就是多人在线实时交谈系统。也就是一个以交谈为基础的系统。在IRC之中,可以好几个人加入某个相同的频道,来讨论相同的主 题,这样的频道,我们称之为channel,当然,一个人可以加入不只一个频道,这点与News的特色是非常类似的。IRC是由芬兰的 JarkkoOikarinen在80(1988)年代的晚期所发展的,起初的目的,是要让他的布告栏(bulletinboard)使用者除了可以看文件之外,还可以做在线实时的讨论。当然,他非常的迷人,特别是当IRC被用来报导现实生活的Gulf战争(1991年)之后,IRC就有慢慢分家的趋势。到如今,IRC已经是一个与布告栏脱离的独立系统。至今,已经有超过60个的国家使用这套系统。
ICQ
ICQ的意思是:I Seek You(我找你) 。1996年7月,四个以色列年青人,
MSN
MSN是Windows Live Messenger的缩写。目前最新的中文版是90Beta。MSN 是一种Internet软件,它基于 Microsoft 高级技术,可使您和您的家人更有效地利用Web。MSN 9 是一种优秀的通信工具,使 Internet 浏览更加便捷,并通过一些高级功能加强了联机的安全性。这些高级功能包括家长控制、共同浏览 Web、垃圾邮件保护器和定制其他。

首页| 域名注册 | 虚拟主机 | 服务器 | VPS主机 | 网站建设 | 智能建站 | 网站推广 | FMS视频技术 | 付款方式 首页>>FMS流媒体相关 帮助中心域名相关虚拟主机相关服务器相关vps主机相关FMS流媒体相关网站和推广相关付款帮助其它更多帮助flash服务器的优势及用途 1、flash的功能 Flash Media Server 将传统的流媒体功能与灵活的开发环境结合起来,为最广泛的群体创建和提供创新的、交互式媒体应用。该组合使组织创建和交付广泛的媒体体验,包括传统的媒体交付应用,如视频点播、实时 Web 事件广播、MP3 流以及富媒体通信应用(如视频博客、视频消息和多媒体聊天环境),从而使您按照自己的方式与客户交流。 “即买即用” Flash 提供了跨 *** 作系统和浏览器的一致媒体体验,使您的开发人员能够致力于最强大的新体验,而不是忙于创建跨平台的修复。 更低的成本 不需要将代码编写为不同的格式,也无需为您的站点开发多个版本,就可以将其部署在多个平台上。只需编写和开发一次代码,就可以在任何位置通过 Flash Media Server 交付。 最佳媒体体验 无缝集成 将媒体体验直接无缝集成到您的网站中,无需d出其他窗口或浏览器,从而获得简洁、内聚的外观。 自定义播放器 控制媒体播放器的外观,使其符合站点设计规范,并提升您的品牌知名度。使用独特的功能构建自定义播放器以使您的体验与众不同,并且保留和吸引受众。 高质量视频 支持全新的高质量视频编解码器,从而能够使客户以更低的位速率和文件大小,提供可与当今最佳视频编解码器相媲美的卓越的视频质量。 即时“启动” 服务器上小型轻量级文件格式、协议和播放器以及可编程的缓冲控制使 FMS 流媒体能够在选中播放按钮之后立即启动。 高枕无忧的交付 带宽检测 检测客户端的连接速度,并提供适当的位速率视频。不会再向最终用户发送“选择视频大小”这类令人混淆的消息。 自定义流交付 Flash Media Server 自动捕获最终用户的连接状态,并且能够使发布者根据此信息向最终用户交付视频流。 例如,对于想利用 Flash 8 中全新高质量的视频编解码器,但同时又想支持以 Flash 7 或更低版本连接的用户的发布者来说,就可以使用该功能将 Flash 8 视频提供给与 Flash Player 8 连接的每个人,同时将普通的 Flash 视频提供给与 Flash Player 6 或 7 连接的每个人。 动态缓冲 通过编程方式设置缓冲区,以根据视频的长度和比特率以及客户端连接速度,精确设置最快的启动时间。提供尽可能最快的启动,并且以最优的方式交付拥有比客户端连接速度更高位速率的视频。 服务质量监控 跟踪客户端的回放体验,实时纠正由于网络阻塞而出现的无法预料的回放问题。 防火墙和代理穿越 快速测试多个端口和协议组合,以绕过防火墙和代理,并选择速度最快的连接。 高级的媒体功能 2、播放列表和广告插入支持 使用标准的 XML 格式(如 SMIL 或 ASX)交付客户端或服务器端播放列表,并且通过输入流预先滚动和插播式广告使您的内容赚钱。 实时视频流和记录 只需通过将照相机插入到 USB 或防火墙端口,即可从任何 *** 作系统都识别的照相机和麦克风源中捕获实时音频和视频流。照相机 API 能够使开发者动态指定视频捕获参数。捕获的视频可以实时广播给其他人和/或记录到服务器的磁盘上。 多用户通信 使用多种方式、多用户流以及用于同步多个用户之间数据的远程共享对象技术,创建创新的视频通信应用,如富媒体聊天室、视频博客、视频消息、多用户游戏等等。 高级搜索 使您的查看者立即跳到视频的任何一部分,无论视频的长度大小或者是否已经完全下载都是如此。 多个摄像头角度 让查看者从不同视野进行选择,以便提供更吸引人、更有交互性的体验。 安全与内容保护 没有暴露的 URL 和媒体文件位置 指回内容源的 URL 通常会损坏 Internet 上媒体的位置。市场上的大多数媒体播放器都允许用户很容易地查看正在播放的媒体剪辑的位置。借助 Flash,外部媒体文件位置在 SWF 文件中被压缩为二进制格式,因此网站访问者无法使用,这几乎使得访问者无法获得通过 Flash Player 交付的媒体的文件和服务器位置。 控制暴露的信息 传统的媒体播放器经常会提供很多关于媒体的信息,而您根本不愿意共享这么多信息。例如,文件名、文件类型、编码选项、交付方法等信息都可以很容易地从主要的媒体播放器获得。Flash 能够使您完全自定义媒体播放器,来显示只想让客户看到的信息。除非发布者选择使文件信息可用,否则不会很轻易得到文件信息。 无客户端缓存 通过Flash Media Server 流向 Flash 客户端的音频和视频内容未在本地客户端机器上进行缓存。安全交付 mp3 文件和其他媒体,并确保知道网站访问者不能进入其 Temporary Internet Files 文件夹且获得媒体文件资源。 独特的传输协议限制流跳跃 默认情况下,通过 Flash Media Server 交付的内容都包含在 Macromedia 专有协议 (RTMP) 中。因为这是一种未发布的专有格式,流跳跃程序不具备跳跃通过 Flash Media Server 交付的媒体的能力。这将大大降低未授权程序捕获从 Flash Media Server 到 Flash Player 的数字媒体流的能力。 访问控制 Flash Media Server 提供一种可以由发布者使用的插件机制,以在交付流之前验证并对用户进行身份验证。使用访问控制,发布者可以避免未授权站点深入链接到它们的媒体流中,它们可以支持单点登录或按观看内容和事件的次数付费。 SSL 交付 对于最终的输入流安全性,Flash Media Server 通过 SSL 支持实际流的加密交付。安全套接字层 (SSL) 是一个通过 TCP/IP 进行安全通信的协议。Flash Media Server 为传入和传出 SSL 连接和数据提供 SSL 和加密。这将在传输流时为用户提供一种最强类型的安全保护。 3、集成到现有基础架构中 XML 对象 XML 对象是一个使开发者能够读取和编写 XML 文件和流的服务器端 API。这对于使 FMS 能够从媒体资源管理系统中读取媒体元数据信息以便进行大规模视频点播部署非常有用。此外,此功能还可以用于连接到 Web 服务,如使用 XML 进行通信的 Jabber。 文件对象 文件对象是一个服务器端 API,它能够使开发者在服务器上写入访问文件系统命令的应用。这在许多方面都很有用,例如: 对于规模较小的视频点播应用,开发人员现在可以查询媒体素材的服务器文件系统,并在列表中显示它们,以供评阅人员从中选择。 对于在服务器上记录和存储音频和视频的应用,开发人员现在可以创建一个支持某些用户(如,站点管理员)的应用以审阅提交的剪辑及按他们的意愿删除或重命名这些剪辑。 通常,这类应用都需要一个数据库和一个应用服务器。现在,仅使用 Flash Media Server 就可以完成这一切。 结果,开发人员可以更快地创建媒体应用,并降低了复杂性。 强大的日志记录 ASCII 日志、实时使用情况监视器以及服务器和流事件的完整 API 可以确保发布者具有他们跟踪和生成有关服务器和内容使用情况的报告所需的所有工具。因为 ASCII 日志符合 W3C,因此可以使用行业标准工具解析日志、文档音频和视频使用情况并创建强大的报告。另外,还可以利用日志记录提供以下功能: 可配置的日志目录 日志旋转 可配置的日志文件大小 可配置的日志内容 内容发布者能够为使内容赚钱以及确定消息的有效性和触及范围生成报告,因此从中受益。 流事件捕获 利用有关立即可访问的流事件的详细信息,开发人员能够确切了解如何、何时及由谁来访问流视频。 传统的媒体交付功能(如渐进式下载)仅告诉您是否“点击”或下载了某个媒体文件。发布者不可能知道用户观看了多少视频,例如,如果用户在视频上点击暂停而不是继续播放它,或者如果用户在观看整个剪辑之前离开该网页到其他地方浏览。 使用Flash Media Server 中的流事件日志记录能够使发布者看到和捕获最终用户观看的确切视频数量。 管理控制台 借助管理控制台,运行、管理 Flash Media Server 部署和应用变得轻而易举。使用直观的、基于 Web 的界面,管理员可以查看有关应用、对象、流以及服务器运行正常的功能,如 CPU 性能以及来自单个 UI 的带宽的实时信息。 可扩展性、可靠性和性能 边缘服务器 对于更大规模的部署,现在已经有一个全新的边缘-源部署选项,可简化负载平衡、故障转移、冗余和群集。 过去,交付需要在多个服务器上运行的大型媒体应用通常很复杂,需要进行大量的集成和/或手动工作。如下图所示,内容、配置文件和应用逻辑必须被复制到所有服务器。需要创建同步服务器的特殊服务器脚本。监控服务器或获取日志信息可以一次完成,但如果希望同时监控和查看来自所有服务器的报告,则会需要自定义工作。 借助Flash Media Server,客户可以部署多个边缘服务器来处理实际的流量,同时在一个中央源服务器上保留所有内容、服务器脚本应用逻辑和报告。边缘服务器连接到源服务器,并根据需要推送和拖曳内容和应用。如下图所示。 在此情景下,可以通过任何常见的负载平衡软件或硬件将流量发送到边缘服务器。此方法简化了大规模部署的负载平衡、故障转移、冗余和群集。 以下所列是源和边缘服务器中的许多智能功能,这些功能使其能调整媒体应用的交付。 4、边缘服务器的点播流缓存 边缘服务器在用户请求音频和视频内容时将在网络边缘缓存该内容。可以在 RAM 中缓存该内容,如果需要也可以本地存储上进行缓存。将素材缓存到边缘上可减少服务器访问存储的需求(该进程通常是大规模媒体交付的一个瓶颈),并使视频能够更快到达最终用户。 实况流分段 除了方便点播文件外,实况流分段功能还使边缘服务器能够自动从某个源服务器(或另一个用于超大型部署的边缘服务器)预定实况流,并根据需要将这些流发布给最终用户。该功能支持在整个群集中自动访问实况视频。 数据流和共享对象处理 除了交付音频和视频之外,Flash Media Server 还可以采用一次性(流式)或永久(共享对象)方法提供数据。大规模数据类型转换应用就是该功能的一个极好实例。边缘服务器还按交付音频和视频数据相同的方式进行数据交付。 路由管理 该功能使您能够控制哪个边缘服务器处理哪些连接,并控制在群集中路由数据的方式。 多进程 Flash Media Server 能够使您作为一个独立的进程运行每个虚拟主机、应用或实例。由于以下诸多原因,这一功能非常有用:Flash Media Server 用于支持许多独特的媒体应用。为了获得最高的可靠性,可以将这些应用作为一个独立的进程运行。如果您需要停止某一应用进行维护或升级,它不会影响其他应用。拥有由一个 FMS 服务器或群集提供动力的很多品牌或站点的公司也具有相同的优势。可以维护每一个站点而不会影响其他站点。 此外,一些 *** 作系统将每个进程限制为 RAM 仅 2GB。通过使不同的实例使用不同的进程,您可以将 *** 作系统的每个进程限制为大约 2GB。 >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13515003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-23
下一篇 2023-08-23

发表评论

登录后才能评论

评论列表(0条)

保存