前言

购物返利 https://www.cpa5.cn/

最近几年微服务可谓是大火,大家忙着建设微服务,学习微服务如何搭建,微服务技术体系的演变也使得企业公司能支持起灵活,多样化的业务需求和越来越多的访问量,有很多企业用户正在朝着业务中台,SAAS云平台进行发展,并能与时俱进跟上技术时代的脚步。而这篇文章呢,主要是讲解一下流媒体服务如何集群分流,附带讲解一下surging 特有的一些功能。

微服务特点

6个典型特点

1.高内聚,低耦合:程序模块的可重用性、移植性大大增强,针对于接口和业务模块的不同部署就能做到本地和远程调用;

2.单一职责:只负责某一业务功能;

3.独立:每个服务可以独立的开发、测试、构建、部署;

4. 灵活性:小而灵活可以满足开发不同类型的业务模块。

5.进程隔离:可以通过隔离,发生熔断,雪崩而不会影响其它服务调用和运行

6.多样性: 针对于协议的扩展可以支持多样化业务场景的解决方案。

部件和功能

通过上图发现,surging 可以支持以下功能:

1.可以支持web,移动端,物联网和流媒体等业务场景

2.可以支持rtmp ,http-flv,thrift,mqtt,ws,http,grpc 多种协议以满足不同业务的场景的需要

3,可以支持服务之间调用的链路追踪。

4.可以支持扫描模块引擎,cli 工具,任务调度服务,日志,swagger 文档,服务注册,服务发现,协议主机,缓存中间件,事件总线等功能。

实例

下面以上图流媒体集群分流的例子,看看是如何研发运行的。

