精心布局的开源(上)

作者:Philip Estes 和 Doug Davis

翻译:适兕 (“开源社”翻译组成员)

/ 介绍 / Introduction

如果说软件正在慢条斯理的将这个世界吃掉的话,那么我们可以毫不夸张的说开源软件正在吞噬世界。现在的开源可不像十几年前那样——几乎无人问津,现在则到处都在谈论开源(对于入门者来说,看看讲解的 Linux 丰富的历史吧),据统计,无论是社区参与、代码提交行数,还是企业参与、乃至金钱的收入,都以惊人的速度上升。举个例子,在2015年8月份举办的北美 LinuxCon 会场,Linux  基金会介绍说,仅仅是旗下的子项目就有六千四百万行代码的提交,这并没有包括 Linux 本身!这些提交来自成百上千的独立的贡献者,从学生到服务于公司的工程师,据粗略的估价,这些代码的软件是已经超过50多亿美元的项目。

虽然目前开源已经深入人心,但是我们这里要探讨的更加的耐人寻味,因为开源已经不再仅仅是指传统意义上的将代码仓库公开访问,以及用某种开源许可证来分发。开源还意味着由开放治理和合作基金会的管理,使得来自世界各地的开发人员能够协同起来,一起解决来自围绕云计算的挑战:从基础设施服务,到平台、应用的打包,乃至日益扩展的 Web 产品的交付和运维。

这场开源的革命改变了人们的看法,也让企业开始思考自己的软件产品应该如何开发,尤其是企业为其用户提供云计算的解决方案时,这一影响更加的凸显。我们发现在这个新的开放的时代,它本身就是在培养一种开放的思维以及开放的合作,目标人群是那些在自己的企业中已经习惯于封闭开发的拥有丰富经验的开发者们,而且,我们现在越来越多的软件的设计使用开放的原则,就云计算具体来说,企业传统的做法就是“自己滚起来”。我们称这个新的时代为:精心布局的开源时代。


开源历史回顾

01 开源是什么?

为了能够充分的讨论开源这个主题,我们首先需要做的是先澄清此一名词的概念。首先我们会定义一个基准,然后,我们回顾开源的历史,它是如何出现的?为什么会出现?在此过程,我们会遵循在多个行业的开发过程和软件领域中,以成熟的、可行的、有一定价值的组件来说明问题。

“N.B.: Open 这个词,确实是最近几年变化非常大的一个词,近来还读了另外一篇文章 Fifty shades of open 。”

首先,开放源代码促进会的开源的十个定义对于我们理解起开源是非常有意义的。其中一个至为重要的真相就是说能够访问源代码是必要的!但是仅仅是源代码开放就说它是开源软件是远远不够的。正如开源促进会所澄清的,能够访问源代码仅仅是入门级,需要进一步的能够再次分发软件,-原有的和修改过的-以及删除了一些代码的情况所造成的不同,乃至于不同的人们,如用户和开发者。最有价值的或者是一文不值的开源项目在多个方面都会有摩擦,如代码访问、代码共享、以及自由的使用和分发,允许任何人和任何组织去轻易使用和修改。

这就是 OSI 的定义所强调的一个关键的点。虽然有非常多的可用的开源项目,只是简单的将源代码放在了互联网上,其实这是远远不够的。特别注意的一点就是,很多的开源项目所使用的许可证使得很多的商业公司是无法参与进去的。这么做的后果就是限制了一些开发者,因此,项目就需要更长时间来获得增长乃至成功。举例,某个项目要求所有基于其下的源代码也必须再开源,这就意味着此许可证强制商业公司所开发的增值(可能是商业化的)必须是是自由可用的。对于一部分公司来说,显然是接受不了这样的许可证的。那些最为成功的开源项目都是实现了各式各样的人们来参与到项目中来,并且会鼓励采用贡献者到技术,而不是去强制限制什么。

除了能够访问到软件的源代码以及有权利去修改它之外,其实开源项目真正的价值并非代码库本身,开源项目真正的价值在于能够在更加广阔的范围很多人为了同样的目标一起协作形成的社区。一位形单影只的开发者,即使是一家单一的公司,做了一开源项目,或许还有点实际的用处的,但若是没有更多的参与者来改进他的代码库的话,项目很快就会变黄。众人抬柴火焰高,有更多的人手来投入时间和资源来让软件更好的测试、更好的文档、更加灵活的处理错误、添加更多的功能,从而满足用户的需求。原作者可能没有注意到全部,但是开源真正的力量在于感兴趣的人们花时间和专业技能来共同完善它,使之更快的成熟可用,甚至有些功能会超越原作者的意料。

