腾讯自研交换机标准化之路:S³IP实践

前言

    云业务高速发展,数据中心网络基础设施的规模也随之爆发式增长,为了应对海量设备在质量、效率、成本方面带来的诸多挑战,腾讯于2018年启动了自研交换机项目。自研交换机采用“白盒硬件”加“自研NOS”模式,通过硬件方面严格把控设计,软件方面基于开源SONiC(Software for Open Networking in the Cloud)深度自研的TCSOS(Tencent Cloud Switch Operating System),从2019年在25G数据中心首次批量部署,到如今在基础网络所有重要网络场景中落地,为我们打造高性能、高可靠、智能化的自主可控网络业务系统提供了稳定的基座。

    腾讯自研交换机团队在享受开源开放生态红利的同时,也发现了早期SONiC生态缺少平台相关软硬件标准规范的短板,这一短板严重影响我们与ODM厂商的协作效率、软硬件交付质量以及产品升级演进。在此背景下,自研交换机标准化工作被提上日程。

自研交换机痛点及解决之道

    腾讯自研交换机主要采用ODM联合开发模式,ODM厂商负责提供白盒交换机硬件和BSP驱动,腾讯自研团队负责审核硬件设计和开发上层NOS软件。这种合作模式理论上可以让双方更聚焦于各自擅长的领域,提升开发效率和系统质量。但是由于合作标准规范的缺失,我们在项目实际开展过程中遇到了诸多困难,而这些困难也是白盒交换机行业共有的痛点。

1.1 痛点1 没有统一的硬件驱动接口规范(sysfs)

    Sysfs是应用访问硬件信息的入口,在S³IP sysfs规范制定之前,白盒交换机用户都有自己的sysfs标准,但是这些标准并不统一。为满足不同用户对硬件访问的定制化需求,ODM厂商需要对sysfs标准逐个适配,形成了各自独立的“烟囱”,最终造成烟囱林立的局面。

图1 推出S³IP sysfs规范前“烟囱林立”的局面

    与ODM厂商联合开发遇到的问题包括:

1)  协作效率低。体现在合作厂商众多,又没有统一的驱动接口规范,随着产品演进,新的ODM厂商加入,驱动接口更新,以及验收用例增加,导致频繁沟通、适配和系统集成。低效的环节多,系统集成周期长,严重影响产品交付的及时性。

2)  BSP软件故障率高。体现在厂商为满足不同用户的驱动规范需求,会分别成立项目团队维护。由于代码不共用,已经解决的驱动问题,在我们设备上需要投入资源重复解决,容易造成遗漏,影响产品质量。

1.2 痛点2 各家产品硬件设计差异大,增加测试、运维工作量

    硬件是白盒交换机产品的底座,硬件设计不仅影响产品的质量和成本,同时也是产品开发和运维效率提升的关键因素。腾讯早期的自研交换机产品,因为缺少统一的硬件规范,在适配和使用过程中都碰到了一些问题。

    以出问题较多的CPU控制模组为例,早期使用厂家私有模组,不同厂家模组的形态、功能、接口差异很大,所以在软件适配多厂家产品时,需要重复投入很大的开发、测试人力,且不同厂家的模组通常会出现不同的质量问题,导致线上问题收敛速度较慢。后来随着白盒规范化需求的增加,COM-Express控制模组逐渐成为了自研产品的首选,但是COM-Express在使用中也暴露出了一些问题:

1)COM-Express规范面向工控类产品,无法很好的适配白盒交换机系统需求,而且规范对于系统运维类的功能定义有所缺失,导致最终用户通常都需要对模组进行二次定制开发;

2)COM-Express模组受连接器限制,供电能力和高速Serdes支持方面均无法满足下一代交换机产品需求。

    为了解决上述问题,同时促进白盒交换机硬件生态的进一步发展,我们需要定义一套全新的控制模组标准,保留适当灵活性的同时减少通用组件的硬件设计差异,实现开发成本的降低和产品质量的提升,而统一的组件也有利于产品后期运维。

图2 控制模组发展历程

