2019 云栖大会—互联网中间件

9 月 26 日,在杭州云栖大会上各位专家分享了关于互联网中间件的一些内容。

互联网中间件的演进

首先是阿里云智能中间件首席架构师李小平带来的关于互联网中间件演进的分享。

互联网中间件的发展得益于中国互联网用户的规模,规模变化使得同时服务几亿用户成为挑战。而飞速发展的业务需要飞速发展的技术来支持,技术一旦上升一个数量级,复杂度往往更大。

阿里本身中间件经过一段时间的沉淀发展,提出了 Aliware 互联网 PaaS 产品 + 中台的思想,在各行业快速复制。帮助客户进行业务创新。阿里目前基于互联网中间件的业务架构总体如下:

这种基于互联网的中间件给我们带来了什么呢?

  1. 业务规模: TRS 和容量上支持海量业务规模
  2. 稳定性提升:通过限流降级、灰度变更、高度冗余来保障稳定性
  3. 弹性伸缩:支持分钟级应用实例创建和快速部署

但同时也面临着新的挑战:

从互联网中间件再往下该怎样发展呢,我们选择拥抱云原生。云原生技术的关键点包括:

  1. 基于容器技术和 k8s:应用发布和集群管理更容易
  2. Service mesh 技术:多语言的微服务架构
  3. Serverless 技术:Faas+Baas 模式

云原生将极大的改变云的使用方式,相比以往的技术来说,拥有以下优点:

  1. 高性能、高可用:中间件能力向底层融合
  2. 简化的编程范式:Serverless 编程模型
  3. 可观测性、安全性:运维方式的影响

主要的价值体现在:

  1. 开发方式的改变:DevOps、GitOps、应用元数据定义;不同的业务场景选用最合适的语言和技术框架;面向服务编程,而非面向计算机编程。
  2. 部署模式的改变:公有云、私有云、混合云相同的部署模式;消除开发、测试、准生产、生产环境的差异;多种策略进行灰度,减少线上风险。
  3. 运行效率的提升:自动的资源分配、隔离、编排、调度;弹性伸缩和故障切换,甚至故障自愈能力;基础设施的运维与应用运维分离。

阿里关于云原生中间件的参考架构如下:

阿里 Serverless 架构演进

接着许晓斌分享了阿里在线应用的 Serverless 架构演进过程。

首先描述了阿里在线应用的业务特定:

  1. 在线业务对响应时间更敏感,一次用户的请求产生几十甚至上百次分布式调用,而最终的响应时间直接影响转化率。
  2. 应用启动时间可能很长,几百 s 甚至上千 s。
  3. 在阿里 Java 语言是绝对的主流。

在业界,Serverless 技术分层分为 3 层:

  1. Runtime & Framework 层:包括 GraalVM、Spring Cloud Function
  2. DevOps 层:主要是 Knative
  3. Resource 层:主要是 Firecracker

行业发展的特定包括:

  1. 以 Faas 为 Serverless 的主流形式,虽然限制非常多
  2. Java 并不是业界 Serverless 的一等公民,毕竟启动速度太慢,而 GraalVM 正致力于降低 Java 应用冷启动速度。
  3. 提倡开源,包括 Knative 在内的 Serverless 开源组件都在社区内流行。
  4. 传统容器技术不足以满足安全需求,所以轻量级安全沙箱技术得以迅速发展。

通过实际业务情况和业界的对比可以发现,关键难点在于如何保证在需要的时候在极短的时间(毫秒级)分配好资源、启动应用、保证服务可用。而实现该目标后,才得以让多个应用错峰使用同一台机器,这也正是 Serverless 模式比 Book 模式的优势点。

我们主要使用多级弹性能力和快照技术来完成该目标。

快照技术则需要在 1:1 和 1:N 之间进行取舍

阿里整体的 Serverless 架构如下:

互联网中间件助力企业上云

接下来主要是企业关于上云的经验分享,其中比较重点地推荐了阿里云微服务应用托管平台 EDAS。

阿里云目前提供的企业级互联网架构包括:

EDAS 作为微服务托管平台也是比较核心的产品,融合了配置管理、限流降级、负载均衡、流量控制、服务注册与发现以及服务安全等功能。与开源应用相比,主要优势在于融合集成了诸多能力,包括 0 成本接入全链路跟踪、支持限流降级动态配置、支持配置管理并可实时推送等。而使用开源软件,意味着你需要自己搭配使用 Dubbo、SkyWalking、Sentinel、Narcos 等组件,没有开箱即用来得方便。

EDAS 除了常规功能外,比较有特点的功能包括

接下来稍微讲了一下全链路灰度的功能在企业中的应用,包括实现全链路压测的部分功能(流量打标透传)以及全链路灰度集成环境(主要是抽象了一个类似泳道的概念,应用灰度通过打标自动实现而无需单独配置)。

阿里云全面支持 SkyWalking

SkyWalking 是一款开源的 APM 框架,是 Apache 顶级项目。阿里云目前通过 OpenTracing 协议兼容,支持了 SkyWalking 探针接入,主要优点是无需关心背后的 ES 运维以及一些功能上的增强。

功能增强主要包括了监控、诊断、分析、报警四个部分。

感想

互联网中间件应该是转型到云原生中间件了,拥抱 k8s、serviceMesh 以及 serverless,关于这三点对我目前的认知水平来说是有些挑战的。大会上这三点只提到了 serverless,这确实是比较新的技术,在复用开源组件外,对于 Java 应用来说核心的改进点在于应用的极速启动。

阿里的云平台产品基本都是集成了很多组件能力了,EDAS 看起来就至少包括了分布式服务框架、负载均衡组件、配置中心、分布式链路追踪、应用容器技术以及稳定性相关的弹性伸缩、限流降级、统一开关等功能或组件。着重提到的链路压测以及集成灰度,一般功能完善的服务框架也都可以支持,或者改造起来并不困难。

至于 Skywalking,使用 Java 探针模式真的很方便扩展和集成,很有先见之明。阿里云的功能增强方面主要包括 tag 聚合分析以及上下游拓扑功能,基本上也主要是服务端产品层面的功能完善。

留下你的脚步
推荐阅读