在远程应用中,我们不得不提一下BBS。Telnet BBS,是我们通常登录BBS的手段。这里我们就来详细看一下。我们是如何远程登录论坛的。那么我们现在提到的 BBS ,通常指的都是Telnet BBS ,用一个 term 软件连接上,就可以看到文本的界面,比起如今花哨到无以复加的 WWW BBS 们来可谓是简陋到了极点,然而就是这样的 BBS,无数人每天面对它长达两位数小时还乐在其中,恐怕 UI 设计专家们知道也要气到吐血。
也不时有人发表预言,预言 Telnet BBS 将很快消亡而被更加富有表现力的WWW BBS 全面取代,只是年复一年,当年的预言者已经消失不见,BBS 上的用户数目却翻了一番又一番。。。这就是 Telnet BBS 的魅力。 Telnet BBS 系统数目众多,但是从根源找起,大致可以分成两大家族,Firebird BBS 和 Maple BBS,在大陆 Firebird BBS 的变种占据了绝对优势,在台湾地区则是 Maple BBS 的天下,由于台湾地区计算机发展历史比较长,因此 BBS 的人气也比大陆高,同时上站人数过万的站点有好几个,不过大陆毕竟有着人口优势,近年来教育网几大 BBS 的人数也迅速增长。
下面我们就分别介绍这两大 BBS 家族。
首先是在大陆最为流行的 Firebird BBS ,最有名的 SMTH BBS, YTHT BBS, Firebird 2000 三大流派都是由此而来。很久很久以前,有那么一群大学生,也可能是科研机构的研究员什么的,他们整天在Unix 主机上面打滚,觉得要是能在主机上面做一个论坛样的东西多好,于是他们就写了一个命令行程序,运行这个程序,操作者可以在界面下面留言,为了让多个人同时可以操作这个系统 ,他们把这个程序设置为系统某个用户的 shell ,每个 telnet 上该主机的用户,只要使用这个用户的用户名和密码登陆,就可以进行交流。这就是 Internet BBS 的雏形。经过一段时间的发展,这个系统具有了相当多的交互功能,用户不仅可以留言,还可以互相发送信件,发送信息,看到同时在线的用户等等。 BBS 系统的开发者们为了让更多的人能使用这个系统并完善之,将BBS 系统以开源协议发布于网络上面。只要拥有Unix 主机,就可以取得源代码并安装BBS 系统。因此BBS 系统以很快的速度发展起来。
在众多BBS 系统中,某个叫做 Pirate BBS ,经过某些人修改后叫做 Eagle BBS 的分枝,流传入了台湾地区,交大资讯工程系从他发展出了 Phoenix BBS,Phoenix BBS 是如今大部分中文 Telnet BBS 系统的祖先,然而它的名字却远不如其后辈响亮,在它的基础上由中正资工进一步修改的 BBS 系统,被赋予了那个大陆 BBS 开发者耳熟能详的名字――Firebird BBS。应该说, BBS 系统在传入台湾地区时候虽然功能还比较简陋,但是 BBS 系统的基本架构已经定型,比如多进程模型,共享内存信息交换,利用系统信号来传递呼叫消息,用文件存储文章和索引等,这些设计在现在的 BBS 系统中大部分还在沿用,其中不少设计即使现在来看,也是相当标准有效的多进程 Unix 服务器设计。
Telnet BBS 是一种流行于大学和研究机构中的电子公告牌系统,和时下流行的Web BBS 系统不同,BBS 的界面采用纯文本方式表现,用户使用终端软件连接BBS 系统,文本界面在服务器端生成并发送出来,客户端软件仅原样显示文本内容,属于一种瘦客户机的应用。Telnet BBS(后面除非特殊提到,否则简称BBS)在台湾地区和大陆的教育网地区比较流行,比较大规模的站点在线人数一般都在万人以上。由于历史原因,BBS 系统采用的是Unix 下相当传统的1:1 多进程模型,每进程处理一个连接的模型,此种模型的好处是服务相对比较稳定,不会因为一个用户出错导致整个系统的不可用,但是也带来耗费资源较多和进程之间通信比较困难的问题。BBS 服务器端的复杂逻辑也使得分布式设计很难实施。因此BBS 通常是单机承担几乎所有负载,大陆地区较大规模的BBS 服务器上经常同时保持超过7000 进程,台湾地区的BBS 站甚至有并发20000 进程以上的纪录。我们在维护大型bbs 站点的过程中,积累了一些优化和维护如BBS 这样高并发进程服务器的经验,考虑到1:1 进程模型服务仍然有很广泛的应用,在这里写出和读者共享。优化服务器是综合性的工作,不仅需要修改代码,还需要调整系统参数,包含有很多琐碎的内容,根据目的来讲,大致可以根据节约资源的类型分为磁盘IO 优化,内存优化,和CPU 优化等几方面。