50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

高德亿级流量接入层服务的演化之路

  • 2020-03-04
  • 本文字数:3078 字

    阅读完需:约 10 分钟

高德亿级流量接入层服务的演化之路

2019 杭州云栖大会上,高德地图技术团队向与会者分享了包括视觉与机器智能、路线规划、场景化/精细化定位时空数据应用、亿级流量架构演进等多个出行技术领域的热门话题。现场火爆,听众反响强烈。我们把其中的优秀演讲内容整理成文并陆续发布在「高德技术」公众号上,本文为其中一篇。


2019 杭州云栖大会高德技术专场讲师系列:



阿里巴巴资深技术专家孙蔚在高德技术专场做了题为 《高德亿级流量接入层服务的演化之路》 的演讲,主要分享了接入层服务在高德业务飞速发展过程中,为应对系统和业务的各方面挑战所做的相关系统架构设计,以及系统在赋能业务方面的思考和未来规划。


以下为孙蔚演讲内容的简版实录


高德地图的 DAU(日活)已经过亿,服务量级是数百亿级。高德的应用场景,比如实时公交、实时路况、导航、司乘位置的同时展示等,对延迟非常敏感。如何做到高可用、高性能的架构设计,高德在实践中总结了一套解决方案。


今天主要分享三个方面的内容:


  • 接入层定位思考与挑战

  • 高可用、高性能的架构设计

  • 高德服务端的思考及规划

一、接入层定位思考与挑战

首先介绍下 Gateway,从架构上看,Gateway 在中间位置,上层是应用端,下层是引擎,例如驾车引擎、步导引擎等等。目前已接入 80+应用,500 多个 API 透出,QPS 峰值 60W+。


从 Gateway 的定位来思考,作为网关,最重要的就是稳定,同时能提效和赋能。一句话概括:如何在资源最少的情况下,在保证稳定的前提下,以最快速度帮助业务的达成,这就是服务端的定位。


高德的网关设计挑战在于每天数百亿级的流量过来,场景对延迟又特别敏感。举个例子,很多开发者和应用都在使用高德定位服务,定位服务架构挑战 5 毫秒内需返回。


为了解决这些问题,高德做过一次比较大的系统架构升级,主要做了几方面的工作。首先是 流式、全异步化改造。机器数量减少一半,性能提升一倍,通过这个架构升级达到了。


其次是 加强基础支撑能力建设,为配合引擎提效,做了接口聚合、数据编排和流量打标与分流。


此外,为了提供服务稳定性,同时提升单元性能,做了 高德单元化网关解决方案。最主要是方便其他业务快速实现单元化。

二、高可用、高性能的架构设计

重构前比较严重的问题是服务性能低,BC 服务器综合性能在 1200QPS。稳定性风险比较高,特别是网络抖动,如何保证整个系统的稳定性,这可能是最大的挑战。所以,对于整个架构的思考,最主要的事情是做异步化


高德接入层网关演进过程主要经历了 3 个阶段:



1. 异步+Pipeline 架构改造


1)流式、全异步化架构



如上图 Pipeline 的架构模型,我们在 2016 年开始做,那时候还没有很流行,我们自己实现了异步认知,再加入 Pipeline 架构模型。


采用流式、全异步化的架构模型,使用 Tomcat nio+Async Servlet + AsyncHttpClient。Gateway QPS 峰值 60W,服务 rt 控制在 1ms 左右。



整体服务是 Pipeline 架构,在服务的上行和下行关键节点进行了扩展点设计,利用该扩展点设计,解决了接口的历史包袱问题。使用到的相关工具类库也要注意异步性能问题,在全链路异步化的时候,最核心的是相关的工具,也必须解决异步化的问题。要不然就是内部有阻塞,基本上会带来整个链路的阻塞。


收益:单机性能提升了 400%,服务延迟低于 2 毫秒,现在基本上都是在 1 毫秒左右。


2)反应式编程探索:Vert.X && Webflux