02 大众化和商业化

虽然我们可以肯定的说,现代的 GNU/Linux 和自由软件基金会是推动着开源时代来临的力量来源,从而让软件从受企业青睐、各种专利、以及过去的闭源的专有系统的反面的转变。但还是有必要回顾一下开源软件在整个计算机历史的时间线上的位置的。

在20世纪5、60年代,很多早期的计算系统都是来自于 IBM 、DEC 以及其它一些学术界、研究机构合作开发的,甚至还有一些政府部门的参与。这就导致最初的操作系统软件和其它关键的软件组件假设是可以在用户和开发者之间进行共享的资源,在计算机的历史上,就这一点可谓是惊人的重复。早期的计算机系统供应商交付他们的硬件的时候,会顺带将全部的软件的源代码一起交付,这其中包括了可能需要修改以及构建软件的工具。拿 IBM 701 大型机来说吧,这种特殊的源代码共享的方式,直接导致 SHARE 用户组以及研讨会持续了几十年!SHARE 是一个充满活力的社区,系统程序员和用户一起分享他们各自所遇到的问题,然后共享代码,即那些修复问题之后增加或变更的代码。

那个时候没有高带宽网络的普及,让人们能够在全世界范围内轻松的沟通,几十年以后才实现了。但是,这就是现在开源运动的根源:一个协作的社区,共享解决方案、源代码、以及专业的知识,而无须考虑专利权、许可收入、各种金钱的收入。

好吧,让我们还是快进吧,GNU 项目的创立以及自由软件的想法从 Richard Stallman 头脑中出现的时间是20世界80年代,没有过多久,Linus Torvalds 在1991年开始了 Linux 内核的撰写。这些里程碑的事件,究其原因,有连接全球的越来越方便的网络、通过电子邮件来进行大量的沟通、早期的原始网站、放置代码仓库的 FTP 服务器,所有的这些组合在一起,促使新的开发者们加入到开源运动的大潮中来。Linux 和 GNU 项目的各种组件为开源活动提供自由的底层,参与到开源所需要的所有的必要的工具——编译器、编辑器、网络客户端、以及脚本语言,都可以在一个单一的自由使用的操作系统中获得,这一明显的降低门槛的现象,导致只要拥有一台个人电脑就可以加入到开源的事业中来。

就在90年代中期众多的参与者加入进来之后不久,此草根的开源运动中开始出现了一些尝试盈利的商业公司,如—— RedHat 、SuSE 、VA Linux 、Netscape(很快变为 Mozilla)、以及 MySQL AB 等等。不仅仅是这些新成立的开源公司,而且那些大型的企业很快也看到了开源开发模式的价值,并且也积极的参与到开源社区中来,并且鼓励员工全职为“上游”做开源的工作。IBM 就是在早期采用这一策略的大公司之一:在1998年成立了 IBM Linux 技术中心,雇佣 Linux 内核专家,以及培养内部员工积极的参与到 Linux 内核和其它上游的项目中,目标是让 Linux 能够在所有的硬件类型上运行,且能够支撑 IBM 中间件产品,IBM 专门为其下受欢迎的企业级产品—— DB2 和 WebSphere 开发了 Linux 的版本,甚至是过去专门面向大型机的软件如 CICS 和 MQSeries 。更多的大型企业也纷纷效仿:Oracle 、HP 、SAP 、Intel 、以及其它公司也开始直接支持 Linux,让他们等软、硬件开始支持 Linux 操作系统。开源不再仅仅是自由软件运动的“次文化的产物了”(因为他们有时会被人嘲笑);它现在已经壮大,是几十亿的市场了。

相比于早期的企业参与到开源的那些日子,人们使用开源软件和专有软件或解决方案的混合,是一个从最初的忐忑不安到慢慢的适应的过程。但是在今天,你很难找到没有使用开源软件的地方,从移动设备、到嵌入式控制系统、再到企业级数据中心解决方案,开源软件的大众化和商业化的浪潮在我们写这篇文章的时候仍然在加速发展。这一点在云计算更加显得特别,Linux 操作系统让 web 扩展的计算资源成为可能,很多的开源项目也是云计算的基石——从 Hypervisor 到基础设施管理,再到部署,乃至应用程序层的框架。这些项目以及其背后的社区都是响当当的角色。其实,它们之中多数是通过基金会的所创建的开放治理社区。但是,在我们要谈开放治理之前,我们还需要交代一件事,那就是开源将业界瓦解的历史。

