高德架构迁移阿里云的实践:从7个私有机房到公有云的历程

云计算带来的变革不言而喻,作为一种新型的 IT 交付模式,切实为企业节省IT成本、加快 IT 与企业业务结合效率、提升创新能力、加强管理水平以及增强系统本身的可靠性等方面提供巨大支持,是企业实现新发展的重要途径,它已然成为全球 IT 产业的主流声音。

为此,CSDN 记者(小编注:本文由 CSDN 供稿)日前采访了国内最早一批提供地图 API 互联网服务商高德的高级运维专家曾伟,从运维的角度分享了高德上云的背后故事和带来的好处、云上架构、运维核心价值的变化等,最终实现了应用服务可用性上升到 99.99%,同比提升了 5 倍,以及运维人员从原先的 45 人降到 16 人。他也表示,企业应当及时抓住云计算技术带来的新机遇,针对自身不足,实施相应的技术和业务变革,拥抱云计算,充分发挥云计算技术在企业管理中的作用,从而增强企业的竞争能力。

高德的 IT 化信息化之路

高德于 2002 年成立,这十几年的发展使得高德产品从简单的车载导航产品应用至整个互联网,目前提供的产品或服务主要有基础服务:定位、搜索、线路规划、导航、步行、公交;O2O:酒店、美食、景点等;车联网:AMAP AUTO 车机版本、无人驾驶;高德大数据:实时路况,躲避拥堵等。

但是如今强大的产品或服务也经历了一个漫长的 IT 信息化成长过程,从运维角度的来说有以下几个阶段:

  1. 没有运维团队的浑沌阶段。2002 - 2007 年是初级的IT阶段,数据生产的服务器由 IT 部门负责,IDC 的服务器是研发人员负责,主要用于地图数据的生产,线上的地图只有一小部分;

  2. 开始建立运维团队,专业化运作。2007 - 2014 年 IT 信息化主要分为 IT 和运维,IT 则负责办公网的产品业务,包括办公电脑、打印机、办公流程的软件;而运维全面负责公司 IDC 机房、服务器、业务,运维整体还处于人肉时代,运维服务效率较低;

  3. 2014 年 7 月 - 至今,云上的高德,实现自动化运维。此阶段高德开始上云,运维逐步迈向自动化的时代,运维人员的故障处理能力、性能等进一步提升等。


高德的数据采集、加工、整合过程

从最初的数据采集、合成、地理等变化到今天的车辆定位系统,高德的数据加工与整合主要分为这几个阶段:

  1. 初级阶段:采集车安装摄像头和 GPS、实景采集、邮寄视频光盘等原始的方式;而内部作业员再通过看录像、轨迹进行数据分析和数据制作,从而实现 3 个月一次的数据更新。在这一阶段是全手工模式,互联网化较低;

  2. 系统阶段:采集车开始使用采集系统软件,再在晚上通过网络回传,脱离光盘作业的形式;之后,通过完善的编辑工具、检查工具,实现了高的质量控制和快的流水线速度,从而进入到数据加工厂阶段;

  3. 平台化阶段:上线高精采集车采集全景、分米级高精轨迹,以及众包的形式进行社会化采集;内业工作平台化,数据流转任务流转平台化,而且全流程有监控,最终进入到流水线生产阶段;

  4. 自动化阶段:未来的采集将全面转向众包化,实现自动回传,而内业的自动化水平高度提升,通过影像识别、大数据分析、自动数据融合等技术提升自动化生产的水平,这也是高德当下努力的方向。

目前,高德主要有地图、导航两个 App 产品,以及 PC 地图,同时还开放了 API 服务,方便移动开发者更好地为用户提供高质量基于位置的服务。

高德基于阿里云的最佳运维实践

运维之痛

在上云前,高德在运维方面经历了很多的痛苦,比如自建机房带来的运维之痛,高德之前有 7 个小机房零散分布在全国各个地方,但随着业务的快速增长自建小机房模式带来很多问题,包括 IDC 电力、空调、网络都很容易故障,也使得当时的运维达到 40 多人;同时也面临大量的运维需求,因为运维需要负责 IDC、电力、网络、服务器、OS、数据库(MySQL、Redis、Oracle、Memcache、PG、MongoDB)、各种应用软件(Nginx、Apache)、开源工具(Jenkins、Puppet),大量的需求使得运维人员的经历分散,产生非常大的压力。另外,有时候因用户激增带来的大流量,加上原本吃紧的带宽等问题,甚至会造成重大活动/节日时的宕机。

基于阿里云的最佳运维实践

