大作业 - 1 后端技术

后端分析

在整个流程中,后端所扮演的角色是传递者,夹在了用户与实验板之间。既不与用户直接进行交流,也不与硬件进行通信。但是,服务器依然有其存在的必要。

首先,用户无法找到实验板进行远程控制,而如果通过服务器进行中转,则可以很容易的在实验板与用户之间建立联系。

其次,同一个实验板能够被多个用户旁观,但是只能有一个用户能够进行有效操作。客户端的权限判别很容易被绕过,所以,实际上用户所做的所有操作全部都会被直接压在下一级的处理单元上,而对于配置较为低同时也不易扩展的树莓派来讲,可能是一个灾难。

而如果通过服务器进行判断,操作压力在服务器全部被分担,树莓派只接收有权限用户发送来的请求,并单向服务器发送视频流,客户端的压力较小。而服务器能力的扩展是较为容易的,至少,比树莓派容易。

当然,加一层服务器对于整体还是有负面影响的。硬件实验要求较高的实时性,而消息在层层传递后容易造成大的延迟,而这就是服务器所面临的挑战。

WebSocket - 浏览器服务器实时交流

实时性

由于http协议是一个无连接的协议,服务器永远是被动接受来自浏览器的请求,而后返回,而无法将某些信息推送给浏览器。在某些网页上,这一点并不会成为束缚。不过,对于我们当前的项目,并不能指望用户按F5的手速来保证用户能够获取实时的内容。

事实上,虽然http是一个无连接的协议,但是还是有一些方式能够做到实时消息的获取。

最早的方式是基于轮询的思想。http协议虽然是没有推送能力的,但是如果客户端刷新的够快,实时性依旧能够保证。这种方式对于服务器的性能要求较高,因为服务器需要处理的请求数与实时性的要求有高度正相关。

而后,更优雅的方式是类似于中断的长连接AJAX,其核心思想是客户端发送请求,服务器受到请求后不立即返回,而是在需要的时候,如有新消息的同时,进行返回。结果就是客户端在服务器有变化的同时,收到了新消息通知。

上述两种基于http协议的实时消息获取方式还有一个最大的弊端,即http协议的一个属性——无状态性。这等于是说,每次向服务器请求某些东西的时候,首先得告诉服务器客户端的身份以及当前所处的状态,而这是相当耗费流量的,而重复解析客户端发送来的身份验证信息将会极大的耗费服务器的资源。

而当前选择的WebSocket技术,则是在服务器与客户端之间建立了一个双工通道,客户端可以与服务器进行消息传递,而服务器也可以以此通道将信息推送到客户端上。

兼容性

选择新技术在前端世界所带来的就是兼容性的压力。

浏览器 支持版本
Chrome Supported in version 4+
Firefox Supported in version 4+
Internet Explorer Supported in version 10+
Opera Supported in version 10+
Safari Supported in version 5+

可以看出,目前主流浏览器的最新版本中,基本都对WebSocket做了支持。但如果想要直接照顾到IE用户,WebSocket技术基本上是不用想的了。没错,又是IE浏览器,作为在中国传播最广泛的浏览器,其之前多个版本在前端技术支持上的落后以及总体更新的迟缓造成了当前中国做前端需要考虑的兼容性问题较多。不过,近几年从IE10开始,IE表现良好,然后就被微软丢了换成edge 了,XD。

2016.03.21 百度统计 | 流量研究院

上图所代表的是国内浏览器的市场份额,明显可以看出IE浏览器在国内依然占有大比例。不过这并不意味着这个项目无法使用WebSocket!结合我的切身体会,我身边的学生所用的浏览器基本上低版本的IE已经绝迹,多见Chrome与Firefox。所以,本项目的目标人群中多数有使用条件,且低版本IE用户迁移到现代浏览器并不困难。

鉴于上述情况,WebSocket技术可行。

socket - 服务器与树莓派

在网络上,可以通过(协议,ip,端口号)这样一个三元组来唯一指定某一台计算机的某一个进程。

而进程间通信方式主要有几种,匿名管道、信号量、共享内存、消息队列、套接字等等。

其中匿名管道最为效率,但是不能实现跨网络的通信,这与我们服务器的思想不符,故放弃。而共享内存、信号量同样也不能进行跨网络的进程通信。

而在网络消息传递的方案中,我选择套接字作为树莓派上的操作进程与服务器之间的交流桥梁。socket支持文本与二进制两种交换方式,同时,交流也是实时传递,符合要求。

rtmp - 视频直播

目前网络上视频直播协议主要有rtmp、rtsp、hls等。

由于协议自身的限制,hls协议所带来的直播延迟较大,一般用作点播,所以与本项目关系不大。

rtmp与rtsp都是直播协议,rtsp的延迟会稍微小些(rtsp: 0.x s , rtmp: 1.x s),但由于网页端对于rtmp的支持较好,首先选择rtmp协议进行尝试。

Tornado

TornadoFriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具和优化。
------ Tornado Web服务器

Python有很多的后端框架,例如说较轻量级的web.py以及Flask,亦或者套件齐全的Django。而作为被知乎以及FaceBook等知名网站使用的后端框架Tornado,它似乎比较偏向于两类之间。

Tornado在提供了RequestHandler这种上层的http处理模块之外,又暴露了TCPserver这种底层模块便于编写者进行拓展。此外,Tornado对于Socket以及衍生的WebSocket协议均有相应的封装。而作为与网站最相关的数据层,Tornado却没有尝试着提供一个默认的ORM模块与数据库进行交互,而是鼓励用户使用自备的模块。

而且,Tornado是一个异步框架,对于处理并发以及响应速度上有着先天的优势。

从以上各方面来看,对于我们这个项目而言,Tornado是一个很不错的选择。

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容