03 瓦解

不管它们是否能够理解,当下大多数的消费者都在使用开源软件。即使消费者仅有一点点的技术意识,也会在不知不觉中受益于开源。这些最终用户获益的最大的来源就是通过面向消费者的设备实现的,从 GPS 单元、到家庭无线路由器、再到诸如 Roku 和 Chromecast 这样的流设备。作为开源项目最好的案例-Android ,每天全球有几十亿用户通过智能电话和平板电脑在使用它。即使是在个人电脑上的商业操作系统之中,人们也在使用诸如 Firefox 和 Chrome 这样的开源项目,而且是与日俱增。让我们从个人用户往后推点,看看托管供应商,Apache web 服务仍然是 web 服务器的老大,尽管现在有了新的竞争对手-Nginx,但是 Nginx 依然一款开源的项目。在 Web 的内容方面,我们必须得提一下非常流行的内容管理系统 WorkPress,开源的内容管理平台,每天承载着上百万的博客提交和撰写,其中多数的人们对于平台之后运行的开源一无所知。

基于这样一个常识-开源软件几乎渗透于软、硬件的各个系统的层次!让我们回顾一下在过去的15年,开源是如何逐个瓦解各个关键领域的。

04 服务器操作系统

在 Linux 到来之前,服务器操作系统是被 Windows 和一系列的商业 Unix 所瓜分的。即使是在 Linux 刚诞生后的早期,企业界的客户仍然是不愿意采用这个羽翼未丰的操作系统,那怕它是“免费的”。当然,后来所发生的事情就是,Linux 的生态系统迅猛成长,一些公司开始提供企业级的发行版以及相应的支持,市场的份额也迅速的发生了变化。在2007年底,IDC 调查称,Linux 终于在单一季度内打破了 20亿美元的瓶颈,已经是所有服务器收入的12.7%。在2012年这个数字逼近17%,但是到了2012年第一季度,Linux 已经占据服务器市场的20.7%,这已经超过了 Unix 的18.3%:

在八月份举行的 Linux 基金会研讨会上,IBM 副总裁 Brad McCredie 大声疾呼,这是 Linus Torvalds 在20年前创建内核项目是绝对没有想到过的事情。

他说道:“在服务器操作系统这块市场中,Linux 已经超越了 Unix ”!

让我们将视野调回到超级计算机上,我们可以非常明显的看到这块从 Unix 向 Linux 的转变。如下图所示,请注意,从2000年到2010年 Linux 占有 TOP500 超级计算机的操作系统份额从不到5%增长为接近90%!非常明确的一点就是,开源的操作系统为研究者和硬件设计者们带来强大的力量-对硬件加速功能的快速创新、自我定制设备驱动程序、和加强内核技术以便快速的看到原型、得到基准、然后来提高高性能计算的负载。顺带提及一点的,就是 IBM 也在 Linux 的投入上加大力度,开始让 POWER 架构 和 z system 大型机平台支持 Linux,为其企业用户提供一体的服务,包括传统的强大的硬件以及 Linux 的灵活。

在近期2014年底的报告中,IDC 继续报到了 Linux 每年的收入和服务器出货量。但看 Linux 2014年的世界范围内的出货量一项,Linux 的份额就达到了40%,以每年16.4%的速度增长,比它情况好的仍然是微软的 Windows,占有59%,同比下降4%。比较有趣的一点是,不看世界单看美国在2014年的出货量的话,Linux 的增长率和 Windows 是很接近的。分别是48.7比50.3%。

虽然我们看到的是 Linux 在服务器操作系统这块市场的破坏性的成长,但是伴随着它的成功,它同时也打开了其它无数的开源的市场。我们还会看到,值得尊敬和长期坚守的开源项目在世界范围的被广泛使用。

05 Web服务器