曾伟表示,高德在运维方面经历的痛和负重在上云后都得到了根本性的改变,首先基于阿里云实现了统一基础设施的运维,让运维人员不再运维基础设施;同时,阿里云提供的各种云服务有负载均衡、弹性计算 ECS、云数据库 RDS、对象存储 OSS、云数据库 Redis 版、大数据计算服务 MaxCompute(原 ODPS)等,运维人员只需要使用好这些服务就可以了,不需要去维护具体的组件。另外,高德经常有大型活动,用户访问量会在某个阶段激增,这时就需基于阿里云的弹性伸缩服务,就能实现快速扩展的基础设施。最后,运维人员只需要专注于业务的性能、架构、故障等核心价值即可。

但是,高德在刚开始上云时,对于熟悉传统数据中心的运维人员有可能不熟悉各种云服务组件,以及高德 IDC 和阿里云并网运行期间,日志实时传输延迟导致实时数据分析会出现延迟的情况。而通过阿里云提供的完善技术、及时的响应、培训支持,快速地解决了遇到的问题,最终运维人员可以很熟练的使用云服务。

比如,在高德 MySQL 数据库转阿里云 RDS 的过程中,遇到了数据迁云的问题——数据格式、写的方式、导出/导入方式,最后利用阿里云强大的 RDS 直接通过中转区搭建了 DTS 系统,实现了跨网数据库迁移的无缝切换和数据一致性。另外,阿里云技术专家毛一鸣也介绍称,高德也用到了阿里自研的 DRC 产品(Data Replication Center),支持异构数据库实时同步,数据记录变更订阅服务,为跨域实时同步、实时增量分发、异地双活、分布式数据库等场景提供解决方案。

在迁到云上之后,高德地图的应用服务可用性上升到 99.99%,比之前的 7 个小机房提供的服务可用性提升了 5 倍。另外,从以前的每次大型活动系统常崩溃,到国庆出行高峰的运维人员淡定、系统稳若磐石,充分体现了阿里云计算的稳定性。再者,以前高德的新应用上线和扩容,至少得提前 2 个月开始采购服务器、上架、装机、人肉扩容、发布,上阿里云之后,弹性扩缩容基本上在 20 分钟内就完成,新应用上线 10 到 20 分钟内就可以完成资源申请到应用发布上线。

640?wx_fmt=png

如今,高德所有核心业务系统已经全部放在云上,由阿里云提供计算服务。在具体的运维人员事情方面,他们不用再运维基础设施——IDC、网络、服务器等;各种数据库、缓存、负载均衡、发布工具都不用自己去维护,使用阿里云的服务即可;异地容灾只需要申请不同地域的云服务就好了,不需要自己去建设机房。安全面方面,阿里云提供了很多服务,比如防攻击(DDos)、流量清洗、防病毒、防欺诈、代码扫描等;毛一鸣总结阿里云为高德提供的服务大概有这几方面:

  • 首先是 IaaS (Infrastructure-as-a-Service,基础设施即服务):包含多地机房,网络,巡检等;

  • 其次是 PaaS(Platform-as-a-Service,平台即服务):高德使用到的云产品包含弹性计算 ECS、云数据库 RDS、对象存储 OSS、负载均衡、内容分发网络(CDN)、大数据计算服务 MaxCompute(原ODPS)等;

  • 最后是 SaaS(Software-as-a-Service,软件即服务):高德自身的系统提供的服务(如上图所示)。

整体来说,对于高德运维变化最大的就是运维模式的变化,从原来的 IDC 到网络到数据库等基础服务都要自己维护,变化为使用阿里云的各种云服务,运维人员可以专注于架构、故障、性能等核心能力上,员工的成就感得到了很大的提升,同时运维人员从原先的 45 个降到 16 个。也就是说,全面云化后,是运维核心价值的转变和变革。

最后,曾伟也介绍说,高德除了常规导航服务,在上云后,利用阿里云“数加”平台强大的计算处理能力,比如阿里云的大数据计算服务 MaxCompute(原ODPS)、流计算 Stream Computing 等服务,高德可以做出行线路选择、拥堵大数据、躲避拥堵、城市热点分布、景区推荐、商圈热度,主要是根据用户的定位数据,进行实时的数据挖掘,从而跑出预测模型,实时得到现对用户有用的结果。

如果预测某天下午四点的路况,就是先拿到历史数据,每天训练做一个离线的历史回归、预测模型,再加上当天的出行、天气、节假日、突发情况等实时信息,再对线上模型进行调整优化,从而达到最优的预测。而在面对未来的智能交通和车联网,高德基于车联网推出了 AMAP AUTO 车机版本,解决了传统车载系统的数据更新慢、用户体验差、实时路况缺失、不够智能化的问题,长期来说无人驾驶也是一个非常重要的方向,但在车联网的背后,也是高德充分利用了云计算大数据的能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值