- 课程学习
- 课程直播
- Docker高级
- dev ops的核心:开发测试部署
- 1.持续继承
- 2 持续交付
- 3. 持续部署
- 项目的持续集成和部署流程
- 安装jenkins
- Docker高级.md
准备要部署的工程">私有仓库搭建和配置 Docker高级.md
准备要部署的工程
课程学习
分为点播和直播

课程计划的id课程发布的id,媒资id
接口三:(学习中心进行实现)视频点播
接口传入:媒资id,课程计划id,课程发布id
业务层接收数据:媒资id,课程计划id,课程发布id,还需要获取到用户的数据(username:令牌中获取)
0.事务:不
1.判断关键数据
2.判断业务数据
—判断课程发布数据是否存在(从搜素服务中获取)
—从课程发布数据中取出课程计划数据是否存在(从coursepub中的teachplan-hson数据中心获得)
取出三级课程计划和传入的课程计划进行比较,看是否可以匹配
3.判断权限:用户是否有权限看着门课
—课程是否有权限:
免费:可直接观看
收费
判断用户观看的课程计划是否是免费的
免费:可以直接观看
收费:判断用户观看的课程计划是否收费
免费:直接观看
收费:判断用户是否已经购买:查询用户学习记录中的paid
4.在有权观看的基础上获得媒资信息
(通过mediaid远程调用mediaservice获得地址)
—判断mediaType:(视频(aliyun视频点播)、文档、作业)
5.将媒资的资源地址返回给前端
课程直播
。。。。。。。。。。。。。无
直播实现:阿里云视频直播
直播协议:三个:rtmp、flv、hls
直播所需链接:播流地址:观众
推流地址:主播
直播所产生的业务数据:
—数据所在的服务:媒资服务中——-live_course
—数据填充:
——课程发布时,妹子服务作为mq的消费者
——媒资服务接收消息,判断课程微直播,将三级计划生成live_course数据
—数据中的关键数据:
——课程相关
—-机构相关
课程计划
直播地址:包含播流和推流
直播采集
推流协议:
支持RTMP协议推流
推流方式:
支持阿里云iOS、Android、Web等推流SDK及Demo,也支持常见的第三方如OBS/XSplit/FMLE等推流软件
3.2.1.2 直播播放
播流协议:
支持RTMP、FLV及HLS三种播流协议
播流方式:
支持阿里云iOS、Android、Web等播流SDK及Demo,也支持常见的第三方如VLC等播流软件
直播拉流:
支持flv、rtmp、m3u8
直播协议说明:
RTMP(支持播流和推流)
概念:
(Real Time Messaging Protocol),即实时消息传送协议。Adobe 公司为 Flash 播放器和服务器之间音视频数据传输开发的私有协议。工作在 TCP 之上的明文协议,默认使用端口 1935。协议中的基本数据单元成为消息(Message),传输的过程中消息会被拆分为更小的消息块(Chunk)单元。最后将分割后的消息块通过 TCP 协议传输,接收端再反解接收的消息块恢复成流媒体数据。
优点:
—专门针对流媒体优化,RTMP 是专为流媒体开发的协议,对底层的优化比其它协议更加优秀。
—支持较广泛,同时它 Adobe Flash 支持好,基本上所有的编码器(摄像头之类)都支持 RTMP 输出。现在 PC 市场巨大,PC 主要是 Windows,Windows 的浏览器基本上都支持 Flash。
—适合长时间直播播放,另外RTMP适合长时间播放,曾经有过测试,联系 100 万秒,即 10 天多连续播放没有出现问题。
—延迟相对较低,一般延时在 1-3s 之间,一般的视频会议,互动式直播,完全是够用的。
缺点:
—它是基于 TCP 传输,非公共端口,可能会被防火墙阻拦;
—另一方面,也是比较坑的一方面是 RTMP 为 Adobe 私有协议,很多设备无法播放,特别是在 iOS 端,需要使用第三方解码器才能播放。
FLV
概念:
(Flash Video) 是 Adobe 公司推出的另一种视频格式,是一种在网络上传输的流媒体数据存储容器格式。
优点:
—其格式相对简单轻量,不需要很大的媒体头部信息。
—整个 FLV 由 The FLV Header, The FLV Body 以及其它 Tag 组成。因此加载速度极快。采用 FLV 格式封装的文件后缀为 .flv。
—而我们所说的 HTTP-FLV 即将流媒体数据封装成 FLV 格式,然后通过 HTTP 协议传输给客户端。基于http传输,避免防火墙拦截,HTTP-FLV 依靠 MIME 的特性,根据协议中的 Content-Type 来选择相应的程序去处理相应的内容,使得流媒体可以通过 HTTP 传输。相较于 RTMP 协议,HTTP-FLV 能够好的穿透防火墙,它是基于 HTTP/80 传输,有效避免被防火墙拦截。
—负载均衡/加密传输,它可以通过 HTTP 302 跳转灵活调度/负载均衡,支持使用 HTTPS 加密传输。
HLS
概念:
(Http Live Streaming) 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。
相对于常见的流媒体协议,HLS 最大的不同在于它并不是一下请求完整的数据流。它会在服务器端将流媒体数据切割成连续的时长较短的 ts 小文件,并通过 M3U8 索引文件按序访问 ts 文件。客户端只要不停的按序播放从服务器获取到的文件,从而实现播放音视频。当媒体流正在播放时,客户端可以根据当前网络环境,方便地在不同的码率流中做切换,以实现更好的观影体验。
使用 HLS 在 HTML5 页面上实现播放非常简单:
优点:
—Apple 的全系列产品支持:由于 HLS 是苹果提出的,所以在 Apple 的全系列产品包括 iPhone、 iPad、safari 都不需要安装任何插件就可以原生支持播放 HLS, 现在 Android 也加入了对 HLS 的支持。
—穿透防火墙。基于 HTTP/80 传输,有效避免防火墙拦截
—性能高。通过 HTTP 传输, 支持网络分发,CDN 支持良好,且自带多码率自适应,Apple 在提出 HLS 时,就已经考虑了码流自适应的问题。
缺点:
—实时性差,延迟高。HLS 的延迟基本在 10s+ 以上
—文件碎片。特性的双刃剑,ts 切片较小,会造成海量小文件,对存储和缓存都有一定的挑战
三种协议总结对比如下:
| | RTMP
| HTTP-FLV
| HLS
| | —- | —- | —- | —- | | 协议
| TCP长连接
| HTTP长连接
| HTTP短连接
| | 数据分段
| 连续流
| 连续流
| 切片
| | 延迟
| 1-3秒
| 1-3秒
| 5-20秒(依切片情况)
| | WEB支持
| H5中需要使用插件
| H5中需要使用插件
| 支持H5
| | 视频封装格式
| flv tag
| flv
| m3u8 ts
|
Docker高级
容器编排概念:是指自动化容器的部署、管理、扩展和联网、
目前容器编排技术比较知名的包括:(实现方)
- Docker公司自己的:docker-compose + swarm组合(成本较低)
- Google牵头的Kubernetes技术,简称为k8s
dev ops的核心:开发测试部署
1.持续继承
持续集成 (Continuous integration,简称 CI) 指的是,频繁地(一天多次)将代码集成到主干。
优点:
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
目的:
就是让产品可以快速迭代,同时还能保持高质量。
核心措施:
代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
Martin Fowler 说过,”持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”
与持续集成相关的,还有两个概念,分别是持续交付和持续部署。
2 持续交付
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
3. 持续部署
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
目标:代码在任何时刻都是可部署的,可以进入生产阶段。
前提:能自动化完成测试、构建、部署等步骤。
项目的持续集成和部署流程

1.将代码提交的git上(公司一般是自己搭建git服务:gitlab)
编写忽略文件
不要认为上传代码就立即打包,若代码没有整完怎么办??———————-只有master分支有变化,才会进行打包
2.使用jenkins
安装jenkins
下载jenkins docker pull jenkins/jenkins:lts-centos7
创建jenkins容器 docker run -d —name myjenkins -p 58888:8080 \ jenkins/jenkins:lts-centos7
查看jenkins启动日志 docker logs -f myjenkins
启动成功后 访问: http://192.168.94.129:58888
安装jenkins下的maven插件,git插件
Docker高级.md
(安装完的插件在哪里?)
配置环境(maven要3.6.1)
Docker高级.md
3.构建私有仓库(默认是不可以上传镜像)
私有仓库搭建和配置 Docker高级.md
准备要部署的工程
准备工作,导入资源中的docker-demo工程, 在pom中添加docker-maven插件配置,