我们也做了反应式编程,主要用 Vert.X。我们一些同步调用的场景需要修改为异步,他比较特殊,RPC 的依赖比较少,主要是同步依赖 RDB、Mongodb、Http 接口等,这时候我们用 Vert.X 来做 IO 任务及数据编排,Http 异步调用还是用的 AsyncHttpClient。最后的效果,QPS 大概在 5 万左右,RT 是 22 毫秒左右。


高德现在的打车业务中有一个业务场景,服务里要调服务 A、服务 B、服务 C、服务 D、服务 E、服务 F,最多的时候要调 27 个服务,还要做业务逻辑。用 Webflux 更合适一些,不仅可以做到异步化改造,还可以用它做复杂业务逻辑编排。使用 Webflux 可以直接使用 Netty 处理链接、业务层用 Reactor 交互,全反应式编程,IO 线程与业务线程互不阻塞,最大限度压榨 CPU 资源。


在这个项目里,反应式编程最终达到的效果,QPS 提升了 3 倍,RT 降低 30%。


2. API 聚合、数据编排与打标分流



面对新的业务,压力越来越大,并且每次迭代的速度要求越来越快。目前 API 数量超过 500+,接口数据项超过 400。对于 API 的定制化、复用,怎么解?就是通过 API 聚合和数据编排。



打标分流是另外一个挑战,随着业务的发展,很多服务都需要做架构升级,需要做重构,算法和模型也需要不断的调优,这时候对于业务或者研发来说,对业务参数进行打标和分流,可以降低风险。


3. 高德单元化网关


1)高德单元化网关:路由策略


对于 业务异地多活、单元化需求,我们做了单元化路由的解决方案,这里最核心的,给业务提供的能力是:当有用户请求过来时,能够实现就近接入能力,尽量减少跨单元调用。



单元路由主要帮助业务解决异地多活的能力,我们支持的路由策略,主要分为两种:第一种是基于路由表,第二种是基于取模策略。如果你的应用对就近接入需求比较强烈,对延迟敏感,就可以用基于路由表策略。如果是对多单元同写敏感度高的场景,用取模策略更合适。两种我们都支持。


2)高德单元化网关:路由计算



上图是我们做的路由计算核心逻辑图。具体而言注意以下几点:1)单元映射,用户划分分组、分组指向单元映射的方式完成用户到单元的绑定关系,单元切换时只切换分组到单元的映射关系;2)路由计算,多数情况下通过 BloomFilter 计算所在分组,新用户则会采用取模策略计算所在分组;3)跨单元路由,BloomFilter 的误命中会导致跨单元路由;新用户采用取模策略也将导致跨单元路由,直至路由表更新;4)数据结构,基于性能、空间、灵活性和准确率方面的综合考虑,在 BloomFilter 、BitMap 和 MapDB 多种方案中,选择 BloomFilter,万分之几的误命中率导致的跨单元路由在业务可接受范围内。


3)高德单元化网关:分组优化



这个是目前正在迭代做的网关虚拟分组优化,分为 3 单元*4 片,每个单元分成四个片。


目标提高单元划分的准确性,同时每次访问需要 7 次计算优化为 3 次,同时解决以前如果发现单元出现问题流量只能全切,现在可灰度切量。


目前使用的案例有云同步、用户等。用户单元化的案例,最终的收益是,整个单元计算耗时小于 2 毫秒,跨单元路由比例低于 3%。

三、思考及规划**

Gateway 现在是集中化的场景,怎么变成分布式的解决方案?



这方面我们也做了尝试。分布式网关一般有两种实现路径:第一种是做 SDK,第二种是做边车或服务网格的方式。SDK 方式的分布式网关我们已经在部分场景使用,缺点是对异构支撑困难,和应用的隔离性不好,好处是开发比较快,目前每天也有过百亿的请求在访问。


边车或者服务网格其实是我们架构的终局,他能解决异构、应用系统隔离性等问题。因为:


  • Gateway Sidecar 与业务应用运行于同服务器的独立进程,既具有分布式部署优势又具备较好的隔离性;

  • Gateway Control Manager 负责管理分布式 Gateway Sidecar,相当于 Service Mesh 的控制面,主要负责网关配置和元数据管理、服务高可用以及统计打点、异常监控和报警等。