在 Web 的早期阶段,对于 Web 服务器软件的选择非常的少,在公共领域由 Rob McCool 开发的 NCSA 其实是事实上的标准。在上世纪90年代中期,微软在其 Windows NT 3.51 上开始提供一款叫做互联网信息服务(IIS)的 Web 服务器,大约在同一时间,Apache 的开源 Web 服务器项目也诞生了。Apache 是基于 NCSA 服务器的基础之上开发的,因为 NCSA 在这个时候已经被叫停开发了,不再维护了。除了公开代码之外,Apache 项目的意图是希望通过有兴趣的人们一些协同开发,随后最初的8位贡献者组成了 Apache Group,没过多久就有了很多的追随者。

在接下来的几年里,Apache Web 服务器的开发进展良好,功能渐趋完善,可扩展的架构带来更好的移植性,而且可以跨各种 CPU 架构的硬件上以及多种操作系统中运行。在1999年,Apache 软件基金会正式成立,这让早期的开发者们有了可持续的资金收入、治理方式、以及管理和法律等方面的帮助。该基金会很快变发展了很多的开源项目,而不再仅仅是一个 web 服务器了。

到今天,Apache 已经是托管互联网站点最为流行的 web 服务平台了。下图展示了 Apache 在 web 服务器领域的霸主地位。它已经坚挺了20多年!

图片来源:Netcraft

既然谈到了 Web 服务器,笔者认为还是有必要再多说一点,让我们再看一张近几年 web 服务器统计的图片。可以看到在此市场中有了一个新生代的挑战者:nginx!

图片来源:Netcraft

限于篇幅和为了节省大家的时间,我们对于所有的流行的 web 相关开源软件项目是如何成为互联网的核心和灵魂的故事就不铺开来讲了。不过值得一提的是 Linux 和 Apache 的组合是术语 LAMP 软件栈的基础。其中 M 表示的是非常流行的开源数据库 MySQL,而 P 则代表的是 PHP,PHP 是一种用于编写 Web 应用程序的语言,不过最近有被另外一个新崛起的叫做 Node.js 的项目替代的趋势(Node.js 也是一款开源的项目,而且目前也成立的相应的基金会)。

06 移动设备

在讲述完服务器和 web 技术领域了之后,我们要进入关于移动设备的世界了。在移动设备爆炸的今天,要探究最初,就得追溯到2007年,即最早引入“智能手机”的年头。那年有两个重要的事件发生:Apple 推出基于 iOS 的 iPhone 手机 和 Google Android OS 引入移动设备的诞生。到今天, iOS 和 Android 均有各自的支持者,也一直在辩论着哪个“更好”!但是结果非常的明确,那就是开源项目胜出,Android 在手机、平板、和其它设备上跨多个制造商构建了一个强大的生态系统。由于这是一个非常广阔的市场,即使是看起来 Apple 的收入更高些,但是从全球的手机交货量来说,是 Android 胜出:

图片来源:IDC 数据

鉴于 Android 相比于 iOS 更加的倾向于低成本和入门级市场,这样的数据显示,没有什么令人值得惊讶的,还有更为细粒度的数据显示,在印度、中国等主要市场,iOS 和 Android 的出货量比例是悬殊很大的。

07 虚拟化

在1999年 VMware WorkStation 出现之前,软件 Hypervisor 早已存在了好多年了,但是是作为那些非常昂贵的企业服务器的一个部分存在的,即那些如 IBM 、HP 、以及 Sun 的大型机,工作在这里的工程师们从来没有想过有谁能够改变他们的职业生涯。然而,当 VMware WorkStation 出现以后,这一切都改变了。在任意的笔记本或个人电脑上的 Windows 系统中可以看到 BIOS 的启动!这是多么的令人惊奇和兴奋!在接下来的十多年,虚拟化都是炙手可热的技术点:不仅仅是因为它能够轻松的将原来物理服务器转换为虚拟机,使整个的应用更加的容易备份、配置和迁移,还有它能够在同一台服务器上将大型的不同的负载完全的隔离起来的全新方法,而这是数据中心运维模式的巨大转变。

从 VMware 发布 WorkStation 后,没过多久,开源社区在虚拟化这一领域也有了新的突破。Xen Hypervisor 在2003年横空出世,它为 Linux 提供了半虚拟化的内核;加上 QEMU 模拟器软件的搭配,形成了完善的虚拟化解决方案,而且它还在不断的发展,新的功能和特性与日俱增,如提供非 X86 架构,例如 Power 架构,如 ARM 。或许读者你对老牌的公有云提供商 亚马逊 web 服务(AWS)非常的熟悉,这家公司就是在2006年开始为用户提供虚拟化的计算能力的,但是你可能不会知道,AWS 运行虚拟机使用的技术就是 Xen Hypervisor!