1.3 痛点3 没有统一的验收平台

    自研交换机在交付现网前,需要在硬件生产、软件研发、整机交付等不同场景运行不同的测试验收用例,来保证自研交换机的可用性。在S³IP项目成立之前,SONiC社区缺少这样的测试验收平台,也缺少测试用例集合。我们需要构建私有的测试验收平台,并积累测试用例,来检测硬件批次问题和硬件单体故障,这个工作对我们有很大的挑战。

1.4 解决之道-S³IP标准化

    我们联合运营商、互联网自研交换机团队,协同众多ODM厂商、芯片厂商发起了S³IP项目(Simplified Switch System Integration Program,简化交换机系统集成项目),该项目为ODCC的子项目,旨在解决交换机上层软件和底层设备集成过程中的共性问题。针对上述痛点,制定了一系列规范以提升白盒交换机软硬件的交付质量和效率。规范包括:

《S3IP Sysfs规范》:规范了平台硬件管理接口。sysfs规范目的是,构建统一的硬件抽象层(对上统一硬件服务),屏蔽不同硬件平台的差异,确保硬件监控应用和驱动的可移植性。

《S³IP-OCM硬件规范》:规范了硬件组件接口。OCM规范致力于白盒交换机控制模组的标准化,作为交换机的控制核心,控制模组对于系统的稳定性、集成效率和现场运维有着非常大的影响。

《PIT(platform integration test)规范》:提供统一的测试验收规范。ODM厂商在白盒设备生产时,以及最终用户在使用时,通过这套验收规范,能筛选出问题设备。PIT规范屏蔽了生产过程和物料导致的设备差异,使用统一的测试验收规范,确保设备交付质量。

图3 S³IP规范组成

    S³IP是首个由国内公司联合发起的数据中心交换机软硬件标准规范的开源组织,通过软硬件规范的推广,让需求方能够更聚焦于需求应用,供给方能够更有的放矢,推动白盒生态良性发展。腾讯作为S³IP发起者之一,主导制定了Sysfs规范,深度参与制定了OCM硬件规范和PIT规范。

腾讯实践S³IP规范

2.1 S³IP sysfs规范落地效果

    截至2022年9月,符合S³IP Sysfs规范的自研交换机已在腾讯DCN、DCI、可编程网关等场景规模化部署。

图4 腾讯数据中心网络架构

    白盒交换机在S³IP sysfs规范落地后有如下亮点:

1)  硬件信息规范化,为智能化识别/预测硬件故障铺平了道路。腾讯自研交换机有丰富的产品系列,这些自研交换机的硬件拓扑虽然不同,但都呈现出S³IP sysfs规范要求的目录结构。通过这些目录和文件,很容易获取硬件信息。下图为不同厂商适配S³IP sysfs后的效果。

图5 设备适配S³IP sysfs规范的效果

    适配S³IP sysfs规范后,硬件数据有格式化的目录结构,非常便于导入数据库并进行深度处理。我们通过分析历史故障的数据特征,很容易实现现网硬件故障的识别和预判。

2)  大幅降低BSP软件故障率。过去一年的现网运营数据与以往数据对比,发现BSP软件的故障率大幅度降低。ODM厂商一般会对接多个白盒交换机用户,这些白盒交换机用户大多是S³IP联盟成员,而联盟成员都遵循相同的驱动接口规范。这样ODM厂商的驱动代码可以复用,故障解决的经验可以积累,产品交付质量可以不断提升,BSP软件故障率下降成为必然。

3)  显著提升协作效率。主要体现在降低了沟通成本,缩短了开发周期。腾讯新引入了多家S³IP联盟内的ODM厂商,这些ODM厂商都遵循S³IP软硬件规范,显著降低了沟通成本。新设备适配时间明显缩短,TCS84和TCS94设备从BSP适配到BSP稳定运行的周期,比上一代产品缩短了2个月。

2.2 S³IP OCM硬件规范的落地

    OCM规范以交换机系统需求为出发点,从组件、功能、接口、工程等多角度对控制模组的设计进行了详细阐述,并给出了应用示例。该规范具有如下特点:

