在云原生技术全面爆发之前,我们开发的应用可以被称为非云原生应用,非云原生应用并没有考虑到应用的弹性和规模性,甚至很多都不具备扩展性,当业务规模扩大时,特别依赖硬件的升级,进而带来了很多问题。云原生的出现带来了新的开发方式,然而这一技术处于快速的发展过程中,导致很难定义清楚各类概念和理解各种技术名词。 为此,Infoq专门采访了京东云中间件团队负责人李道兵,了解京东云在云原生领域的理念和相关探索,以期对开发者有所帮助。以下为本次采访的整编内容。
云原生理念
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
云原生最佳实践
京东云的云原生实践
Serverless 实践
真正的无服务器,就是所谓的函数计算 FaaS;
类似京东云的原生容器,容器直接呈现给用户,并且背后不需要有虚拟机来支持;
应用比较广泛的无服务器,背后虚拟机由云厂商来提供,但是对用户不可见,仍然是以虚拟机的方式来提供容器。
负责提供计算能力的 FaaS
负责提供通信能力的 Queue Service 和 Notification Service
负责提供持久化能力的 Serverless KV 和 Object Storage
负责提供入口的 API Gateway
负责提供编排能力的 Step Function
FaaS
通过对象存储上传事件可以触发多个函数,完成实时图片或文件筛选、转存、创建缩略图、转换视频编码等处理分析。通过事件触发机制,您能够快速部署复杂的应用与服务,构建一个弹性、可靠的后端系统。
通过函数服务和 API 网关构建后端,以验证和处理 API 请求。采用函数服务构建可灵活拓展架构,轻松创造丰富、个性化的应用程序体验。
队列服务
异步解耦,削峰填谷。上下游系统处理能力存在差距的时候,利用队列作为数据的缓冲器,增加系统架构的可用性和可靠性,平滑处理峰值流量,解耦系统架构,避免对业务主流程的影响。
性能扩展,容错处理。由于队列服务会解耦分离用户应用的处理进程,因此对于有扩展需求的应用,可以轻松提高从队列服务发送或接收速率来增加用户应用的处理能力,对于部分故障的模块可以从整个系统中摘除。
原生容器
结束语
作者简介:京东云产品研发部中间件负责人,作为开源项目的爱好者,李道兵曾担任Debian Developer、维基百科中文管理员,维护 iso-codes 等开源方面的工作。关注服务安全、架构健壮性(高可用、可测试、可追溯)等领域,主导了多个高压力项目,推崇高可用、可伸缩、低耦合的架构设计。