以部署两台服务提供者为例,服务A,通过下载surging企业版(非商业用户不能用于商业,只能用于学习),通过以下配置来修改surgingSettings.json文件

 {"Surging": {"Port": "${Surging_Server_Port}|81","Ports": {"HttpPort": "${HttpPort}|28","WSPort": "${WSPort}|96","MQTTPort": "${MQTTPort}|97","GrpcPort": "${GrpcPort}|95"},"LiveStream": {"RtmpPort": 77, //rtmp 端口"HttpFlvPort": 8081, //HttpFlv 端口"EnableLog": true, //是否启用log"EnableHttpFlv": true,"RouteTemplate": "live1", //直播服务路由规则名称,可以根据规则设置,比如集群节点2,可以设置live2, 集群节点3,可以设置live3"ClusterNode": 2 //集群节点数里,会根据routetemplate 转推流
  }
}

服务B,通过以下配置来修改surgingSettings.json文件

 {"Surging": {"Port": "${Surging_Server_Port}|82","Ports": {"HttpPort": "${HttpPort}|281","WSPort": "${WSPort}|961","MQTTPort": "${MQTTPort}|971","GrpcPort": "${GrpcPort}|951"},"LiveStream": {"RtmpPort": 76, //rtmp 端口"HttpFlvPort": 8080, //HttpFlv 端口"EnableLog": true, //是否启用log"EnableHttpFlv": true,"RouteTemplate": "live1", //直播服务路由规则名称,可以根据规则设置,比如集群节点2,可以设置live2, 集群节点3,可以设置live3"ClusterNode": 2 //集群节点数里,会根据routetemplate 转推流
  }
}

然后可以通过ffmpeg或者obs进行推流,以ffmpeg 工具为例,可以输入以下命令

ffmpeg -re -i D:/大H包.HDTC1280高清国语中字版.mp4 -c copy -f flv rtmp://127.0.0.1:76/live1/livestream2

通过以下代码我们创建httpflv 的html 文件,url配置为:http://127.0.0.1:8080/live1/livestream2

<!DOCTYPE html>
<html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"><title>flv.js demo</title><style>.mainContainer {display: block;width: 1024px;margin-left: auto;margin-right: auto;}.urlInput {display: block;width: 100%;margin-left: auto;margin-right: auto;margin-top: 8px;margin-bottom: 8px;}.centeredVideo {display: block;width: 100%;height: 576px;margin-left: auto;margin-right: auto;margin-bottom: auto;}.controls {display: block;width: 100%;text-align: left;margin-left: auto;margin-right: auto;margin-top: 8px;margin-bottom: 10px;}.logcatBox {border-color: #CCCCCC;font-size: 11px;font-family: Menlo, Consolas, monospace;display: block;width: 100%;text-align: left;margin-left: auto;margin-right: auto;}</style>
</head><body><div class="mainContainer"><video name="videoElement" class="centeredVideo" id="videoElement" controls width="1024" height="576" autoplay>Your browser is too old which doesn't support HTML5 video.</video></div><script src="https://cdn.bootcdn.net/ajax/libs/flv.js/1.5.0/flv.min.js"></script><script>(function () {if (flvjs.isSupported()) {startVideo()}function startVideo() {var videoElement = document.getElementById('videoElement');var flvPlayer = flvjs.createPlayer({type: 'flv',isLive: true,hasAudio: true,hasVideo: true,enableStashBuffer: false,url: 'http://127.0.0.1:8080/live1/livestream2'});flvPlayer.attachMediaElement(videoElement);flvPlayer.load();window.setTimeout(function () { flvPlayer.play(); }, 500);}videoElement.addEventListener('click', function () {alert('是否支持点播视频:' + flvjs.getFeatureList().mseFlvPlayback + ' 是否支持httpflv直播流:' + flvjs.getFeatureList().mseLiveFlvPlayback)})function destoryVideo() {flvPlayer.pause();flvPlayer.unload();flvPlayer.detachMediaElement();flvPlayer.destroy();flvPlayer = null;}function reloadVideo() {destoryVideo()startVideo()}}) (document)</script></body></html>

然后就可以通过打开创建的html文件,运行效果如下图

通过potplay 配置服务A,链接为:rtmp://127.0.0.1:77/live1/livestream2,然后如下图所示:

可以通过potplay 配置服务B,链接为:rtmp://127.0.0.1:76/live1/livestream2,然后如下图所示:

结尾

通过此篇文章我们了解surging ,也了解如何播放httpflv ,如何针对于rtmp 推流转推到其它服务上进行订阅播放,后期计划打算支持rtsp 协议,也请各大用户和企业用户多多关注。

surging 基于流媒体服务如何集群分流相关推荐

  1. 基于Linux的集群系统(一)

    基于Linux的集群系统(一) 集群系统概述 本文是<基于LINUX的集群系统>系列文章的第一篇.作者就集群系统这一概念进行了概述,介绍了集群系统的发展以及国内外主要的集群系统解决方案. ...

  2. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)

    原文:.NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一) Consul介绍 Consul是HashiCorp公司推出的开源工具[开源地址:https://github.c ...

  3. 基于k8s多集群隔离环境下的devops实现

    简介:本方案使用两个独立的k8s集群:用户已有的k8s模拟测试,ack集群模拟生产环境,保证环境的高度隔离,互不影响.通过gitlab+Jenkins的黄金组合,实现容器应用的自动化构建和持续部署,提 ...

  4. 基于Linux的集群系统(五) Linux集群系统的实现

    1.设计目标 设计一个基于Linux的集群系统,它能够提供负载平衡的功能.系统能够不断监视集群中各台实际服务器的负载状况,并且将来自外部网的多种请求转发到内部网中的某一台实际服务器上执行. 具体来说, ...

  5. 基于docker的集群搭建

    基于docker的集群搭建 2.3.2.1 环境准备 ​ 1.搭建docker ​ 要想在docker上搭建solr集群,首先安装docker的环境.这个就不再演示,如果没有学过docker的同学可以 ...

  6. php solr docker搭建,深入浅出Docker技术- 基于Docker Solr集群的搭建

    Posted on 6月 2, 2018 深入浅出Docker技术- 基于Docker Solr集群的搭建 SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是正在开发中的Solr ...

  7. 基于LVS高可用架构实现Nginx集群分流

    Nginx实用插件_踩踩踩从踩的博客-CSDN博客 前言 前面文章介绍Nginx的核心及扩展插件必要的性能优化,以及在nginx中如何实用用https:本篇文章会继续讲解重要的概念 lvs高可用框架, ...

  8. RDD:基于内存的集群计算容错抽象

    转载自:http://shiyanjun.cn/archives/744.html 摘要 本文提出了分布式内存抽象的概念--弹性分布式数据集(RDD,Resilient Distributed Dat ...

  9. 基于linux的集群系统LVS

    一 LVS (Linux Virtual Server) 针对高可伸缩.高可用网络服务的需求,我们给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服 ...

最新文章

  1. Python学习笔记3 流程控制、迭代器、生成器
  2. 在创建ArcGIS Server10.5的站点时,系统提示创建‘System/publishingToolsEX.GPServer’失败(转)...
  3. 软件工程 speedsnail 冲刺3
  4. url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
  5. 【uni-app】rich-text 无法处理 video 的解决办法
  6. 对话鲁直:蚂蚁金服中间件的开源头羊 | 穿山甲专访
  7. hive 创建访问用户_hive创建角色并赋权
  8. 【源码阅读】dbutil包中BasicRowProcessor内部类CaseInsensiti...
  9. Java乘法计算错误,Java JRE致命错误:乘法过多
  10. QImage与QPixmap区别
  11. 微信头像制作小程序源码 微信流量主系列
  12. 史上最全的 11 张网络安全思维导图!
  13. 【蓝桥杯省赛学习题Java】座次问题
  14. 20150802厦门大学华为校园提前批招聘机试体验题三:Word Maze(单词迷宫)
  15. 【BZOJ 1062】 1062: [NOI2008]糖果雨 (二维树状数组)**
  16. 安卓期末作业 学生成绩管理系统(可以注册登录,录入相关信息)
  17. 抱团股会一直涨?无脑执行大小盘轮动策略,轻松跑赢指数5倍【附Python代码】
  18. 流量矿石团队成员出席“区块链技术与金融领域创新应用培训会”
  19. edge浏览器怎么关闭广告的方法教程
  20. 现代企业管理笔记——管理理论新进展

热门文章

  1. 怎样使用NetFlow分析网络异常流量一
  2. QGIS编译(跨平台编译)之四十四:HDF5编译(Windows、Linux、MacOS环境下编译)
  3. 数学之美!~(02)十位伟大的数学家!
  4. EverBox开发笔记-2-iCloud-KeyValueStore
  5. uni-app如何让图片高度自适应
  6. 2019沈阳网络赛B.Dudu's maze
  7. jupyter学习记录(一)——安装模块与导入图片
  8. 【逗老师带你考IE】如何快速通过HCIE考试
  9. OpenCV4教程——3.3 绘制直线
  10. html5 直线的两头弯曲,html5教程 (二)(canvas绘制简单的直线)