1)为交换机产品量身定制,满足应用和扩展需求的同时,尽量保持精简;

2)细化各领域设计要求,让厂家更清晰的了解设计要点,减少歧义,最终实现多厂家接口和功能的统一;

3)结合系统运维需求痛点,模组支持运行状态监控、固件热升级、关键部件现场可更换等重要特性;

图6 OCM规范定义

    腾讯自研的OCM控制模组是跟随规范同步设计开发的,已应用在最新发布的CPO交换机上,同时也计划应用在未来新的自研交换机产品上。

图7 OCM模组规格及应用

腾讯积极回馈行业生态

    腾讯自研交换机团队希望通过S³IP项目,推动白盒交换机开放、开源、标准化,简化交换机的系统集成,加速白盒交换机的发展。经过一年半的实践,白盒交换机软硬件标准化的目标也逐渐达成。

    S³IP规范是业界第一个数据中心网络相关的软硬件规范,腾讯贡献的OCM规范和Sysfs规范在国内已经是事实的规范。这些规范在S³IP生态中取得了如下成果:

1)  S³IP用户成员,包括中国移动、阿里巴巴、百度、腾讯、美团、快手、京东等,全都采用S³IP sysfs标准,将其作为自研交换机规格说明书的一部分。

图8 S³IP用户组成员

2)  S³IP的厂商组,都实现了白盒硬件适配S³IP sysfs的驱动,并经过S³IP项目的验收。

    腾讯为了加速S³IP sysfs规范落地,开发了S³IP sysfs框架,并向S³IP联盟成员开源,同时我们也积极将S³IP成果反馈到SONiC社区,丰富SONiC社区功能,促进白盒交换机行业发展,实现共赢。

►►►

总结与展望

    2022年9月7日S³IP发布会在北京国际会展中心隆重举行,腾讯网络和数据中心总经理邹贤能受邀做开场发言,“S³IP项目从2020年立项以来,在项目组的共同努力下,获得快速发展并取得可喜的成绩。作为项目的联合发起者,腾讯既是贡献者也是受益者,在最新一代自研100G数据中心交换机上,我们成功的实现了S³IP规范的落地,也期待S³IP项目在未来继续成长,持续扩大影响力。让我们一起推动数据中心和网络产业更快速的发展。”

    S³IP规范正吸引白盒交换机用户和ODM厂商加入联盟。我们相信S³IP规范有潜力成为全球数据中心的通用规范。腾讯作为S³IP创始成员,将秉承开放开源的思路,积极参与白盒交换机标准化工作,推动数据中心和网络产业更快速地发展。

欢迎关注公众账号“鹅厂网事”,我们给你提供最新的行业动态信息、腾讯网络最接地气的干货分享。

注1:凡注明来自“鹅厂网事”的文字和图片等作品,版权均属于“深圳市腾讯计算机系统有限公司”所有,未经官方授权,不得使用,如有违反,一经查实,将保留追究权利;

注2:本文图片部分来自互联网,如涉及相关版权问题,请联系:sandyshuang@tencent.com或 mianyang@tencent.com

/

/

鹅厂网事/

分享鹅厂网络的那些事

本文转载于网络 如有侵权请联系删除

