视频直播服务器设计原则
1. 设计原则
1.1 KISS
简单就是美,用最简单的方式解决问题
1.2 客户/服务端带宽是最珍贵的
最珍贵的是客户端与服务器端的带宽,其次是客户端的CPU,再次是服务器的间的带宽,最后才是服务器的CPU。流畅是第一优先事项。
1.3 避免单点,分布式部署
避免单点进程的出现,如果必须出现,也需要保证其是所有进程中故障率最低的。系统必须支持分布式异地部署,支持平滑扩容,达到系统的高可用。
1.4 不要过早优化
做任何的优化,都必须以事实数据为前提,不要在设计阶段做一些想象中的优化。先保证业务的正常使用,即先扛住,再来优化。
1.5 层次化分布设计
每一层都应该有相应的预处理,不要把所有的处理放在最后一层。
如:客户端应处理的逻辑,应该由客户端处理完毕后再由服务器做后续的处理,不要仅仅把原始数据给到服务器。
每一层都应该有相应的安全防范,不要把所有的防范集中在某一层。
如:服务端应永远假设客户端发送来的消息包都可能是非法的;客户端应永远假设电脑的输入有恶意性的。
1.6 大系统小做
将功能复杂较大的系统,化大为小,减少模块耦合,降低相关联性,用多个独立的模块来实现整体系统的功能。
总的来说,大系统小做采用的是化繁为简、分而治之,便于开发和迅速实现;同时当某个模块出了问题时,因为相互独立,能将影响降到最低,不至于扩大影响范围。
1.7 有损服务原则
随着系统功能越来也多,系统的复杂度也越来越大,系统越来越臃肿。这是系统出错的概率就会逐渐增大。当故障异常,一定要保证系统重点功能的正常使用,防止系统零服务的现象发生,这就是有损服务理念。有损服务设计理念如下:
1:问题时,优先保证关键功能
2:非关键功能不可以影响关键功能
3:在条件允许的情况下,损失越少越好
1.8 轻重分离原则
保持接入和业务处理的分离,接入尽量轻量化,使得系统具有很好的吞吐量,处理尽量异步化,使得可以平滑扩展。