服务网格优势是去中心化的分布式部署方式,天然就具备高可用性和水平扩展性,无单点和性能瓶颈问题,缺点是不太适合实现聚合 API 的实现。服务网格我们目前是基于蚂蚁 SOFA 来做,主要用来解决异构 RPC 调用的问题。


最后给个建议,根据实际经验,大家如果在做服务或 Gateway 相关的事,如果你面临的挑战是机器数量减少一半,性能提升一倍,全链路异步化架构可能会对你有所帮助。


2020-03-04 14:492888

评论

发布
暂无评论
发现更多内容

BeeWorks 即时通讯全家桶:一站式办公的强大引擎

BeeWorks

即时通讯 IM 私有化部署

从TikTok到X:全球社交媒体平台上的危机预警机制

沃观Wovision

社交媒体 海外舆情监控 沃观Wovision

Data Agent再升级:一客一策,营销服务的理想型来了!

字节跳动数据平台

欧美 VS 东南亚:海外达人营销打法有何不同?

Wolink

出海 海外社媒营销 海外推广 沃链Wolink

如何通过Python SDK创建一个新的Collection

DashVector

数据库 AI 向量检索 大模型

2025版《数字化转型管理参考架构》趋势白皮书

优秀

数字化转型 数字化 数字化管理 数字化架构

新时代背景下,财务团队优化情景规划的实用指南

智达方通

全面预算管理 财务管理 情景规划

网易UU远程和向日葵远程控制,哪一款更优秀?

科技热闻

Infobip确立人工智能为亚太客户体验新标杆

财见

Prometheus 监控 Kubernetes 最新极简教程

巴辉特

Kubernetes Prometheus

手把手教你构建基于魔搭 x OceanBase MCP 的 Agent

老纪的技术唠嗑局

OceanBase 社区版 agent MCP

HarmonyOS NEXT 会议应用——多设备协同与应用接续(高级)

最新动态

HarmonyOS的连接艺术之三:拉起指定类型的应用,打造个性化体验

最新动态

鸿蒙 NEXT 电商应用安全支付与密码保护实践

最新动态

HarmonyOS蓝牙串口协议(SPP)详解:实现设备间可靠数据交换

最新动态

kubelet报listen tcp [::1]:0: bind问题解决

天翼云开发者社区

容器

inode节点扩容

天翼云开发者社区

扩容 inode

220万精选面试题库-Java八股面试宝典!

程序员高级码农

Java Java 面试

七牛灵矽 AI 正式发布:从“会说话”到“懂人心”的智能语音交互全新升级

七牛开发者

智能硬件 AI+ 智能语音交互

GitHub 上 Star 数量前 18 的开源 AI Agent 项目

NocoBase

人工智能 GitHub 开源 AI AIAgent

朗空量子与 Anolis OS 完成适配,龙蜥获得抗量子安全能力

OpenAnolis小助手

开源 操作系统 龙蜥社区 龙蜥生态

鸿蒙编程江湖:I/O 密集型任务处理及 ArkTS 的异步锁机制

最新动态

RISC-V基金会Data Center SIG 月会圆满结束,龙蜥副理事长单位成员当选副主席

OpenAnolis小助手

操作系统 risc-v 龙蜥社区 Data Center SIG

实时捕捉全球声音:社交媒体监控如何服务国际舆情管理?

沃观Wovision

社交媒体 舆情监控 沃观Wovision

HR Path战略收购澳企RKM Consulting,以强化全球布局

财见

德莎胶带闪耀DIC EXPO 2025,以创新粘接技术赋能显示产业进化

财见

昆仑万维Mureka V7.5模型上线,AI音乐创作水平再迎新高度

新消费日报

kubectl logs 报错问题解决

天翼云开发者社区

容器

BeeWorks企业内部通讯,企业安全高效沟通

BeeWorks

即时通讯 IM 私有化部署

Pole Star收购Clearwater

财见

来火山引擎「算子广场」,一键处理多模态数据

字节跳动数据平台

高德亿级流量接入层服务的演化之路_文化 & 方法_高德技术_InfoQ精选文章