相关文章

  • 为什么说Kubernetes是新的应用服务器

    本文最初发表于RedHat开发者博客,经原作者RafaelBenevides授权由InfoQ中文站翻译分享。你是否想过我们为什么要使用容器部署多平台应用呢?难道这仅仅是“跟风”吗?在本文中,我将提出一些有挑战性的问题,以佐证我的观点,那就是为什么说Kubernetes是新的应用服务器。你可能已经注意到了,大多数的语言都是要经过“解释(interpret)”的,并且使用“运行时”来执行源码。在理论上,大多数的Node.js、Python和Ruby代码可以很容易地从一个平台(Windows、Mac、Linux)转换到另一个平台。Java应用则更进一步,它将编译后的Java类转换成了字节码,能够在任何具有JVM(Java虚拟机)的地方运行。 Java生态系统提供了标准的格式来分发同一个应用中的所有Java类。我们可以将这些类打包为JAR(JavaArchive)、WAR(WebArchive)以及EAR(EnterpriseArchive),在这些格式中包含了前端、后端以及嵌入其中的库。那么我就要问了:你为什么要使用容器来分发Java应用呢?难道它不是已经支持很便利地在不同环境间迁移了吗?站

  • Linux命令之将终端的输出「披上彩虹」

    前言不管是普通的echo还是系统命令,管道到lolcat时都会被穿上彩虹衣服~安装[root@iZo7e61fz42ik0Zgame]#yum-yinstallruby [root@iZo7e61fz42ik0Zgame]#ruby--version ruby2.0.0p648(2015-12-16)[x86_64-linux] [root@iZo7e61fz42ik0Zgame]#wgethttps://github.com/busyloop/lolcat/archive/master.zip [root@iZo7e61fz42ik0Zgame]#yum-yinstallunzip [root@iZo7e61fz42ik0Zgame]#unzipmaster.zip [root@iZo7e61fz42ik0Zgame]#cdlolcat-master/ [root@iZo7e61fz42ik0Zlolcat-master]#geminstalllolcat [root@iZo7e61fz42ik0Zlolcat-master]#lolcat--version lolcat99.9.2

  • Android 11 WiFi扫描流程梳理

    上一篇我们梳理了WiFi的开启流程,Android11WiFi开启流程,在最后我们说到ActiveModeWarden中注册了ClientListener监听器。我们接着这个逻辑继续梳理一下打开WiFi以后的扫描流程。一、WiFi打开以后,ClientListener会监听到,这时候会更新扫描状态。 frameworks/opt/net/wifi/service/java/com/android/server/wifi/ActiveModeWarden.javaprivateclassClientListenerextendsModeCallbackimplementsActiveModeManager.Listener{ @Override publicvoidonStarted(){ updateClientScanMode(); updateBatteryStats(); }复制在这里enable扫描privatevoidupdateClientScanMode(){ booleanscanEnabled=hasAnyClientModeManager(); booleansca

  • 20.Quick QML-Flickable滑动窗口

    Flickable元素继承于item元素,是一个不可视元素,它的作用是将一个较大的子项目设置在一个较小的窗口上,使得子项目的视图可以滚动。 Flickable不会自动剪裁它的内容,如果不是将它用作全屏项目,则应考虑将clip属性设置为true来隐藏超出区域的内容。 并且放置在Flickable里面的项使用anchor锚布局时,不能用id来复制,而只能用parent代替。示例用法 以下示例显示了大图像上的小视图,用户可以在其中拖动或滑动图像以查看图像的不同部分。Window{ visible:true; width:400 height:300 Flickable{ anchors.fill:parent contentWidth:image.width;contentHeight:image.height Image{ id:image asynchronous:true//异步加载,默认为false,如果是加载网络资源(例如HTTP)的图像,那么必须为true source:"http://images.cnblogs.com/cnblogs_com/lifexy/11

  • SpringBoot 启动报 No bean named ‘org.springframework.context.annotation.ConfigurationClassPostProcessor

    maven重新清除编译文件,执行cleanmaven重新编译,执行compile期间报错,com.sun.xml.internal.messaging.saaj.util包不存在需要重新配置一下pom.xml<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <compilerArguments> <bootclasspath>C:\ProgramFiles\Java\jdk1.8.0_202\jre\lib\rt.jar</bootclasspath> </compilerArguments> </configuration> </plugi

  • 挖洞经验 | Google Play Core Library中的代码执行漏洞

    年初2月,Oversecured公司就利用该系统探测发现了谷歌GooglePlayCoreLibrary核心库中的一个高危代码执行漏洞,漏洞影响所有依赖调用该库的APP应用程序,攻击者可通过向受害者手机中植入恶意APP应用,然后利用该漏洞窃取用户隐私数据。漏洞介绍GooglePlayCoreLibrary是针对安卓系统的一个主流应用库,该库可通过GoogleAPI接口在后台动态向用户APP应用实现推送更新、优化存储、自适应调整等功能。Oversecured公司发现GooglePlayCoreLibrary中存在的该漏洞,允许攻击者在APP应用中添加运行模块并在其中实现代码执行,最终将可成功窃取受害者手机中的登录凭据、交易信息、电子邮件等敏感信息。安全公司Oversecured负责内核安全扫描的专家通过测试了多款主流APP应用后发现,安卓原生态中的谷歌GooglePlayCorelibrary源码中存在任意文件窃取和任意文件覆盖两个严重安全问题。以下为该两个漏洞问题的源码出处:根据上述发现,Oversecured专家对漏洞可能的攻击范围展开了调查,并及时上报了谷歌。在后续的分析中,Ove

  • 开源日志框架的原理与分析(下)

    本章内容根据《分布式服务架构》整理日志系统的优化和最佳实践 -开发中打印日志的最佳时机-日志级别的设置-日志的数量和大小-日志的切割方式-日志格式的配置-线上事故案例1.开发人员的日志意识#开发代码时要有意识的设想代码出现问题时的场景,针对场景记录关键程序的运行信息,容易定位问题#打印日志必须包含环境信息,例如用户ID,角色,参数等#对异常等错误信息必须打印错误级别及以上的日志,对线上日志定期检查#生产环境将关闭的日志必须在打印日志前进行判断,以此提高效率、#必须使用占位符代替字符串链接#对关键业务步骤必须打点并记录耗时和结果2.日志级别的设置 线上应用info就够了*QA测试环境可以使用debug及以下级别*刚刚上线的项目可使用debug级别*上线后稳定的应用使用info级别*常年不出现问题的应用使用error级别 3.日志数量和大小控制日志的输出量,避免由于业务上量导致服务器磁盘占满。单条打印日志不超过1KB遇到连续的大日志是可采取抛弃的策略4.切割方式catapp.log>app.`date''+%Y-%m-%d'`.logcat/dev/nu

  • 免疫分子分型发一区5.3分杂志?这个思路值得借鉴!

    今天分享的是发表于老牌杂志ONCOIMMUNOLOGY的一篇文章,该杂志影响因子5.3,中科院分区一区。文章标题为Twoimmune-enhancedmolecularsubtypesdifferininflammation,checkpointsignalingandoutcomeofadvancedheadandnecksquamouscellcarcinoma,这里用到的免疫方面的分析值得借鉴。术语•HNSCC(headandnecksquamouscellcarcinoma)头颈部鳞状细胞癌•ConsensusCluster一致性聚类•nearest-centroidclassifier最近质心分类1研究思路•数据来源:TCGA-HNSCC和GSE65858(LHNGcohort)•基于1703个免疫相关基因对HNSCC进行亚型的划分•对分类亚型进行免疫概况(免疫细胞和免疫检查点)的展示•在验证集(LHNGcohort)用最近质心分类分成同样的4类后进行相同的分析•在测试集和验证集进行非免疫基质细胞和炎症趋化因子表达的分析•对4个亚型进行预后的分析(生存分析)2结果2.1划分亚

  • JSP/Servlet Web 学习笔记 DayTwo

    JSP指令  a)page指令   定义JSP文件中的全局属性、一个JSP页面可以包含多个page指令、除了Import以外,其他page指令定义的属性/值只能出现一次。   其详细语法为:<%page [language="java"] [extends="package.class"] [import="{package.class|package.*},……"] [session="true|false"] [buffer="none|8kb|sizekb"] [autoFlush="true|false"] [isThreadSafe="true|false"] [info="text"] [errorPage="relativeURL"] [contentType="mineType[;charset=characterSet]"|"text/html;chars

  • 深入浅出系统设计面试——Design Twitter Timeline

    如何design一个Twitter类型的系统,尤其是其中的timeline/tweets的部分,这是很多朋友都会在面试中遇到的问题,包子君今天与大家快速分享一下。首先,Twitter绝对不是我们能在45分钟之内design出来的,除非你是Twitter的人出去面试……所以主要就是聊聊难点在哪里。HomeTimeline社交类产品的一个最重要的feature就是hometimeline,不管是微博、朋友圈、Facebook、Twitter,只要你关注的人发了一条新消息,你的homepage就应该快速更新显示。当然,最naive的方案大家都能猜到:把消息存储设计成一个大database,每次用户刷新时就一堆table互相join来join去,然后select+index.但是你马上会发现当有大量用户同时刷新、或有大V发一条消息的时候,事情就变得比较微妙了,那么解决方案是什么呢?下面的分析来自与2012年Raffi大神关于twitter设计的公开视频,点击“阅读原文”可查看youtube视频,还有包子君的大连话版的leetcode讲解哟。社交产品的一个重要特点就是consumptionhea

  • 7年前的技术就已经是这个程度

    第六感技术的惊异潜力https://www.ted.com/talks/pranav_mistry_the_thrilling_potential_of_sixthsense_technology/transcript?language=zh-cn#t-217688PranavMistry讲了好多他的创新产品: 在便利贴上写给我妈妈的留言纸条,可以用简讯传递 一枝可以画3D效果的笔 一个实体世界的Google地图,把登机证放在地图上,它会显示登机口的位置放咖啡杯,它会显示咖啡厅的位置,或垃圾筒的位置这些产品把实体的东西带进数字环境里,让计算机接口更人性化。这已经很高效了,但是他的研究还没有止步。 继续探索,把数字世界的数字信息,描画在实体世界里:第六感计算装置这技术最有趣的地方是,你可以把数字世界带着走,到任何地方都可以。你可以用任何表面或墙壁当成界面,这录像机随时都在侦测你的动作。比如,可以带到户外去用,不必掏出口袋里的照相机,只要一个照相的姿势它就替你照相了,拍完之后,我随便找一面墙,就开始浏览这些照片或,"我想修改一下这些照片,然后用电子邮件寄给朋友。比如,看一本书时,

  • vscode插件开发入门

    导读:如果你是一名vscode使用者,一定会安装了很多插件来为平时开发进行提效,是否有时候发现插件并不能满足自身的需求,此时就需要自己开发一款插件来完成的诉求。本篇文章通过简单的插件开发为你拉开序幕,让你从中了解插件开发流程和插件本身能力范围。vscode插件能做什么在我们日常使用中,会安装很多插件,如:主题、Prettier、codesnippets、Eslint、JestRunner、Git等等。每种插件都能解决我们实际开发中的某一块诉求。我把所有的插件大致归为三类:UX/UI类、语言类、工具类UX/UI类(主题插件、预览插件等)UX类插件主要用于增强用户交互行为,通过新增工作台、扩展工作台或对工作台添加自定义组件和视图。主要集中在以下的更改:自定义上下文菜单操作,如:平时我们右键的菜单栏在侧边栏创建自定义交互,如:npm插件安装后在资源管理中-主侧边栏添加了一个npm操作视图定义一个新的活动栏视图,如:Git插件安装后左侧活动栏中的图标在状态栏中显示自定义信息,如:Git插件安装后显示当前分支使用webview自定义内容,如:markdown预览插件提供预览的视图UI类插件主要用

  • 这个txt文档每章后面都有个这个特殊字符,如何提取出来删除掉?

    林卧愁春尽,搴帷览物华。 大家好,我是Python进阶者。一、前言前几天在Python白银交流群【Python狗】问了一个Python正则表达式处理的问题,提问截图如下:如果我是他的话,我会直接一步到位,使用notepad++打开文件,然后调出替换界面,全部替换即可,不需要代码实现也欧克的。不过这里使用Python的方式进行实现,一起来看看吧!二、实现过程这里【瑜亮老师】给了一份代码,如下所示:importre filename='西游记全集(吴承恩).txt' withopen(filename,'r',encoding='gbk')asf: data=f.read() result=re.sub(r'\#.*?\#','',data) withopen(filename,'w',encoding='gbk')asf2: f2.write(result) 复制代码截图:如果仅仅是粉丝截图发的那些需要替换的话,上面的代码是完全可以满足需求的,不

  • 关于阿里巴巴大数据及 AI 实战

    今天跟大家分享的是关于阿里巴巴大数据及AI实战,下拉文末获取完整文档 解密淘宝推荐实战,打造“比你还懂你”的个性化APP 优酷背后的大数据秘密 阿里集团风控大脑关于大数据应用的探索与实践 可闭环、可沉淀、可持续的企业级数据赋能体系——友盟云数据中台产品实践 MaxCompute在高德大数据上的应用 MaxCompute在阿里妈妈数据字化营销解决方案上的典型应用 实时计算助力1688打造「实时挑货」系统 实时计算在「阿里影业实时报表业务」技术解读 点击链接获取完整文档 链接:https://pan.baidu.com/s/12f9BXtzVuw3gQpjLauJACg 提取码:782o

  • Eclipse4.15下安装配置Tomcat9.0插件,及Tomcat插件的使用

    Eclipse、Tomcat的安装看之前的博客,这里只介绍插件安装和配置以及插件的使用。 1.安装Tomcat插件  1.1打开Eclipse4.15界面,选择菜单Help-----   ,弹窗如下图,在Work with内添加地址:http://tomcatplugin.sf.net/update,点击Add...加载完毕后,会出现Tomcat Plugin,然后选择Tomcat Plugin,如下图,点击Next   1.2如下图,继续点击Next 1.3如下图,选择I accept....,点击Finish   1.4 如下图中选择红框内的内容,点击Accept selected         1.5等待几秒钟插件安装完毕,弹出如下窗口,选择Restart Now       1.6 继续等待几秒以后,重启后的Eclipse界面中就可以看见Tomcat插件

  • HDFS分布式文件系统(大数据)

      文件系统概述 文件系统概述 HDFS架构 HDFS体系结构(1) HDFS体系结构(2) NameNode和DataNode 数据块 安全模式 文件安全性 文件权限 HDFS中的数据写入流程 HDFS中的数据读取流程 HDFS关键特性 HDFS高可用性 HDFS元数据持久化 HDFS联邦 HDFS视图文件系统 HDFS机架感知策略 HDFS集中式缓存管理 HDFS集中式缓存架构 配置HDFS数据存储策略(1) 配置HDFS数据存储策略(2) HDFS同分布 HDFS操作 ZooKeeper体系结构 ZooKeeper读机制 ZooKeeper写机制 ZooKeeper关键特性 ZooKeeper命令行操作 本章首先介绍了基本的文件系统组成,并以Linux为例阐述了文件系统的相关概念。 其次对HDFS的概念及应用场景进行了介绍,分析了HDFS的基本架构原理、数据流及关键特性。 最后介绍了为HDFS集群的高可用提供分布式协调服务的ZooKeeper组件,并介绍了其关键特性及在其他组件中的应用场景。   文件系统概述 文件系统是一种存储和组织计算机

  • BAT 批处理脚本 教程

    转载自:http://www.cnblogs.com/glaivelee/archive/2009/10/07/1578737.html   第一章批处理基础第一节常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。 了解了大概意思后,我们正式开始学习.先看一个简单的例子!@echooffecho"欢迎来到非常BAT!"pause 把上面的3条命令保存为文件test.bat或者test.cmd然后执行,他就会在屏幕上显示以下二行话:欢迎来到非常BAT!请按任意键继续... 这就是一个简单批处理文件了,这个批处理文件一共就用了2条命令"echo"和"pause"还有一个特殊符号"@"从上面这个简单的批处理中,我们可以发现其实批处理就是运用一些含有特殊意义的符号和一些完成指定功能的命令组合而成,那么在批处理中有多少这样的特殊符号和功能命令呢?我们现在就来仔细了解一下一些最常用的! (以下内容来源网络,

  • python08

    一.今日主要内容 文件操作:1.r2.w3.a4.r+读写模式5.w+6.a+7.bbytes读写操作的是字节,用在非文本上 8.seek()移动光标到xx位置上,开头:seek(0),末尾:seek(0,2) 9.文件修改:创建新的文件,把修改后的内容写入新文件.删除老文件.重命名新文件 importos os.remove("") 删除文件 os.rename("源文件","新文件名") 重命名文件 forlineinf: line 一行数据 withopen("文件名")asf: 不需要关闭文件句柄 万恶之源-文件操作 本节主要内容: 1. 初识文件操作 2. 只读(r,rb) 3. 只写(w,wb) 4. 追加(a,ab) 5. r+读写 6. w+写读 7. a+写读(追加写读) 8. 其他操作方法 9.文件的修改以及另一种打开文件句柄的方式 主要内容: 一.初识文件操作 使用python来读写文件是非常简单的操作.我们使用open() 函数来打开一个文件,获取到文 件句柄.然后通过文件句柄就可以进行各种各样的操作了.根据打开方式的不同能够执行的操 作也会有相应的差异. 打开

  • Codeforces Round #455 (Div. 2) 909D. Colorful Points

    题   OvO http://codeforces.com/contest/909/problem/D   CF455div2D   CF909D 解   算出模拟的复杂度之后就是一个很水的模拟题   把字符串按照类似于行程编码的方式来表示,例如把aaaabbccc表示成[4*a][2*b][3*c]这样的形式([4*a]这个用一个结构体表示)   接下去就可以开心地敲模拟了,   例如对于 [5*a][4*b][2*c][4*b] 这样一个表,   运行一次之后就变成了  [4*a][2*b][0*c][3*b]   然后进行压缩变成[4*a][5*b]   重点是复杂度的计算,每当你进行一次 O(1) 的操作(遍历数组,删除元素)时候,元素的总量(按aabbc是5个元素这样算)也会减1,所以总的复杂度是 O(n) 的,并不会超时   #include<iostream> #include<cstring> #include<cstdio> #in

  • 《把时间当作朋友》-读后感

    值得回味的内容 1.有那么多的人在不停地寻找更好的方法,是件非常可笑却又不得不令人扼腕叹息的事情,与其不停地找更好的方法,还不如马上开始行动,省得虚度更多地时间。 2.电视广告告诉你所有的减肥药都有神奇的功效,当天开始见效。报纸上的医疗广告告诉你无论得了什么病都不要怕,找他——手到病除。各种培训班告诉你不管学什么都要速成,因为人生苦短。有一种防身术学习班期期火爆,看看它的名称就知道为什么这么火爆了——“一招制敌”! 3.“心智开启”的起点是“意识到可以自律”,而心智发展的过程就是克服懒惰的过程。 4.失败只有一种,就是半途而废 5.我们一生做的事,大多都是一个试错(trialanderror)的过程,对于人生,没有人能像解释数学那样给出普适的公式。永远记住,马上行动是最重要的。 6.所谓优秀的领导,能够把人们带到他们想去的地方;而所谓卓越的领导,能够把人们带到他们应该去的但是没想到过要去的地方。 7.很多人正是因为没有目标才不停地‘学习’ 8.见识越少的人越喜欢用自己所有的见识作为判断依据,并且完全不顾自己见识的局限,也不知道自己的见识有局限。 9.“拒绝学习”其实是个死结:第一,因为

  • 面向对象编程,走迷宫

    建立maze.js,mazespace.js,robot.js 界面逻辑写在robotmazeinterface.js   "usestrict";//maze.js functionMaze(width,height){ this.width=width; this.height=height; this.startX=null; this.startY=null; this.startOrientation=null; this.endX=null; this.endY=null; this.directions=["north","east","south","west"]; this.spaces=[]; for(varx=1;x<=width;x++){ this.spaces[x]=[]; for(vary=1;y<=height;y++){ this.spaces[x][y]=newMazeSpace(this.directions); } } } Maze.prototype.setStart=function(x,y,orientati

相关推荐

推荐阅读