当前位置:网站首页>传统数据库逐渐“难适应”,云原生数据库脱颖而出
传统数据库逐渐“难适应”,云原生数据库脱颖而出
2022-07-05 06:04:00 【cdtaogang】
前言
数据库一直是应用开发中非常重要的一部分。从MySQL到亚马逊的RDS(关系型数据库服务,Relational Database Service),业界有很多数据库系统供开发者存储、查询和管理数据。随着海量计算的持续发展,给传统数据库带来了不少挑战,而云原生数据库却可以应对这些挑战。
亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB存储容量 永久免费。——戳这里
传统数据库产品为何难以适应这个时代
什么是传统数据库
传统数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。
传统数据库的缺点
在云计算诞生之前的很长时间里,传统自建数据库可以说是所有开发者的唯一选择。 然而随着用户的数量增长以及业务复杂度的提升,传统自建数据库的缺点越发明显。
以下只是列举出传统自建数据库的一些常见的缺点,传统的数据库技术和商业发展模式已经不能适应这个时代了。
- 系统安全性:需要对抗DDoS攻击,传统自建数据库需要自行实现,且实现成本较高,同时也需自行修复数据库安全漏洞。
- 硬件成本:为了能部署数据库,开发者需要购买费用高昂的数据库服务器。一次性的硬件成本很高。而且考虑到硬件损耗,后期还会有维修和更换硬件的成本。
- 运维成本:需要花费大量的人力物力来维护硬件、维护操作系统、维护数据库软件。
- 可扩展性:传统自建数据库采用物理硬盘作为存储空间,受单盘容量的限制,并不支持弹性升级,要增减节点,也比较难实现,如果某个数据库超过了这个存储的限制,需要运维和开发的人员一起进行数据归档来降低数据库容量。
- 可靠性:单机实例,没有数据灾备。需要额外成本建立异地的数据灾备。不管是主从架构、还是负载均衡还是自动容灾方面,传统自建数据库都需要自行实现。
传统数据库面临的挑战
一方面是传统数据库不能满足互联网企业新需求。互联网企业因业务快速扩展,需实时处理海量数据,并发访问量非常大。传统数据库基于专用服务器和高端存储构成共享存储环境,设备造价昂贵,且性能和扩展性极其有限,无法满足互联网行业对数据库高并发、实时在线需求。
另一方面是传统数据库不能适应云计算技术新需求。云计算公司依托技术积累,发起由IOE架构向基于廉价PC服务器技术的变革,降低IT服务支出,倡导以软件为中心的架构演变,降低数据库维护升级的风险。传统数据库环境是集中在一个地点的高稳定、高可靠、高可用高端企业级设备,制约云计算企业未来业务发展,增加长期运营成本。
最后则是传统数据库在实际使用中遇到的瓶颈:
- 无法应对每秒上万次的读写请求,硬盘IO此时也将变为性能瓶颈
- 表中存储记录数量有限,横向可扩展能力有限,纵向数据可承受能力也是有限的,面对海量数据,势必涉及到分库分表,难以维护。大数据查询SQL效率极低,数据量到达一定程度时,查询时间会呈指数级别增长
- 难以横向扩展,无法简单地通过增加硬件、服务节点来提高系统性能
- 对于需要24小时不间断提供服务的网站来说,数据库升级、扩展将是一件十分麻烦的事,往往需要停机维护,数据迁移,为了避免服务间断,如果网站使用服务器集群,则根据集群策略,需要相应的考虑主从一致性、集群扩展性等一系列问题
云原生数据库到底是什么?
什么是云原生
云原生(Cloud Native)是一种构建和运行应用程序的方法,是一套技术体系和方法论。Cloud Native是一个组合词,Cloud+Native。Cloud是适应范围为云平台,Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
云原生的特点
说起云原生的定义,最早要从2013年说起,期间在不断定义完善。可以看出“云原生”的定义,也是随着时代和技术的发展,不断演化。容器技术、微服务、可持续交付、DevOps,这四点构成云原生的四要素特点。
- 容器化: 微服务的最佳载体,Docker起到应用隔离作用,为微服务及其所需的所有配置、依赖关系和环境变量移动到全新、无差别的运行环境,移植性强。
- DevOps: 强调高效地协调开发与运维的合作。通过自动化发布管道、CI 工具快速将应用部署到生产环境中。
- 持续交付: 在敏捷开发中,针对客户的需求变化,发布非常频繁,那么就需要用到持续交付。当存在多个版本同时提供服务的情况,需要支持灰度发布/金丝雀发布等。
- 微服务: 一个微服务基本是一个能独立发布的应用服务,应用间通过RESTful API 通信,可以被独立部署、更新、扩容和重启。
什么是云原生数据库
云原生数据库,是一种通过云平台构建、部署和分发的数据库服务。它以 PaaS 的形式进行分发,也经常被叫做 DBaaS。相比于传统数据库,云原生数据库提供了更好的访问性和可伸缩性。
云原生数据库的特点
- 自动容错: 云原生数据库自动容错机制包括宕机自动迁移,故障自动隔离,负载均衡,自动限流降级等。
- 弹性伸缩: 可以根据 CPU load,memory 使用率等做到自动伸缩,秒级扩容。能够根据业务CPU Load、 Memory 负载时自动伸缩,做到秒级扩缩容能力,灵活的动态分配或释放资源,结合弹性计费策略,可以大幅度降低用户的使用成本。
- 弹性计费: 支持按量(如流量、存储量、调用次数、调用时长、核数、内存资源占用量等)制定多种定价策略,使用户可根据业务情况灵活匹配出最优计量模式,节约用户成本。
- 易于管理: 能够做到从自助运维到自动运维的转变,具备自动化异常分析诊断能力,在运维操作中实现白屏化、智能化、规模化、少人化。
- 安全隔离: 云数据库采用共享池化技术来提高计算、存储、网络等资源的利用率,此外还需要考虑多租户安全稳定的隔离性,避免信息泄露或遭受攻击。
- 极致体验: 用户对于数据库的申请、创建、监控、报警、故障定位都以最简单的方式完成,给用户以极致便捷的体验。
相比传统数据库,云原生数据优势又是什么?
选择云原生数据库有以下几个优点:
易处置性简单来讲,易处置性是指数据库在无需事先通知的情况下,即时处理崩溃或启动进程的能力。尽管现在有先进的技术,但是像磁盘故障、网络隔离故障,以及虚拟机异常等,仍然不可避免。
对于传统数据库,这些故障尤其有害,因为用单个机器运行整个数据库,即便一个很小的问题都可能影响所有功能。而云原生数据库的设计具有显著的易处置性,即允许虚拟机在即时通知下立即重启或重新调度。实际上,易处置性已从单个虚拟机扩展到了整个数据中心。随着我们的环境持续朝着更加稳定的方向发展,云原生数据库将发展到对此类故障无感知的状态。
增强的安全性 DBaaS运行在受高度监控和安全的环境里,受到反恶意软件、反病毒软件和防火墙的保护。除了全天候的监控和定期的软件升级以外,云环境还提供了额外的安全性。相反,传统数据库容易遭受数据丢失和被不受限制的访问。基于服务提供商通过即时快照副本提供的数据能力,用户可以达成“RPO=0,RTO<60秒”的目标。
可扩展性能够在运行时进行按需扩展的能力是任何企业成长的先决条件。因为这种能力让企业可以专注于追求商业目标,而不用担心存储空间大小的限制。
传统数据库将所有文件和资源都存储在同一主机中,而云原生数据库则不同,它不仅允许你以不同的方式存储,而且不受存储问题的影响。
更好的可访问性传统数据库最重要的限制之一,是它只能通过连接数据库系统本身进行访问。而云原生数据库提供对数据库全天候的访问,以便你随时进行任何修改,而你只需要一个可以访问internet的计算机。这样一来,就消除了可能发生的潜在的延迟,同时也为多个开发人员之间的协作开辟了途径。
显著的成本节约建立一个数据中心是一项独立而完备的工程,需要大量的硬件投资,还需要能可靠管理和维护数据中心的训练有素的运维人员。此外,持续的运维会给你的财务带来相当大的压力。而使用云原生的DBaaS平台,你可以以较低的前期成本,获得一个可扩展的数据库,这可以让你腾出双手,实现更优化的资源分配。
云原生数据库实力派Amazon Aurora
云原生数据库鼻祖——亚马逊云科技
说到云原生数据库,就不得不提的还是亚马逊云科技了,作为云计算市场的开创者,亚马逊云科技引领了整个云计算市场的发展,同时云计算也成就了亚马逊云科技。
Gartner最近发布了2021年数据库管理系统(DBMS)市场研究报告(以下简称报告)。根据报告,2021年数据库市场收入接近800亿美元,增幅达到22.3%。这是数据库市场连续5年保持高速增长。报告另一组令人关注的数据是,2021年托管云服务(dbPaaS)的收入增至392亿美元,占整体收入的49%以上。云对数据库市场的颠覆已经展露无遗。
2021年DBMS市场份额前五名中,亚马逊云科技(AWS)的表现值得关注,其2021年增长率达42.3%,几乎是市场增长的两倍。在连续三年增长的增长下,AWS已跃居第二,占比23.9%,与第一名微软仅差0.1%。第三名甲骨文占20.6%,第四名谷歌,第五名IBM。
在非关系数据库领域,AWS以64亿美元获得了43%的份额占比,在该细分领域以主导优势占据首位。这个增长背后是大数据、物联网、机器学习的兴起,非关系型数据的处理需求迅速增长。Gartner数据显示,2021年非关系型数据库的市场收入达到148亿美元,占总体数据库市场的19%。2017年时,这一比例仅为8%。
截至目前,亚马逊云科技目前提供十多种专门构建的数据库服务,支持关系、键值、文档、内存、图、时间序列、宽列和分类账八大数据类型。
为什么亚马逊云科技要提供这么多的数据库产品?在笔者看来,正如亚马逊首席技术官兼副总裁 Dr. Werner Vogels 所言,“开发者希望他们的应用程序能够很好地被构建和有效扩展,为此,他们需要能够在同一应用程序中使用多个数据库和数据模型。很少有一个数据库能够满足多个不同应用场景的需要,一刀切的数据库时代已经过去,开发人员正在使用大量的专用数据库来构建高度分布式的应用程序。
附亚马逊数据库免费试用链接及上手教程:
https://aws.amazon.com/cn/getting-started/databases/get-started/?nc=sn&loc=4&trk=fab55528-7c2e-4517-b90e-65b760ecfc1c&sc_channel=el
云原生数据库在线大会:https://www.awsevents.cn/CloudNative/listDetails.html?trk=1227489f-bfd0-430a-85df-750d92bb9d11&sc_channel=el
云时代Amazon Aurora的发展
如今,企业面临着指数级递增的海量存储需求,业务也面临更多的热点和突发流量带来的挑战。由于企业需要降本增效,进行更智能的数据决策,传统的商业数据库已经难以满足和响应快速增长的业务诉求。
云原生数据库不仅减少了数据库参数的重复配置,而且具有快速部署、高扩展性、高可用性、可迁移性和易运维性以及资源隔离等特点。尤其是基于容器化、微服务、Serverless 等理念设计的具备弹性伸缩与全球部署能力的云原生数据库,能随时随地从多前端访问,提供云服务的计算节点,并且可以灵活及时调动资源进行扩缩容,助力企业降本增效,成为行业发展新趋势。
在此背景下,云原生数据库成为大势所趋,不管是老牌的数据库厂商,还是大型云计算企业都在向这一趋势靠拢。
全球知名咨询公司Gartner指出,云将主导数据库市场的未来,到2022年,75%的数据库将被部署或迁移至云平台,只有25%的数据库会在本地运行。云化无疑代表了未来,企业如何在云原生架构下使用数据库,就成为必须要思考的问题。
此时,为适应变化,关系型数据库需要革新和自我进化。而开路者就是连续 11 年被 Gartner 评为“全球云计算领导者”的亚马逊云科技(Amazon Web Services)。
亚马逊云科技在 2014 年推出关系型数据库Amazon Aurora。它兼容 MySQL 和 PostgreSQL,采用共享存储和读写分离的方式,不仅提升了数据库性能,而且解决了可扩展性问题,让传统互联网公司可以无缝迁移到云上,这让它成为云计算时代的一个代表。
凭借既有传统商业数据库的高性能和可用性,以及具有开源数据库的简单性和成本效益,Amazon Aurora 成为亚马逊云科技历史上用户数量增速最快的云服务,且跻身最受初创公司青睐的八项亚马逊云科技全球服务。
通过DB-Engines趋势图,我们可以发现Amazon Aurora的增长趋势明显,受欢迎程度之高。
企业选择Amazon Aurora背后的原因
为什么它能受到诸多企业青睐?这离不开 Amazon Aurora 强大的性能特性和先进的架构设计以及廉价的成本。
- 兼容MySQL
Aurora完全兼容使用InnoDB存储引擎的MySQL 5.6,使得使用MySQL编写的大部分代码、应用、驱动等无需改变或者很少改变即可实现迁移到Aurora,反之依然。 - 高性能
Amazon通过紧密集成数据库引擎和基于SSD的虚拟化存储层(专为数据库工作负载而开发),其性能和可用性相较于MySQL有大幅提升,从而降低了存储系统的写入次数、尽量避免了锁定并消除了数据库处理线程带来的延迟。在相同硬件条件下,Aurora提供了相对于标准MySQL高达五倍的吞吐量,每分钟能完成600万的插入操作和3000万的查询操作。 - 高可用性和高耐久性
Aurora能够在多个可用区上自动复制数据,并持续地把数据备份Amazon S3上,在不影响性能的情况下实现99.999999999%的耐久性。 Aurora提供了高于99.99%的可用性,可在60秒内自动检测大多数数据库故障并恢复正常,而不会出现崩溃恢复或需要重建数据库缓存的情况。Aurora还能够持续监测实例健康状况,如果出现故障,它会自动切换至只读副本而不会丢失数据。 - 高扩展性
使用Amazon RDS服务扩展了Aurora的容量,还能够增加15个Aurora 副本,以及自动扩展存储容量而无需任何中断,从而避免停机或性能降低的情况。 - 高安全性
Aurora运行在Amazon VPC里,它能够将Aurora限制在自己的虚拟网络里;在数据传输过程中自动加密数据。Amazon RDS为Aurora集成了AWS身份识别和访问管理(IAM)服务,该服务能够非常安全地控制用户对Amazon AWS服务和资源的访问权限。 - 非常廉价
Aurora提供了同高端商用数据库同样的功能,但只有高端商用数据库产品成本的十分之一。用户无需前期投入,只需为自己所使用的每个Aurora数据库实例支付每小时的使用费,也没有最低承诺费用或预付费用。 - 无服务器架构
Amazon Aurora 架构支持 Serverless 无服务器架构。 它采用计算与存储分离的架构,可以做到存储层的快速扩展,提升数据分析能力。同时,它还采用了独特的日志即数据库理念,省去节点跟存储层数据传输的量,以达到性能提升。
如果说云时代的到来推动了数据库的变革,那么与 Serverless 的结合,则再次为数据库的发展添了把火。
亚马逊云科技在 2018 年推出 Amazon Aurora Serverless v1。据悉,它是 Amazon Aurora 的一种按需自动扩展配置版本,它会根据应用程序的需求自动启动、关闭以及扩展或缩减容量,让开发者无需管理任何数据库实例,即可在云中运行数据库。
如此看来云原生数据库真的很强,接下来我们通过以下几个实例来看看亚马逊云科技的云原生数据库的具体优势,这些优势解决了哪些企业的痛点。
三星使用Amazon Aurora降低成本。随着用户数量激增至11亿以上,这家电子巨头决定将其庞大的数据库从单一的传统联网数据中心 (IDC)解决方案转移出去,因为这一解决方案不仅成本高昂,而且难以扩展,因此难以适应不断增长的流量需求。三星电子将其全球三星账户数据迁移到了一个专为云构建且与MySQL和PostgreSQL兼容的关系数据库一Amazon Aurora中。此后,三星运维成本大幅降低,因为三星得以从本地传统数据库的限制性许可成本中解放出来。
九州通采用 Amazon Aurora,轻松实现数据库的读写分离及按需扩展。使用 Amazon Aurora 数据库服务,单个 Amazon Aurora 集群可以支持多达 15 个只读节点,支持在线自动扩展与收缩。整体数据库性能提升 5 倍,TCO 降低了 50%,实现了跨可用区部署、负载均衡 / 自动故障转移,精细监控 / 按需自动伸缩等。同时,还有效降低主库工作负载压力。此外,在性能和成本上取得高效平衡。借助 Amazon Aurora Auto Scaling 功能,实现只读副本按需伸缩,满足业务需求的同时,节省服务器成本。
虎牙直播在全球化过程中,也选择了 Amazon Aurora。2018 年初,虎牙直播上线海外产品 Nimo TV,年底,月活用户达千万级。产品成功登陆东南亚及拉美地区,2019 年进入西班牙市场。据悉,在数据库后台,虎牙直播使用 DynamoDB 存储用户的动态信息,包括支付、状态、好友关注等信息。相对静态的信息存储在 Amazon Aurora 上,如用户的基础信息。Amazon Aurora 能自动扩容,且因为计算和存储分离,当数据量较大时,能单独升级计算实例,确保性能。同时,异常情况下,通常只需 10 秒左右就能自动实现故障转移,对终端用户没有任何影响。并且,利用其全球数据库功能,可以提升本地用户体验。虎牙直播在亚马逊云科技亚太(新加坡)区域部署数据库,在其他区域建立副本,提高当地用户的使用体验。
最近,亚马逊云科技宣布无服务器数据库服务Amazon Aurora Serverless v2(Amazon Aurora Serverless 第二个版本)正式可用,新一代Amazon Aurora Serverless可在几分之一秒内自动扩展到数十万个事务,支持最严苛的应用程序。Amazon Aurora Serverless v2可根据应用程序的需求,以细粒度的增量扩展容量,与为峰值负载预置数据库容量的方式相比,可帮助客户节省高达90%的成本。Amazon Aurora Serverless v2同时兼备Amazon Aurora的高可用性、性能和弹性,以及低延迟和快速查询等功能。使用Amazon Aurora Serverless v2无需预付费用,客户只需为使用的数据库容量付费。
更值得一提的是,Amazon Aurora Serverless v2 支持跨 AZ 的高可用部署和读取扩展,通过持续的监控和尽可能大的利用缓冲池,v2 原地扩展可以做到秒级别。
目前,Amazon Aurora Serverless v2在兼容MySQL和PostgreSQL的Amazon Aurora上正式可用,现已在美国东部(俄亥俄)、美国东部(弗吉尼亚北部)、美国西部(加利福尼亚北部)、美国西部(俄勒冈)、亚太地区(香港)、亚太地区(孟买)、亚太地区(首尔)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)、加拿大(中区)、欧洲(法兰克福)、欧洲(爱尔兰)、欧洲(伦敦)、欧洲(巴黎)、欧洲(斯德哥尔摩)和南美洲(圣保罗)区域推出,并将很快在其它亚马逊云科技区域推出。
总结
伴随数字化转型步入“深水区”,企业的业务需求迭代迅速,数据量和并发访问量呈指数级增长,传统关系型数据库遇到捉襟见肘的扩展能力、大数据处理性能低等挑战。数据对于企业的重要性越来越高,企业对于以数据库为核心的专业服务需求也愈发迫切。传统数据库逐渐难以适应现在企业的需求,而亚马逊云原生数据库Aurora的到来解决了企业在数字化时代的使用传统数据库面临的一切问题。
对于中小企业来说,新冠疫情的冲击反而加速了企业上云的步伐,但在上云的过程中,技术门槛和高额的试错成本,都有可能变成压垮中小企业的稻草。而恰恰亚马逊云原生数据Aurora可以很好地帮助这些中型企业渡过这些难关。
粉丝福利
亚马逊云科技专为开发者们打造了多种学习平台:
- 入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源。https://aws.amazon.com/cn/getting-started/?nc1=h_ls&trk=32540c74-46f0-46dc-940d-621a1efeedd0&sc_channel=el
- 架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。https://aws.amazon.com/cn/architecture/?intClick=dev-center-2021_main&trk=3fa608de-d954-4355-a20a-324daa58bbeb&sc_channel=el
- 构建者库:了解亚马逊云科技如何构建和运营软件。https://aws.amazon.com/cn/builders-library/?cards-body.sort-by=item.additionalFields.sortDate&cards-body.sort-order=desc&awsf.filter-content-category=*all&awsf.filter-content-type=*all&awsf.filter-content-level=*all&trk=835e6894-d909-4691-aee1-3831428c04bd&sc_channel=el
- 用于在亚马逊云科技平台上开发和管理应用程序的工具包:https://aws.amazon.com/cn/tools/?intClick=dev-center-2021_main&trk=972c69e1-55ec-43af-a503-d458708bb645&sc_channel=el
专属福利
福利一: 100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。
https://aws.amazon.com/cn/free/?nc2=h_ql_pr_ft&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all&trk=e0213267-9c8c-4534-bf9b-ecb1c06e4ac6&sc_channel=el
福利二: 最新优惠大礼包,200 数 据 与 分 析 抵 扣 券 , 200 数据与分析抵扣券,200 数据与分析抵扣券,200机器学习抵扣券,200$微服务与应用开发抵扣券。https://www.amazonaws.cn/campaign/?sc_channel=el&sc_campaign=credit-acts-ldr&sc_country=cn&sc_geo=chna&sc_category=mult&sc_outcome=field&trkCampaign=request-credit-glb-ldr&trk=f45email&trk=02faebcb-3f61-4bcb-b68e-c63f3ae33c99&sc_channel=el
福利三: 解决方案CloudFormation一键部署模版库
https://aws.amazon.com/cn/quickstart/
边栏推荐
- QQ电脑版取消转义符输入表情
- 1041 Be Unique
- 数据可视化图表总结(二)
- LeetCode 0108.将有序数组转换为二叉搜索树 - 数组中值为根,中值左右分别为左右子树
- 【Rust 笔记】14-集合(下)
- Typical use cases for knapsacks, queues, and stacks
- 可变电阻器概述——结构、工作和不同应用
- Daily question 2013 Detect square
- [jailhouse article] performance measurements for hypervisors on embedded ARM processors
- [article de jailhouse] jailhouse hypervisor
猜你喜欢
Fried chicken nuggets and fifa22
LeetCode 0108.将有序数组转换为二叉搜索树 - 数组中值为根,中值左右分别为左右子树
In this indifferent world, light crying
Spark中groupByKey() 和 reduceByKey() 和combineByKey()
liunx启动redis
Overview of variable resistors - structure, operation and different applications
Individual game 12
On the characteristics of technology entrepreneurs from Dijkstra's Turing Award speech
Introduction to LVS [unfinished (semi-finished products)]
6. Logistic model
随机推荐
On the characteristics of technology entrepreneurs from Dijkstra's Turing Award speech
2020ccpc Qinhuangdao J - Kingdom's power
Flutter Web 硬件键盘监听
leetcode-556:下一个更大元素 III
【Rust 笔记】16-输入与输出(下)
2022年贵州省职业院校技能大赛中职组网络安全赛项规程
Codeforces round 712 (Div. 2) d. 3-coloring (construction)
Dichotomy, discretization, etc
CPU内核和逻辑处理器的区别
【云原生】微服务之Feign自定义配置的记录
Daily question 1688 Number of matches in the competition
剑指 Offer II 058:日程表
PC register
How to adjust bugs in general projects ----- take you through the whole process by hand
Individual game 12
Educational Codeforces Round 107 (Rated for Div. 2) E. Colorings and Dominoes
Scope of inline symbol
全排列的代码 (递归写法)
Sword finger offer 06 Print linked list from beginning to end
Codeforces Round #715 (Div. 2) D. Binary Literature