精华内容
下载资源
问答
  • JavaScript源生倒计时(时分秒/毫秒),简单无依赖,可扩展性强
  • mybatis插件 mybatis插件用于自动设置属性,可扩展性强。一个类需要设置的属性,避免每次给对象赋值都需要大量反射操作带来的性能消耗。
  • 强大的微信公众号支持框架,可扩展性强 the lastest version is v3.0 beta ##抽象的 这是一个强大的微信公众号支持框架。 它有一些这样的功能 它又轻又快。 开发插件非常容易。 ##作者信息 由尤里开发。 热烈...
  • 母婴亲子门户网站整站源码带手机端,带亲子商城和亲子活动功能,dz内核可扩展性强安全
  • 欢迎光临新一期的Real编码研习社,本期我们有幸请到了RealNetworks媒体解决方案架构师罗强,想了解低延时的直播方案如何能兼具可扩展性强和经济高效的特点,今天这一期一定不要错过哦~ 一、在您看来,低延时的特性...

    欢迎光临新一期的Real编码研习社,本期我们有幸请到了RealNetworks媒体解决方案架构师罗强,想了解低延时的直播方案如何能兼具可扩展性强和经济高效的特点,今天这一期一定不要错过哦~

     

    一、在您看来,低延时的特性为何对视频直播来说至关重要呢?业内所面临的普遍问题有哪些?

    很多视频直播应用对低延时有着极高的要求。常见的应用场景包括互动直播和视频聊天等。有了低延时特性,就能够保证主播与观众之间的互动能够与当前视频语境实现同步。在视频聊天中,低延时能够保证对话顺利进行,不会出现令人尴尬的停顿。

     

    为避免由实时流媒体服务器所造成的高运维成本,并为广大观众提供可扩展的流媒体服务,业界早已摈弃了传统的RTSPRTMP服务器端流媒体逻辑,转而采用了苹果HLS以及MPEG-DASH这样基于HTTP协议的纯客户端逻辑。

     

    不过,由于现居于主流地位的HLSDASH采用的是基于HTTP的协议,都具有“先分段,后发布,再渐近下载”的特性,因而它们在直播中会出现长时间延迟的问题。在直播中,HLS的延时时长通常为10秒左右或者更长。如何在可扩展且经济高效的前提下提供低延时视频直播服务仍然是流媒体行业一个亟待解决的技术挑战。

     

    二、RealMedia HD在低延时方面具有怎样的优势,并将如何解决以上提到的行业问题呢?

    RealNetworks公司是流媒体领域的领军企业,也是实时流媒体传输协议RTSP的发明者。如今,我们公司一如既往地坚持在视频编解码、流媒体传输和计算机视觉技术等领域进行创新。RealNetworks公司推出的视频直播解决方案兼具低延时、运营成本低廉、优异的服务可扩展性、能够大幅节省码率和视频质量更优的特点,而且在这些优点之间达到了完美的平衡。

     

    首先我们在低延时直播中使用的是RealMedia HD 编解码器。RealMedia HD是我们公司Codec工程团队通过多年的技术积累而自主研发的RealMedia编解码器第11版,具有低复杂度、高编/解码速度、高压缩效率、高视频画质的特点:

     

    ■ RealMedia HD 编解码器采用PBBP帧间依赖方案,具备短时帧间依赖性的特点,因而适合低延时视频应用。

     

    ■ RealMedia HD 是一款在直播编码方面具备速度优势的低计算复杂度编解码器。在质量设置相等的情况下,RealMedia HD 编码速度比VP94倍,比HEVC2倍。在采用GPU加速的英特尔第六代CPU上,RealMedia HD 技术能够针对4K视频进行5Mbps超实时编码,其吞吐帧率远超30 fps。而高速编码/解码是实现低延时流媒体传输的基本要求之一。

     

    ■ RealMedia HD 编码器的压缩效率很高,与HEVCVP9H. 264相比可以节省码率。通过视觉特征主观视频质量评估系统VMAF测量,在视频质量相同的情况下,RealMedia HD 可以比H. 264节省30 %40 %的码率。


    1. 使用RealMedia HD编码的4K视频在不同码率下的对应画质评估 (以VMAF分数衡量)

     

    我们公司研发的RealMedia HD流媒体解决方案为克服HLS直播长延时对HLS协议进行了改进,在直播延时方面可与RTMP相媲美。由于我们的解决方案还保留了HLS基于HTTP的协议,因而也保留了HLS的诸多优点:

     

    ■ 采用无状态的 RealProducer HD转码器和普通的 HTTP 应用服务器就可以直接提供直播服务,因而部署成本和运营成本均较为低廉。

     

    ■ 使用HTTP传送的低延时媒体流可以通过CDN传播,从而使流媒体服务具备了可面向大规模受众的可扩展性。

     

    三、这样的优势会对整个行业生态系统带来什么样的影响?能够给我们的直接客户(在线视频网站、服务运营商等)带来哪些价值呢?

    前文已经强调过,RealNetworks公司研发的直播解决方案在实现低延时的同时还能为合作伙伴和客户带来如下益处:

     

    ■ 易于部署,运营成本低。

     

    ■ 可进行扩展,服务大量直播用户。

     

    ■ RealMedia HD 编码器压缩效率高,可大幅度节省带宽成本。

     

    ■ 为最终用户提供更高画质的流媒体视频。

     

    四、您能否详细介绍一下RealMedia HD是采用怎样的设计来实现低延时流媒体传输的?

    让我们来仔细看看那些影响HLS总体直播延时度的各种因素:

     

    ■ 帧间依赖性(interframe dependency)所导致的编码延时

     

    ■ 为应对峰值编码时间而在代码转换框架中进行的最低限度缓冲

     

    ■ HLS分段生成延时

     

    ■ HLS分段发现延时

     

    ■ 网络延时

     

    ■ 为承受网络带宽波动而进行的客户端缓冲

     

    ■ 帧间依赖性(interframe dependency)导致的解码延时

     

    ■ 为确保流畅播放而进行的渲染缓冲

     

    上述延时因素中,多数是各种类型的直播流媒体方案共有的因素。其中分段生成和分段发现延时是从HLS协议继承而来的。这两个延时因素是HLS直播延时的主要成因。如何消除这两个延时因素一直是我们公司研发的低延时解决方案的重点。

     

    HLS中,编码的直播媒体帧被累加并打包成TS片段。TS片段文件的URL只有在该TS片段生成完毕之后才能发布到播放列表。生成TS片段的过程会导致与该TS片段持续时间相等的延时时长。在HLS中,服务器无法在新的TS片段生成后立即通知客户端,该TS片段已经可用了。因此,客户端别无选择,只能以特定频率轮询的方式重复加载播放列表。这样一来,在TS片段可用之时和客户端开始下载该TS片段之时之间就存在一个时间差。由此导致的片段发现延时时长是随机的,时长可以从很短到与该TS片段持续时间相同。

     

    为消除上述HLS直播延时因素,我们的低延时流媒体解决方案采用了下列技术:

     

    1)流媒体客户端使用模板来生成媒体片段的URL。客户端媒体流下载器(在完成现有媒体片段的下载后)无需查询新的媒体片段的URL就能下载新的媒体片段,从而避免了为了发现媒体片段被迫轮询播放列表而导致的延时。

     

    2)采用边生成边传输的模式,在RealProducer HD转码器生成直播部分片段的同时,源端的HTTP服务器采用HTTP / 1.1协议中的分块传输编码(Chunked transfer encoding)对该直播部分片段进行传输,这种分块传输部分片段的模式消除了生成媒体片段而导致的延时。

     

    3) RealProducer HD转码器会为源端HTTP服务器预生成未来媒体片段,从而避免了HTTP 404 下载错误。

     

    采用以上机制,我们可以使HLS的直播延时在理论上能与实时流媒体协议RTMP相媲美。

     

    五、根据您在做RealMedia HD低延时直播的经验,您有什么样的建议分享给大家?

    要实现低延时,重要的是对整个流媒体传输系统进行优化。

     

    1) 对于上述有关延时的因素与环节,我们需要一一进行测量并将其影响降到最低。

     

    2) 在直播流传输中,客户端不会保留太多的缓冲数据。为了确保播放流畅,编码器必须采用实时编码配置档次,并尽量保持恒定码率,以避免码流数据在短时间内飙升而造成视频卡顿。

     

    3) 一个先进的直播系统应为用户提供最佳的流媒体播放综合体验。好画质、低码率、高流畅度及低延时是相互矛盾的指标,我们必须对流媒体传输系统进行调整,在流畅播放和低延时、高画质与低码率之间实现较好的平衡。

     

    分割线

     

    罗强

    RealNetworks媒体解决方案架构师,在设计和开发媒体播放引擎、DRM解决方案和流媒体直播系统方面具有丰富的经验。

    瑞哥温馨提示:本文所提及的图表及数据归罗强及RealNetworks所有,未经授权不得转载。

     

    追求卓越永远不会晚,更多精彩即将到来,敬请持续期待!

    展开全文
  • 欢迎光临新一期的Real编码研习社,本期我们有幸请到了RealNetworks媒体解决方案架构师罗强,想了解低延时的直播方案如何能兼具可扩展性强和经济高效的特点,今天这一期一定不要错过哦~ 一、在您看来,低延时的特性...

    欢迎光临新一期的Real编码研习社,本期我们有幸请到了RealNetworks媒体解决方案架构师罗强,想了解低延时的直播方案如何能兼具可扩展性强和经济高效的特点,今天这一期一定不要错过哦~

    一、在您看来,低延时的特性为何对视频直播来说至关重要呢?业内所面临的普遍问题有哪些?

    很多视频直播应用对低延时有着极高的要求。常见的应用场景包括互动直播和视频聊天等。有了低延时特性,就能够保证主播与观众之间的互动能够与当前视频语境实现同步。在视频聊天中,低延时能够保证对话顺利进行,不会出现令人尴尬的停顿。

    为避免由实时流媒体服务器所造成的高运维成本,并为广大观众提供可扩展的流媒体服务,业界早已摈弃了传统的RTSP、RTMP服务器端流媒体逻辑,转而采用了苹果HLS以及MPEG-DASH这样基于HTTP协议的纯客户端逻辑。

    不过,由于现居于主流地位的HLS和DASH采用的是基于HTTP的协议,都具有“先分段,后发布,再渐近下载”的特性,因而它们在直播中会出现长时间延迟的问题。在直播中,HLS的延时时长通常为10秒左右或者更长。如何在可扩展且经济高效的前提下提供低延时视频直播服务仍然是流媒体行业一个亟待解决的技术挑战。

    二、RealMedia HD在低延时方面具有怎样的优势,并将如何解决以上提到的行业问题呢?

    RealNetworks公司是流媒体领域的领军企业,也是实时流媒体传输协议RTSP的发明者。如今,我们公司一如既往地坚持在视频编解码、流媒体传输和计算机视觉技术等领域进行创新。RealNetworks公司推出的视频直播解决方案兼具低延时、运营成本低廉、优异的服务可扩展性、能够大幅节省码率和视频质量更优的特点,而且在这些优点之间达到了完美的平衡。

    首先我们在低延时直播中使用的是RealMedia HD 编×××。RealMedia HD是我们公司Codec工程团队通过多年的技术积累而自主研发的RealMedia编×××第11版,具有低复杂度、高编/解码速度、高压缩效率、高视频画质的特点:

    ■ RealMedia HD 编×××采用PBBP帧间依赖方案,具备短时帧间依赖性的特点,因而适合低延时视频应用。

    ■ RealMedia HD 是一款在直播编码方面具备速度优势的低计算复杂度编×××。在质量设置相等的情况下,RealMedia HD 编码速度比VP9快4倍,比HEVC快2倍。在采用GPU加速的英特尔第六代CPU上,RealMedia HD 技术能够针对4K视频进行5Mbps超实时编码,其吞吐帧率远超30 fps。而高速编码/解码是实现低延时流媒体传输的基本要求之一。

    ■ RealMedia HD 编码器的压缩效率很高,与HEVC、VP9和H. 264相比可以节省码率。通过视觉特征主观视频质量评估系统VMAF测量,在视频质量相同的情况下,RealMedia HD 可以比H. 264节省30 %到40 %的码率。

    可扩展性强且经济高效?RealMedia HD低延时直播方案为你支招
    图1. 使用RealMedia HD编码的4K视频在不同码率下的对应画质评估 (以VMAF分数衡量)

    我们公司研发的RealMedia HD流媒体解决方案为克服HLS直播长延时对HLS协议进行了改进,在直播延时方面可与RTMP相媲美。由于我们的解决方案还保留了HLS基于HTTP的协议,因而也保留了HLS的诸多优点:

    ■ 采用无状态的 RealProducer HD转码器和普通的 HTTP 应用服务器就可以直接提供直播服务,因而部署成本和运营成本均较为低廉。

    ■ 使用HTTP传送的低延时媒体流可以通过CDN传播,从而使流媒体服务具备了可面向大规模受众的可扩展性。

    三、这样的优势会对整个行业生态系统带来什么样的影响?能够给我们的直接客户(在线视频网站、服务运营商等)带来哪些价值呢?

    前文已经强调过,RealNetworks公司研发的直播解决方案在实现低延时的同时还能为合作伙伴和客户带来如下益处:

    ■ 易于部署,运营成本低。

    ■ 可进行扩展,服务大量直播用户。

    ■ RealMedia HD 编码器压缩效率高,可大幅度节省带宽成本。

    ■ 为最终用户提供更高画质的流媒体视频。

    四、您能否详细介绍一下RealMedia HD是采用怎样的设计来实现低延时流媒体传输的?

    让我们来仔细看看那些影响HLS总体直播延时度的各种因素:

    ■ 帧间依赖性(interframe dependency)所导致的编码延时

    ■ 为应对峰值编码时间而在代码转换框架中进行的最低限度缓冲

    ■ HLS分段生成延时

    ■ HLS分段发现延时

    ■ 网络延时

    ■ 为承受网络带宽波动而进行的客户端缓冲

    ■ 帧间依赖性(interframe dependency)导致的解码延时

    ■ 为确保流畅播放而进行的渲染缓冲

    上述延时因素中,多数是各种类型的直播流媒体方案共有的因素。其中分段生成和分段发现延时是从HLS协议继承而来的。这两个延时因素是HLS直播延时的主要成因。如何消除这两个延时因素一直是我们公司研发的低延时解决方案的重点。

    在HLS中,编码的直播媒体帧被累加并打包成TS片段。TS片段文件的URL只有在该TS片段生成完毕之后才能发布到播放列表。生成TS片段的过程会导致与该TS片段持续时间相等的延时时长。在HLS中,服务器无法在新的TS片段生成后立即通知客户端,该TS片段已经可用了。因此,客户端别无选择,只能以特定频率轮询的方式重复加载播放列表。这样一来,在TS片段可用之时和客户端开始下载该TS片段之时之间就存在一个时间差。由此导致的片段发现延时时长是随机的,时长可以从很短到与该TS片段持续时间相同。

    为消除上述HLS直播延时因素,我们的低延时流媒体解决方案采用了下列技术:

    1)流媒体客户端使用模板来生成媒体片段的URL。客户端媒体流下载器(在完成现有媒体片段的下载后)无需查询新的媒体片段的URL就能下载新的媒体片段,从而避免了为了发现媒体片段被迫轮询播放列表而导致的延时。

    2)采用边生成边传输的模式,在RealProducer HD转码器生成直播部分片段的同时,源端的HTTP服务器采用HTTP / 1.1协议中的分块传输编码(Chunked transfer encoding)对该直播部分片段进行传输,这种分块传输部分片段的模式消除了生成媒体片段而导致的延时。

    3) RealProducer HD转码器会为源端HTTP服务器预生成未来媒体片段,从而避免了HTTP 404 下载错误。

    采用以上机制,我们可以使HLS的直播延时在理论上能与实时流媒体协议RTMP相媲美。

    五、根据您在做RealMedia HD低延时直播的经验,您有什么样的建议分享给大家?

    要实现低延时,重要的是对整个流媒体传输系统进行优化。

    1) 对于上述有关延时的因素与环节,我们需要一一进行测量并将其影响降到最低。

    2) 在直播流传输中,客户端不会保留太多的缓冲数据。为了确保播放流畅,编码器必须采用实时编码配置档次,并尽量保持恒定码率,以避免码流数据在短时间内飙升而造成视频卡顿。

    3) 一个先进的直播系统应为用户提供最佳的流媒体播放综合体验。好画质、低码率、高流畅度及低延时是相互矛盾的指标,我们必须对流媒体传输系统进行调整,在流畅播放和低延时、高画质与低码率之间实现较好的平衡。

    分割线

    罗强

    RealNetworks媒体解决方案架构师,在设计和开发媒体播放引擎、DRM解决方案和流媒体直播系统方面具有丰富的经验。

    瑞哥温馨提示:本文所提及的图表及数据归罗强及RealNetworks所有,未经授权不得转载。

    追求卓越永远不会晚,更多精彩即将到来,敬请持续期待!

    转载于:https://blog.51cto.com/13722606/2108482

    展开全文
  • 基于UITableView的界面定制,目标是更快更方便地构建设置界面,特点是易维护、可扩展性强。 使用文档在Github地址:https://github.com/yizzuide/XFSettings 安装 1、通过cocoapods pod 'XFSettings','...
  • 抛弃SDK,采用http的方式封装的极光推送,整个工具体积特别小,并且在项目中可以减少极光jar的冲突及依赖,因为是http请求,所以可扩展性,代码简洁
  • ExpandableListView仿QQ列表点击group上弹置顶效果,非常完美
  • 原代码下载地址:点此下载功能说明:支持多种播放格式,程序运行时,读取程序所在目录下的所有音频文件,随机播放可扩展性强 程序参考:...

    程序界面:2008121708133767.jpg

    原代码下载地址:点此下载
    功能说明:支持多种播放格式,程序运行时,读取程序所在目录下的所有音频文件,随机播放
    可扩展性强

    程序参考:http://www.cnblogs.com/zrx401558287/archive/2008/11/28/1343160.html
    http://blog.csdn.net/baihe_591/archive/2008/06/28/2594041.aspx

    感谢前辈们的无私付出

    展开全文
  • iOS 手势解锁独立控件,可扩展性.zip,ccgesturelock(swift)是一个可定制的手势/模式锁,用于用swift编写的ios。
  • 使用简单,可扩展性强。 可拖动调整位置。 可自定义位置变动规则。 可自定义节点视图。 :package: 安装 npm install rc-org-chart --save yarn add rc-org-chart :hammer: 示例 import OrgChart from 'rc-org-chart'...
  • 今天小编就为大家分享一篇关于简单易扩展可性强的Jquery转盘抽奖程序,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 在IC卡公用电话系统中,在线式公用电话由于其具有保密性高、可扩展性强等特点,已逐渐获得人们的青睐。这种公用电话系统被置于终端和交换机之间,对两者的信号进行调制、解调以及其它的运算,来完成诸如卡验证、终端...
  • 始终固定在网页右侧,简洁大气,实用,适合在绝大多数网页设计之中使用 同时肩有返回网页顶部特效效果 使用方法: 将body中的代码部分拷贝到你网页body结束前即可 (图片、js均采用绝对路径,不会...
  • 在IC卡公用电话系统中,在线式公用电话由于其具有保密性高、可扩展性强等特点,已逐渐获得人们的青睐。这种公用电话系统被置于终端和交换机之间,对两者的信号进行调制、解调以及其它的运算,来完成诸如卡验证、终端...
  • 在IC卡公用电话系统中,在线式公用电话由于其具有保密性高、可扩展性强等特点,已逐渐获得人们的青睐。这种公用电话系统被置于终端和交换机之间,对两者的信号进行调制、解调以及其它的运算,来完成诸如卡验证、...
  • 在前面探秘一和探秘二中,我们已经分享了ZStack的拓扑结构和如何实现超高伸缩的能力。还记得我们在Why ZStack中说的,稳定和灵活是IaaS需要解决的两大问题。今天我们就来揭开ZStack超强灵活的奥秘。 今天...

    在前面探秘一和探秘二中,我们已经分享了ZStack的拓扑结构和如何实现超高可伸缩性的能力。还记得我们在Why ZStack中说的,稳定性和灵活性是IaaS需要解决的两大问题。今天我们就来揭开ZStack超强灵活性的奥秘。

    今天的内容非常的丰富,我们先来看一下什么是灵活性。所谓灵活性无非是三个方面:当需要添加新功能的时候简单方便,不拖泥带水;系统升级轻巧无障碍;IaaS云配置想改就改,无需重头搭建,改动影响仅限于被影响的部分。让我们带着这三个方面的定义来读今天的内容。


    首先让我们看看通常一个自由生长出来的IaaS,它内部各个Components之间的消息传递或者说逻辑关系图吧。


    是不是看起来还行?熟悉IaaS的人应该可以理解。有没有想过当你再增加一个监控,一个计费,一个管理界面的时候,它可就不只是增加三个圈圈这么简单了,这图里的连接线怕是要多上好几倍。而当你需要修改一个圈圈的数据结构和输出结果的时候,你需要更改所有和当前圈圈有联系的其他功能模块的接口。为什么会是这样?这因为在自由生长的IaaS设计之初,功能比较单一,模块很少,所以模块之间的连线简单而清晰,直连的方法最容易实现而且有效。但是当等到项目越变越大,连线越连越多的时候,一切都晚了,到最后就变成就是一个令人恐怖的拓扑结构。


    多说无益,让我们直接来看看ZStack各个模块之间的关系图吧,星型拓扑结构


    每个微服务自然分离,又通过统一的Message Bus来连接。添加新的微服务,就增加一个星型节点和一条连线。是不是很清晰很简单?为什么会怎么简单呢?好像也没有为什么,这就是大自然在灵活性上的应该遵循的规则啊。


    在ZStack里面,微服务的架构又被称为进程内的微服务(In Process Micro Service中文翻译实在拗口啊)。它有如下的特点:

    • 每个服务之间相互独立,通过消息总线连接;

    • 所有的微服务都集合在同一个进程内,也就是我们说的管理节点(Management Node)

    • 因为通过消息总线连接,在不同管理节点上的微服务都可以相互通信(并且相互不知道是不是在相同的管理节点上)

    • 在多管理节点上存在相同的微服务(例如都有管理计算的微服务),最后由哪个管理节点上微服务来处理任务,是由Consistent Hashing Ring选择出来的(这点我们在《ZStack架构探秘二》中有阐述)


    接着让我们来看看ZStack是如何添加一个服务的。有了星型拓扑结构,添加新的微服务就变的简单起来。除了常规的微服务,IaaS的操作最终要落地在管理计算,存储和网络三大资源上。拿计算资源来举例,它有一个计算服务。在计算服务下面存在虚拟化和非虚拟化两种形式,其中虚拟化也可以分为KVM、VMWare、Xen、HyperV等。如果ZStack支持了KVM,也就是说要集成所有KVM的基本功能。另外,相比存储和网络,计算资源的种类是很少的。也就是一个可以工作的IaaS里面会集成很多的服务和具体的功能。面对可能多到数不清的微服务和具体功能,ZStack是怎么来支持的呢?可以用什么方法来保证新添加的功能既方便又不影响现有其他功能呢?ZStack采用了类似Eclipse的插件形式来实现不同的资源的管理。例如ZStack的主存储是存放虚拟机的各种Volume的,从实现上可以有NFS的主存储,iSCSI的主存储或者本地存储。那么就会去针对不同的类型实现对应的插件即可:

    L2的网络也是一样的道理,可以通过Vlan,OpenVSwitch,或者VxLan来实现隔离和连通:


    那具体来说,一个plugin是怎么实现的呢?ZStack的plugin根据所需要的功能可以采用不同的plugin策略:Strategy Plugin或者Oberserver Plugin。简而言之,策略插件会继承父类型的接口然后做具体的实现(例如实现NFS插件);观察者插件,会注册listener到提供注册的地方,当特别的事件发生的时候,注册的lisetener就会被调用,然后在调用中去实现插件的功能(例如在创建VM之前去登记计费。或者如下例所展示的SecurityGroup需要在不同的操作的时候去添加和删除对应的SG规则。)。


    需要指出的是,ZStack的插件非常灵活。它可以编译成独立的JAR文件,由ZStack加载(成为进程内in process的一部分)。删除后,也只是失去了该插件的功能本身,而不会影响其他功能。另外,由于ZStack的服务都是通过Rabbitmq来通信的,也就是我们也支持任何可以和Rabbitmq来通讯的进程外(out-of-process)插件。所以ZStack的插件功能是非常灵活的。用户可以选择任何语言来实现自己的插件。


    ZStack是如何处理错误的?能回滚错误造成的影响吗?由于IaaS管理的是非常复杂而庞大的系统,错误(由于网络,软件甚至硬件导致)发生频率一定不少。一个好的软件系统不仅仅能在一切正常的情况下能够稳定工作,更需要在不稳定的系统中能够提供稳定运行的能力。这就需要完善的容错和纠错的手段,在发生不可预见的系统的错误的时候,能够正确处理。事件回滚是处理由于出错导致的很多临时中间状态(有时候这些中间状态实际上就是系统垃圾)的有效手段。例如当创建VM的操作失败在最后一步,例如Host掉电。那么之前给VM分配的IP地址,根分区文件,数据库记录都应该通过回滚而清理掉。如果不回滚,那么系统中的就会留下很多垃圾,最终导致IaaS资源耗尽。

    ZStack设计了精巧的工作流引擎(Workflow Engine)既用来管理任务执行的顺序,而且不论任务在什么地方出错都会按照原先执行的路径回滚。


    ZStack 工作流引擎有如下特点:

    • 工作流可以用XML文件或者具体编程实现;

    • 每一个工作流都可以回滚错误;

    • 每个工作流还可以包含子工作流用于扩展业务逻辑


    让我们来看看如何通过XML文件来定义ZStack的一组工作流的:



    虽然利用插件系统可以添加新的功能,但是如果我们需要对原有功能进行扩展(这个不可避免,毕竟人的认知是有限的,不能保证原有功能可以支持未来更丰富的参数),可能会改变接口或者是改变原有数据结构中的表单。这种改变导致的问题是,基于原有数据库搭建的IaaS很难迁移和升级。我们可以看到在现有的IaaS系统里,这个方面的问题非常突出。为了解决这个问题,ZStack创造性的发明了一个Tag系统。通常大家认为的Tag系统只是用于给资源打标记做归类。ZStack的Tag系统除了最基本的打标签的功能外,它还可以实现System Tag。System Tag具有两个特殊的功能:

    1. 和插件一起合作可以改变原有系统的行为;

    2. 给资源添加一个新的属性;


    什么是改变原有系统行为。例如在ZStack中,一个Cluster可以挂载多个主存储。在启动VM的时候,用户通常只能选择VM的Zone,Cluster,Host等信息(如果不指定,ZStack会按照预先设计的策略自己选择)。如果用户希望VM被创建到一个特定的主存储,这个时候就可以利用系统System Tag来实现。例如我们可以实现一个特别的系统Tag,并且实现一个插件规定:当我们需要创建的VM被标注该系统Tag,那么这个VM的主存储就会在预先指定的一个主存储(该主存储也会被设置上相同的系统Tag)上创建。在ZStack中,VM可以设定DHCP Hostname。也就是在VM在获取DHCP IP地址的时候,同时也会获取一个系统分配的Hostname。但是由于这个DHCP HOSTNAM 并不是VM网卡的固定属性(因为从物理资源角度,VM NIC的确不应该具有一个Hostname的属性),最后在ZStack中,Hostname的功能也是通过系统Tag来实现的。



    最后我们来谈谈IaaS部署后,满足客户需求变更的问题。前面我们基本上都是在讲怎么能够给IaaS更容易的添加功能的问题。不过判断IaaS是否灵活,还有一个非常非常关键的问题,就是IaaS根据用户的要求配置完成后运行了一段时间,用户发现原有的资源配置需要更改,IaaS能否根据用户的要求改变?这个改变是不是可以通过一两个命令就完成,还是需要重头搭建整个IaaS系统?对于ZStack来说,我们的一大杀手锏就是配置灵活易变。我们暴露了非常全面的API,既有Add/Create Resource的,也有Delete/Destroy Resource的API,还有大量的resource的挂载和卸载的API。可以说用户想改变网络拓扑,如把eth0的设备去掉,或是替换主存储的设备对ZStack来说都是小菜一碟。添加的操作其实影响还好,但是删除的操作可是会造成大面积的影响。比如删除一个host,它的影响只限于这个host上,该host上的VM会被暂时stop掉;而删除一个Cluster,会导致删除这个Cluster上所有的Hosts,卸载主存储,以及相关的VM被删除。而删除L2 Network,则会导致正在使用该L2网络的VM(可能会跨很多的Cluster)被Stop掉。在ZStack中,我们有专门计算和处理由于删除架构中的某个资源而会波及到做哪些操作的Cascade Framework。这个架构说起来其实也很轻巧,你需要构建一个大大的地图,把资源按照相互关系梳理出来。不过很可惜的是,我们没有在别的IaaS系统中发现有如此轻巧的设计,恐怕它们以后也没有办法推出类似的设计了。


    有了这个资源相互影响地图后,当卸载或者删除一个资源的时候,我们就可以轻松的把受影响的资源的处理方法安装顺序调用一遍。


    今天,我们一口气介绍了ZStack的五项独门秘籍,它们可都是为实现超灵活性和可扩展性而量身定做的。他们既独立发挥着作用,又有相互关联。可以说是构成ZStack架构中非常重要的5个环节。通过他们,希望大家对我们的超灵活性有了进一步的了解。我们可是绝不忽悠,是骡子是马大家拉出来遛遛。另外由于微信里的内容都是点到为止,详细内容还请大家移步我们的官网,上面详细阐述了五大秘籍的来龙去脉:


    • In-Process Microservice Architecture: http://zstack.org/blog/microservices.html

    • Plugin System: http://zstack.org/blog/plugin.html

    • WorkFlow Engine: http://zstack.org/blog/workflow.html

    • Tag System: http://zstack.org/blog/tag.html

    • Cascade Framework: http://zstack.org/blog/cascade.html


    展开全文
  • 用于构建现代简单,可扩展性强,依赖性最小的框架 配套 @latest版本 尺寸 描述 :house: 核心 @web3-react/core 界面 :electric_plug: 连接器 浏览器扩展/ dApp浏览器 @web3-react/injected-connector 连接器 ...
  • 一、简介树形控件在多列列表、多级菜单中使用...现在在这里开源一个自己写的高扩展性,高复用性的IOS树形结构控件。支持无限极树形结构。使用的是非递归方式。代码简单易懂,扩展方便。图片演示如下: 二、使用
  • ThreadPoolExecutor 可扩展性

    千次阅读 2010-08-03 09:37:00
    ThreadPoolExecutor 具有很可扩展性,不过扩展它的前提是要熟悉它的工作方式。后面的文章将会介绍如何扩展 ThreadPoolExecutor 类。   java.util.concurrent.ThreadPoolExecutor 类提供了丰富的可扩展性...
  • 1. 可扩展性 增加系统容量的模型有以下两种。 (1) 水平扩展 即在现有的系统中增加新的机器节点 (2) 垂直扩展 不增加新的机器节点,而是提升现有机器的性能,如增加内存 2. 一致性 一致性 弱一致性 最终一致性 顺序...
  • 2010年,苹果公司iPhone和智能手机等新型移动产品、低成本笔记本、上网本的推出,大大扩展了无线数据的用途。因此,市场对增强型服务的需求不断攀升,促使大批用户从简单的语音设备需求向丰富媒体和位置感知服务方向...
  • 代码如下:   <!DOCTYPE ... ...效果很简单,我相信许多人也可以写出来,但是这个与一般的代码最大的不同在于它的可扩展性很强大!
  • 功能全面,功能根据自行需求进行增删改查,代码清晰简介,兼容所有浏览器,一贯原则资源免几分下载,如有建议欢迎反馈
  • 还有个有意思的app,关于创维的一个app,它安装以后,可以通过安装扩展app,进行功能的扩展(并且有意思的是,扩展app没有显示图标)。然后,我对它的扩展安装包进行了下反编译以后,发现它没有写入口,但是相关的...
  • Lucene代码拥有很扩展性,很多的关键代码都提供了用户自定义方式,可以根据特定的场景自定义处理方式,这篇文章就探讨一下lucene在数据写入过程中有哪些可扩展的地方。 下面是lucene数据写入的代码: 自定义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,532
精华内容 3,412
关键字:

可扩展性强