“云原生(Cloud Native)”现在已经是一个唱遍大江南北的词,相比它的上一代术语“云计算”,云原生更加强调“应用原生长在云上”。
上世纪 50 年代末,虚拟化被提出来,如今看来,这成了云计算基础架构的基石。云计算发展到如今近 60 年,期间各种云相关的技术不断出现,PaaS、IaaS 与 SaaS 是最早一批基于云概念的实际应用,而后出现的 FaaS、BaaS 与 Serverless 等,也在为云不断增添新的动力。
在这个过程中,为了达到在构建应用时“云端优先”的新兴思想,云原生的概念应运而生。云原生的原生指的是在最初设计应用时就原生为云环境做出相应考量,以此在云上充分利用和发挥云平台的各种能力,包括低成本、按需付费、系统弹性可伸缩、高度可管理、业务逻辑解耦等。
Linux 基金会专门成立了云原生计算基金会(CNCF,Cloud Native Computing Foundation)以发展云原生技术,伴随着这几年云原生的快速发展,CNCF 如今也成为了该领域最权威的组织。
由 CNCF 主办的 “CloudNative + Open Source Virtual Summit China 2020 中国线上峰会” 正在进行中,为期 3 天的大会将带来上百场分享,内容将覆盖云原生的方方面面,包括微服务架构、容器、可观察性、存储、安全、身份、策略、开源生态、网络与 CI/CD 等。
其中微服务架构是最吸引我们关注的,不仅因为微服务近几年的火热,还因为在此次大会上,围绕国内开源项目 TARS 建成的“TARS 基金会”首次全面地对外介绍了其相关情况。
在 30 日晚的主题演讲中,TARS 基金会主席单致豪分享了《TARS 基金会:新一代海量微服务开源生态》,为我们揭开了这一基金会的神秘面纱。
https://github.com/TARScloud
“TARS 基金会是 Linux 基金会中微服务开源生态的代表,其面向整个开源微服务生态,而不单单只是最早由腾讯开源的 TARS 这个项目。当前 TARS 基金会已经有超过 30 个开源项目。”单致豪首先强调了 TARS 基金会的立场。
至于什么叫“海量微服务”,腾讯前 CTO 张志东曾用三个维度定义过互联网的海量服务:在线超过千万、索引超过百亿、数据超过百 P。TARS 在腾讯内部打磨十年之久,并在腾讯的社交 、视频、游戏、地图、应用宝与管家等上百个核心业务上广泛应用,微服务规模达到百万级,正是践行着海量服务之道。
微服务已成云原生最核心技术
20 世纪 60 至 70 年代,软件开发人员通常在大型机和小型机上使用单体架构进行软件开发,没有一个应用程序能够满足大多数最终用户的需求。垂直行业使用的软件代码量更小,与其它应用程序的接口更简单,而可伸缩性在当时并不是优先考虑的。
随着互联网的发展,开发人员逐渐将服务层从单体架构中分离出来,逐步产生 RPC 和 C/S 架构。
但是,当时的架构依旧无法应对不断增长的数据流量,更无法满足大型企业的需求。从 20 世纪 90 年代中期开始,分布式架构开始流行起来,面向服务的架构(SOA)越来越占主导地位。
21 世纪初,微服务架构开始出现,一系列基于微服务架构的框架涌现,微服务架构也在近几年迅猛发展,目前其已经进入了新的阶段,大家现在谈得更多的是 Service Mesh 与 Serverless,这些都离不开微服务。
微服务架构的出现,为应对快速变化的业务需求、冗长的开发周期提供了一种新的解决方案,它以模块化的思维应对快速变化的业务需求,解耦系统之间各个子系统、业务、数据库,甚至开发团队。微服务架构使用如自动化部署、自动化业务监控预警、调用链监控、容器化,以及敏捷开发等思想加快软件的开发周期,实现更快速、更高质量的交付,成为当下最流行的架构风格之一。
单致豪以谷歌搜索“microservice”的趋势为例,展示了微服务的发展势头:
他认为,“这也体现出微服务已经成为更多开发者和企业的首选架构,也成为新基建、数字化转型、云原生中最核心的技术。”
为什么成立 TARS 基金会
微服务架构从来都不只是关于 RPC,正如 TARS 项目不只是一个 RPC 框架,开发者常常说采用微服务不难,难的是微服务的治理,说的就是微服务架构中服务治理的重要性与复杂性。
服务治理正是采用微服务时会遇到的一大问题,单致豪介绍,基于分布式的微服务架构中,系统需要考虑服务发现、负载均衡、限流、熔断、超时、重试与服务追踪等具体环节,每个环节都不能出差错,治理起来并不简单。
除此之外,采用微服务架构还会面临以下几大难题:
- 开发难度大:微服务多是跨服务器甚至跨机房调用,开发人员需要处理超时、网络异常等棘手问题。
- 多语言互通:现在的开发语言数量很多,不同程序员有自己的偏好,很难统一。前端、后台, 不同的技术栈,不同开发语言,他们的互通也是很大的难题。
- 性能问题:参考谷歌趋势,在 IT 行业对于“高性能”的搜索一直居高不下。随着用户增多、 访问量增大、服务的调用链也成倍增加,面对海量请求时性能需要得到保障。
- 数据一致性:服务最终需要落地数据,数据的传输、存储、事务处理等需要保障一致性。
Linux 基金会认为,一个好的微服务架构需要具备以下特点:
- 是 DevOps 最佳实践的敏捷研发
- 有完整、全面的服务治理能力
- 支持多种编程语言
- 足够高性能,以及足够高扩展性
单致豪介绍,正是看中了 TARS 项目本身的特性在解决这些问题上的能力,以及其周边生态潜能,所以 Linux 基金会今年 3 月 10 日宣布成立 TARS 子基金会,专门致力于构建一个健康并且开放的微服务开源生态,并且努力解决前边提到的微服务采用困难的问题。
“TARS 基金会的愿景是:为开源微服务项目构建一个中立的非牟利组织,使任何行业都能迅速将创意、以及想法转化为大规模应用,并且快速上线。”单致豪具体说明了 TARS 基金会的意义:
TARS 基金会致力于解决在使用微服务方面可能出现的问题,包括减少开发和服务治理的难度。它旨在解决多编程语言的互通、数据传输、数据存储一致性等问题,并在支持海量请求的同时保证高性能。
同时,TARS 基金会希望吸纳上下游的开源项目,以建立更好的微服务生态。包含但不限于基础设施、存储、开发框架、服务治理、DevOps 和基于任何编程语言的应用。
TARS 基金会微服务开源生态
首先,TARS 项目作为 TARS 基金会的第一个开源项目,在腾讯内部已经应用了 12 年,打磨超过 10 年,目前使用它的产品超过 100 个,广泛应用于腾讯的在线社交、金融服务、边缘计算、汽车、视频、游戏、地图、应用市场和安全等数百项核心业务中。
单致豪全面地介绍了 TARS 的能力:
- 支持多种编程语言,包括 C++、Golang、Java、Node.js、PHP 和 Python
- 可以结合各种 CI/CD 工具
- 服务可以部署在物理机、虚拟机、容器、K8S 上,数据可以选择存储在 Cache、数据库或者文件系统上
- 支持丰富的协议,如自研的 TARS 协议、TUP 协议,也支持业界常用的 SSL、HTTP、PB 等,此外还可以自定义协议
- 在 RPC 调用上可以进行同步、异步和单向多种方式
- 支持丰富的服务治理功能,包括但不限于服务注册/发现、负载均衡、自定义监控、日志、过载保护、熔断机制、IDC SET 等
- 支持各种应用,如深度学习、边缘计算与 API 网关
“这可以帮助开发人员和企业以微服务的方式快速构建自己稳定可靠的分布式应用,从而令开发人员只关注业务逻辑,提高运营效率。”
TARS 项目开源至今三年的时间里,“在软件层面,社区的版本保持稳定的迭代,支持了多种开发语言客户端和服务端的微服务开发和治理,在硬件层面,也移植到 Arm 生态上。”
除了 TARS 项目本身,TARS 基金会也在快速发展,成立的这几个月间,已经汇聚了超过 30 个开源项目、7 家成员组织,以及获得了覆盖游戏、视频直播、互联网工具、娱乐、交通、社交网络与金融等领域 100+ 家公司/企业的采用。
分享中,单致豪还公布了近期陆续加入 TARS 基金会的 4 个开源项目:测试相关的 TARS Benchmark 与 TARS JMeter,服务网关 TARS Gateway,以及此次重磅推出的 TARS K8S。
K8S 目前已经是容器编排的事实标准,结合 TARS 的数据处理与服务治理能力,就成为了一款云原生微服务治理方案,这正是此次重磅推出的 TARS K8S 项目。具体信息还未透露,不过单致豪表示,在会议第二天的圆桌会议中会有核心开发者对项目进行深入解析。
TARS Gateway 是一套基于 TARS 框架开发的通用 API 网关,请求使用 HTTP 协议,后端同时支持 TARS-tup&TARS-TARS 协议、TARS-json 协议、HTTP 协议。 除了协议转发之外,还支持流量控制与黑白名单等功能。
另两个项目出自 TARS Open Lab,这是 TARS 基金会面向未来的开源实验室,主要进行包括测试、集成与兼容等方面的研究。TARS JMeter 与 TARS Benchmark 这两个测试工具正是从中孵化而来。
TARS JMeter 是一款针对 TARS 协议进行私有化定制的 JMeter 测试插件,它具有易用性强、支持分布式、支持复杂场景与数据可监控等特点;TARS Benchmark 是专门为 TARS 服务量身订做的无码压测工具,具备易用性、高性能、可伸缩、支持动态随机和数据实时反馈的特性。
最后,单致豪首次公开了 TARS 基金会生态全景图(landscape):
https://landscape.TARScloud.org
自下而上几个层级分别为:
- 基础层:基础架构(不同架构芯片、云、容器)、基础开发语言
- 存储层和协议层:存储(Cache、数据库、大数据、文件系统)、协议
- 逻辑平台层:框架、服务发现、Service Mesh、日志、监控、配置、追踪
- 应用层和业务层:API Gateway、业务、深度学习、边缘计算、TARS 实验室、DevOps
TARS 基金会的开源微服务生态仍在发展中,我们希望它能快速生长,正如单致豪所言:建设新一代海量微服务开源生态,一个完善的微服务生态,是我们的终极目标。