腾讯开源之道:基于Apache之道的开源实践与探索
2021-08-06 15:06:09作为开源界备受关注的会议之一,今年的ApacheCon Asia将持续3天,开设14+分论坛,内容覆盖从大数据到搜索再到消息队列等数十个不同类别。
作为开源界备受关注的会议之一,今年的ApacheCon Asia将持续3天,开设14+分论坛,内容覆盖从大数据到搜索再到消息队列等数十个不同类别。
Apache 软件基金会成立于 1999 年,迄今为止其管理着 2.27 亿多行代码,有着206个项目管理委员会,通过精英制领导了350多个 Apache 项目和计划,有超过8,100+提交者。
从最初的“Apache小组”到如今成长为世界上最大的开源基金会之一,Apache通过其领导力、健全的社区、以及精英主义思路,铸就了著名的“Apache之道”(Apache Way),形成了一套推进开源社区可持续发展、指导开源项目实践的方法论。
腾讯开源自2010年起开始正式萌芽,在11年的发展历程中,腾讯大批工程师通过参与、应用和贡献等方式与Apache社区深度联结,并基于Apache之道,践行着腾讯的开源之道。

腾讯与Apache开源社区也持续深入合作,成为多个Apache项目的活跃贡献者,以及国内首家Apache白金会员,并推动Apache基金会在开源领域的创新。目前,除了在Hadoop、Spark等众多项目中担任Committer外,腾讯的内部团队还基于Apache中的如InLong、Ozone、Pulsar等项目实现了对业务的支撑和赋能,并形成了一套最佳实践。
Apache 之道对社区的重要指导
Apache之道是很难定义的,尽管Apache之道这些年修改了部分内容,但“高度透明性”的初心始终是未变的。在单致豪看来,腾讯从Apache之道中学习的经验归结为五条:
1、所有个人都有机会参与,并且可以成为权威。所有人都可以通过对社区的贡献获得属于自己的影响力和个人成长,以及基于公开获得的功绩和权威。
2、Apache基金会是扁平的结构。这意味着任何角色都是平等的,投票权重都相同,并且贡献是在志愿者的基础上进行,腾讯鼓励内部的工程师都积极参与Apache基金会的贡献中。
3、深知开放交流的重要性并践行。因为开源是全球分布式社区的协作,腾讯工程师参与Apache开源项目都是通过邮件列表的异步协作机制——代码、决策相关的交流都公开透明。
4、鼓励一起达成共识的决策机制。共识可以保持项目前进动力和新的生产力。但是有时候不能建立完全共识,那就需要进行投票或其他协调以帮助删除具有约束力的决定。
5、最重要的一点,“社区高于代码”的格言在 Apache 社区中经常得到加强。因为健康的社区比好的代码更重要。强大健康的社区总是可以纠正代码的问题,而不健康的社区可能会努力以可持续的方式维护代码库。此外,灵活的重要性——这也是Apache 可持续开源成功不可或缺的一部分。
Apache之道指导下的腾讯开源之道
Apache 项目及其社区都是独特但却多样化的。在社区主导的开发过程中,Apahce成员将其获得经验的总结体会凝聚为了Apache 之道。
其实,腾讯很多开源实践、成果都是在Apache之道的指导下进行的。通过长时间的开源文化基因的沉淀,形成了腾讯以“开放协作、开源向善”为驱动的开源之道,同时这也是腾讯的价值观及使命愿景,连续影响着自身的开源实践。
l 主导及捐赠开源项目,腾讯践行 Apache Way之始
在大数据流计算、中间件等领域,腾讯工程师在 Apache 基金会中的多个开源项目参与了主导及贡献,凭借贡献成果获得了来自基金会的认可。
1)大数据领域
例如,从4年前开始,腾讯就相继主导了 Apache Hadoop 2.8.4/2.8.5版本的发布,Apache Ozone 1.0.0版本在Hadoop社区的正式发布,后者成为了 Apache 基金会的顶级项目,同时也主导了Apache Spark 2.3.2版本的发布,并成为第一家在社区里发布Hadoop和Spark Release的中国公司。
在腾讯主导发布的Hadoop多个版本中,就涉及20多个的特性和优化。在 Spark 、Flink、HBase、Hive、MXNet、Parquet等多个计算和 AI 框架中,腾讯都是主要的核心贡献者。
此外,腾讯大数据还参与主导了Apache Ozone 的1.0.0版本,并在支持Append、truncateget="_blank">操作,container balancer 功能等问题上,腾讯持续在投入贡献以提升Ozone的成熟度。
2)中间件领域
2019年,腾讯将自研的万亿级大数据组件 —— TubeMQ 项目捐赠给了Apache基金会,这也是腾讯第一个捐赠到Apache基金会的开源项目,今年其正式更名为Apache InLong,目前正在Apache基金会进行孵化。
l 基于 Apache 优秀及成熟开源项目的深度应用
除了主导开源和捐赠项目,腾讯也在内部多个业务系统中应用了Apache基金会的开源项目。例如在微信、QQ、腾讯云等业务版块中,Apache的开源项目被广泛应用——既覆盖了大数据生态,如数据传输、存储、计算和分析等需求场景,也涉及 API 网关、可观测等服务治理的技术领域。
尤其是在大数据、API网关、可观测三个领域,腾讯深度应用并且贡献了Apache基金会的开源项目。
1)大数据项目代表——Ozone和Pulsar应用
腾讯大数据单日的接入消息量超过 55 万亿,实时计算量超过 65 万亿,平台整体算力超过 500 万核,日分析任务数量达到 1500 万。
作为日实时计算量最大的公司之一,腾讯需要强大的大数据平台来支撑业务的开展,其能力也不断被刷新。除自研工具外,充分应用外部优质且成熟的开源项目如Apache Ozone和Apache Pulsar ,为腾讯需要大量数据和流量的业务场景提供了支撑。
Ozone 是当前 Apache Hadoop 生态圈中新一代分布式文件对象存储系统,于去年从Apache基金会毕业并正式成为Apache顶级开源项目。它能够解决Hadoop分布式文件系统HDFS的扩展性上限,满足千亿级小文件的存储需求。
作为 Ozone的早期采用者,腾讯大数据平台已经部署了一个超过1000个节点的Ozone集群作为大数据应用的后台存储。此外,腾讯还利用Ozone作为一些私人数据仓库项目的主要存储解决方案。
目前,腾讯正将越来越多的业务接入Ozone,包括数据仓库、机器学习平台、K8S集群挂载盘等等。经过长时间的反复验证改进后,内部Ozone能够以千台以上的规模长时间稳定运行,且无须人工运维介入。在验证改进过程中,腾讯做了大量的优化工作来改进性能,提升稳定性。
作为下一代云原生分布式消息流平台,Pulsar 集消息、存储和函数式计算为一体,并采用存储与计算分离的架构。Pulsar 目前在腾讯云内部已经成功支持大量数据和流量业务场景,还有在云原生环境上的一些实践经验,例如解决快速动态扩缩容,提升集群资源的利用率、集群形态等。
2)API网关项目代表——APISIX的应用与贡献
随着服务数量和复杂度上的不断增长,越来越多企业采用了微服务的方式,API 网关也成为不可或缺的一环——使用 API 网关完成统一的流量管理和调度。
APISIX 是 Apache 去年新增的一个顶级的 API 网关开源项目,从2019年进入Apache基金会的短短一年时间就完成了毕业。这也说明了它的活跃度、健康度,且在快速的迭代发展。对比Kong,APISIX 具有高性能、友好的开发者体验、丰富的插件能力等特征,是腾讯内部业务选择它的原因。
在APISIX的基础上,腾讯对内共享基于公司自研的云系统组件的配套支持,解决业务痛点,提供高效的API网关服务;对外向Apache APISIX开源社区进行贡献,扩大影响力,引领开源社区发展。
3)可观测领域项目代表——Skywalking在腾讯内部可观测平台的应用
随着微服务架构的流行,全链路性能监测成为服务治理需要解决的一大问题,为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计的可观测工具成为首选。
Skywalking是一个用于分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计,它具有多种监控手段,语言探针和Service Mesh多语言自动探针,轻量高效且支持告警,具备优秀的可视化方案。
Apache Skywalking是吴晟个人创始项目,项目目前非常活跃,有完善的项目发展全景图和里程碑,主仓库有17,000个星星数(Stars),350个贡献者。
腾讯内部可观测平台全面兼容Apache Skywalking,Zipkin和Jaeger的客户端上报,为微服务体系的客户端tracing上报选型提供了极大的便利。同时使用计算存储分离和多层查询的机制,提供了非常优秀的性能输出。
此外,在可观测领域,腾讯最近也在使用CNCF中非常热门的OpenTelemetry项目。
三大项目,助力腾讯开源生态的建设
当然,除了Apache基金会之外,腾讯目前以顶级会员的身份,活跃在全球超过十个基金会中。基金会提供知识产权管理的框架、代码仓库、问题跟踪、技术指导、项目治理、财务和公关管理等服务,腾讯的工程师和全球开发者们在其中一起协作。
通过在多个基金会中的实践与贡献,例如Linux基金会以及全球最大的云原生开源组织CNCF基金会,腾讯吸取了比较成熟的开源组织治理模式及经验,并用于指导内部项目的对外开源。
目前,腾讯累计对外开源了130多个自主项目,获得了超过37万的Star数,贡献者人数也超过了2000人。项目覆盖了云原生、大数据、人工智能、数据库等多个技术领域,有对外专注人工智能领域的Angel开源项目和微服务领域的TARS开源项目,在KVM、OpenJDK,腾讯都位列其全球贡献者榜单前列,包括在Kubernetes、Spring Cloud、MariaDB等开源社区中,腾讯也在大力推动开源项目、产品以及解决方案的落地。
基于内部的开源项目,活跃于开源社区的经验历程,以及开源人才培养的项目,腾讯开源生态已逐步建立并不断完善。
在未来的一段时间内,腾讯云将重点通过三大项目进一步壮大腾讯开源生态的建设:
1)建立“腾源会”社区。腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。
未来,腾讯希望通过“腾源会”这一中立性组织为开源交流和项目孵化搭建平台,通过开源孵化器、共创社区、开源研讨活动和实操类活动的举办,链接更多的开源项目,开源爱好者、实践者和领导者,以及全球的开源基金会、开源文化。
2)建立产业开源联合实验室。开源实验室是项目实战的落地场所。未来,腾讯云计划陆续和国内多所知名高校以及开源企业一起成立产业联合开源实验室,为在校生、科研人员以及企业内的开发者提供实战贡献代码平台,以及开源项目落地产业的场景。
此外,腾讯今年也正式发布了“犀牛鸟开源人才培养计划”,通过打造面向高校学生的开源课程和开源实践培养方案,培育开源人才、普及开源文化,助力开源人才生态的发展。
3)发布《云原生开源白皮书》。今年5月的“云原生产业大会“上,腾讯云联合信通院宣布正式启动《云原生开源白皮书》编写工作,目前该白皮书还在编写过程中,预计将在年底正式发布。
以上这些平台和项目的建设,开源实践者和企业都可以参与进来。
结语
迄今Apache基金会已经运营了22年,事实证明它是将组织结构和灵活性平衡的开放性组织建设的最佳实践之一。腾讯也在持续将Apache之道内化于其自身开源理念、开源方法论和开源生态建设的实操中。
未来,或许也会有越来越多的高校、企业或组织能在腾讯构建的开放性社区中,这是一条不远的路。
弟弟因为车祸腿脚不是很方便,想让我弟弟学PHP要从哪里入手
首先对您弟弟的事情感到遗憾,
然后根据我个人的看法,对待这个问题。
自学,出来的高手,有,不过很少,走的弯路很多。
因为一个很简单的道理,从书上是很难体会和理解的。 必须有人教,去跟他详细解释。
毕竟写书的,他的思维角度不会跟着他所有的读者一样,他认为这个地方没必要讲,可能很多人都知道。 但是每个读者的基础都是不一样的。
所以建议送去培训机构学习。
独立PHP开发系统或设计网站
先学HTML,最基础的
网页设计又需要FLASH和PHOTOSHOP 做美化工作
学PHP,又要学数据库。
然后发现,什么都要学。 。 。
现在企业流行的java框架技术是什么,有什么不同点
我将简短分析被用于支持这些框架的企业开发环境或工具箱,例如Borland JBuilder,Eclipse以及BEA Workbench。 请记住,市场上有许多有关这些开发框架的图书;然而,在任何一篇文章中,要对它们进行深入描述是不可能的。 不过,我将尽力讨论最广泛地使用的概念。 1. 共同点 几乎所有现代的网络开发框架都遵循了模型-视图-控制(MVC)设计模式--商业逻辑和描述被分开,由一个逻辑流控制器来协调来自客户端的请求和服务器上将采取的行动。 这条途径成为了网络开发的事实上的标准。 每个框架的内在的机制当然是不同的,但是开发者们使用来设计和实现他们的Web应用软件的API是很类似的。 差别还存在于每个框架提供的扩展方面,例如标签库,JavaServer Faces或JavaBean包装器等。 所有的框架使用不同的技术来协调在Web应用程序之内的导航,例如XML配制文件,java属性文件或定制属性。 所有的框架在控制器模块实现的方法方面也存在明显的不同。 例如,EJB可能实例化在每个请求中需要的类或使用Java反射动态地调用一个适当的行动(Action)类。 另外,不同框架在各自引入的概念上也有所不同。 例如,一个框架可能定义用户请求和反应(以及错误)场所,而另外一个框架可能仅仅定义一个完整的流--从一个请求到多个响答和随后的再请求…… 各种Java框架在它们组织数据流的方法方面是很类似的。 在请求发出后,在应用程序服务器上产生一些行动;而作为响应,一些可能包含对象集的数据总是被发送到JSP层。 然后,从那些对象--可能是有setter和getter方法的简单类,javabeans,值对象,或者一些集合对象--中提取数据。 现代的Java框架还想方设法简化开发者的开发任务,如通过使用简易的API,数据库连接池,甚至数据库调用包等提供自动化的追踪方式来实现。 一些框架或者能够钩进(hooked into)另外的J2EE技术中,例如JMS(Java消息服务)或JMX,或把这些技术集成到一起。 服务器数据持续性和日志也有可能成为框架的一部分。 2. 企业开发环境 一些框架在Web开发者社区和企业发展领域变得相当流行。 随着这些框架的日渐成熟并开始发行稳定的版本,商业的IDE(集成发展环境)开始为这些框架提供支持并把他们纳入到自己的产品中。 一些IDE甚至基于框架的概念开发出整个的产品,例如,BEA WebLogic Workshop就是基于Struts框架建立起来的。 Borland Jbuilder为Struts提供了内建的支持,也支持JSF和JSTL。 Eclipse平台已成为一个很流行的开发工具,部分因为它是基于插件的,部分因为它对于Web框架的支持。 现在,出现了众多的Eclipse插件,甚至完整的基于Eclipse的IDE。 许多插件被设计适合于Struts框架开发,例如MyEclipse()或M7。 大多数IDE都具有图形化的流程和可视化对象(类代理)。 例如,下面是一个JBuilder的行动(Action)设计器,用于规划Web应用程序的页面顺序。 WebLogic Workshop引入Java页面流程技术,它扩展了Struts框架而提供了一个简化的开发模型并增加了另外一些特性。 Workshop使用页面流(Page Flows),实现轻易地把用户接口与导航和商业逻辑分离开来。 页面流由JSP页组成,这些页面包含用户接口元素和一个控制器文件(JPF)--它包含由用户提供的数据将怎样被处理的指令以及下一步什么页面将被返回到用户的信息。 页面流动提供给开发者一个可视化的Web应用程序总体轮廓,它让开发者能够看到直观地分析不同的JSP页彼此相关联,并实现Web应用程序整体结构的快速建立。 MyEclipse提供类似的特征,并带有更多吸引人的代价标签。 3. Apache Struts框架 Struts框架是一开源产品,基于模型-视图-控制器(MVC)设计范例来开发Web应用软件。 它使用并且扩展了Java Servlet API,最初由Craig McClanahan创建。 在2000年5月,它被捐赠到Apache Foundation。 Struts框架展示了一个强有力的定制标签库,平铺显示,表单检验和I18N(国际化)。 另外,Struts支持许多描述层,包括JSP,XML/XSLT,JavaServerFaces(JSF)和Velocity;还支持一些模型层,包括JavaBeans和EJB。 4. Spring框架 Spring框架是一个分层的Java/J2EE应用程序框架,基于Expert One-on-One J2EE设计和发行的代码。 Spring框架提供一种简单的开发技术,用于自动化处理工程中大量的属性文件和助理类。 Spring框架包括的主要特色有: 1 强有力的基于JavaBeans的配置管理,使用Inversion-of-Control(IoC)原则。 2 一个核心bean工厂,可用在任何环境,从applets到J2EE容器程序。 3 通用的抽象层适合于数据库事务管理,允许可插入的事务管理器,并且不需要处理低层次的问题就可容易地划分各事务的界限。 4 一个很有意义的异常处理的JDBC抽象层。 5 与Hibernate集成到一起,DAO实现支持以及事务策略。 5. Hibernate框架 Hibernate是一适合于Java语言的对象-关系映射(ORM)解决方案。 它也是开源软件,类似Struts,并且在LGPL保护下发布。 Hibernate被一群来自世界各地的Java软件开发者所共同开发。 它提供一个易用的框架来实现把一个面向对象的域模型映射到一传统的关系数据库。 它不仅负责从Java类到数据库表格(以及来自Java数据类型的SQL数据类型)的映射,而且还提供数据查询和检索能力,并能大大减少花在SQL和JDBC手工数据处理上的开发时间。 Hibernate的目标是减轻开发者的与大量普通的数据持续性相联系的编程任务。 Hibernate还能够适应开发进程,无论它是刚开始设计还是来自一现成的数据库。 Hibernate可以自动生成SQL,使开发者摆脱了手工处理结果集和进行对象转化的繁琐任务,并能使应用程序移植到所有的SQL数据库。 它还能提供透明的持续性,对持续性类的唯一的要求的是实现一个无参数的构造器。 这个框架典型地使用在JavaSwing应用软件、基于Servlet的Java应用软件和使用EJBsession beans的J2EE应用软件中。 6. 结论 本文概述了现代最流行的Java Web开发框架。 当然,还有更多框架尚未描述,开源和商业化的都有,例如WebWork(或Tapestry(而许多框架通过扩展另外的MVC框架在内部被成功开发。 当前,最流行的框架是Apache Struts。 当Web开发竞技场继续演变它的工具和编程方法时,Java应用程序框架也将继续成长下去。 Java Web开发框架的未来一片明亮!
apache中文是什么意思
Apache英 [əˈpætʃɪ]美 [əˈpætʃɪ]全球发音 跟读 口语练习n. 阿帕切族(美洲印第安部族)网络释义 阿帕奇服务器阿帕契族阿帕契族短语Apache License Apache许可证 ; 开源的Apache trout 亚利桑那大麻哈鱼Oncorhynchus apache 亚利桑那大麻哈鱼
发表评论