在开源界还有另外一款 Hypervisor,在十多年前,一家名叫 Qumranet 的以色列创业公司,开发了一款基于硬件虚拟化的 Hypervisor,它就是后来大名鼎鼎的 KVM 。利用 Intel VT-x(或 AMD-V)的硬件辅助虚拟化技术。KVM 在2007 被合并到 Linux 内核;2008年红帽又将 Qumranet 收购;在那之后,KVM 迅速崛起,很多发行版都开始支持它,成为了主流的 Hypervisor,而且也是很多企业级 Linux 的虚拟化产品,诸如 红帽企业级虚拟化(RHEV)、IBM 的 PowerKVM 等。(PowerKVM 是基于 IBM Open Power 硬件平台的,操作系统为 Linux)。

08 云计算

软硬件的虚拟化技术的成熟是云计算之所以能出现的关键,从近几年来看,这是一个快速创新的领域,并且是各种投资市场所青睐的对象。几乎所有的厂商,包括硬件和企业 IT 均竞相在私有云、公有云、以及混合云寻找机会和作出变革。

尽管在云计算这块依然有专有的厂商,但是我们在今天所看到的是,有无数个开源项目在这个领域扮演着重要的角色,并展开了整个云计算的创新。而且那些专有厂商也开始往开源这边倾斜,有时候在纯粹的开源项目和专有之间并没有那么清晰的界线。正如我们看到一直在 IT 市场上扮演专有厂商的微软近来也开始拥抱 Linux,称他们在 Azure 云中可以托管 Linux 虚拟化,无独有偶,微软近来还投入人力到 Docker 这个开源项目的上游社区中,试图将容器技术带入到 Windows 服务器版和 Azure 云中。

从本质上说,正如 Cloud Foundry 基金会的执行总监 Sam Ramji 最近的结论:“开源已经赢了!” 现在想从任何一家云计算厂商中找到没有开源项目的组件,那真是太难了。无论是 hypervisor 、托管操作系统这个层、还是应用程序的运行层、如 Node.js 、PHP 、Ruby 、Python 等开源项目的例子。

我们今天所看到是开源的复兴!其中,很多围绕云计算的关键活动和创新都是通过开源社区和它们各自的基金会来进行的。有三个社区值得我们拿出来仔细的研究,因为它们是对大型的 IT 企业的 IaaS 和 PaaS 实现产生了非常大的影响,即 OpenStack、Cloud Foundry、以及 Docker,这三家均拥有庞大的开源社区力量并且仍然在快速的增长,每年所举行的研讨会都有成千上万的人参加,有着足够的聚光度,媒体纷纷报道,而且还有来自所有的大型 IT 企业作为合作伙伴和支持者。在下文的 开放治理:基金会模式中我们将开始探讨基金会模式作为开源振兴的关键点来切入,看它是如何影响我们前面所提到的这些社区以及历史上大型的开源项目的。

作者简介

⊙Philip Estes:

Philip 在 IBM 开放云技术团队担任高级技术组成员的职位,目前代表 IBM 在 Docker 开源社区,亦是 Docker 的核心维护者。Philip 还和 IBM 的产品团队以及客户管理一起共事过,将开源的云技术转化为实际的产品、解决方案和 IT 项目。Phil 的成员团队均工作在关键的开源云项目的上游,如 OpenStack 、Cloud Foundry 、Docke 等。在 Phil 加入开放云团队之前,Phil 是 IBM Linux 技术中心的首席架构师。

⊙Doug Davis

Doug Davis 在 IBM 的开源云和标准部门工作。他在开源和标准这个细分的领域内有超过15年的工作经验,曾经参与过过个现下非常流行的研究标准,诸如 Apache SOAP & Axis 、围绕 Web 服务/SOAP 的 W3C 和 OASIS 标准、OpenStack 、Cloud Foundry 、以及最近参与的 Docker 、OCI 、和 CNCF 。他还是 WSTF 的创始人,WSTF 是基于 Web Service 的内部操作机制的实现,地址是 http://soaphub.org,并有多个企业使用此实现来做他们的实时协作。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,719评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,337评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,887评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,488评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,313评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,284评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,672评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,346评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,644评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,700评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,457评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,316评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,706评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,261评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,648评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,859评论 2 335

推荐阅读更多精彩内容