您当前的位置: 首页 > 

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

协议圣经 -协议之服务编写(九)

qianbo_insist 发布时间:2021-07-10 21:26:16 ,浏览量:0

先写了九

一、协议服务

    上一章说到协议rtsp ,rtsp协议本身并不难,但是写一个服务确实是需要非常细致的工作,这回我们要做一个rtsp的服务,启动摄像头并且编码成h264以后用udp over rtsp 来等待链接,将摄像头的数据用rtp协议送出去。我们不过多谈论协议本身,协议只是一个协议,可以多抓包分析,但是服务器方面的知识,确实是我们必不可少需要掌握的。     无论任何一种服务器,我们的原理一定是要少拷贝数据,例如以下这三个函数

memset memcpy calloc

此类的函数使用一定需要谨慎,程序员若有这样的习惯都是需要更正的:
  1. 一上手就把内存memset
  2. 写文件进行跟踪
  3. 遇到协议转换的时候memcpy 大量使用
  4. 锁的大量使用和不明白锁机制错用
1、why

为什么我们需要少用和谨慎使用拷贝等函数,因为音视频的数据量是非常大的,短量时间拷贝了巨量数据,得不偿失,本着程序朝轻量和高效的方向走,才能稳定,若cpu被过度使用,自然很多高效的地方得不到施展,会导致程序无法稳定。

2、how

申请了一段内存,为了能够尽量做到零拷贝系统,有两种方法:

2.1 应该在内存的前面流出一段协议转换的头部,
  如rtmp协议头部最大18字节
  rtp协议最少的12字节头部,每次使用的时候可以内存覆盖,再还原回来
2.2 若使用tcp,则考虑流传送,不用拷贝的时候就不用拷贝。 2.3 三端编写情况

我们在编写程序时,若有服务端,推送端,播放端三端同时编写,那一定要把其中的两端先采用已经稳定和错误少的,否则会走很多弯路。 要实现的

二、分布式

分布式要实现的东西很多 1 实现无干预的安全部署,多使用upnp协议mdns协议 2 分布式系统中的领导选举 3 避免在分布式系统中回退,错误检测和日志推送 4 使用静态稳定性,保证性能 5 随时可进行实施运行状况检查 6 缓存挑战和策略 7 超时,重试和抖动 8 通过负载机制避免过载 9 避免队列积压,实现无队列程序 10 使用随机分布进行工作负载 11 检测分布式系统运营可见性 高可用性 可扩展性 12 单元测试和吞吐量测试

关注
打赏
1663161521
查看更多评论
立即登录/注册

微信扫码登录

0.2026s