Docker在千寻位置的实践

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 云栖TechDay31期,来自千寻位置网的技术总监汤严敏带来Docker在千寻位置的实践的演讲。本文主要从千寻位置的理念和架构开始谈起,着重分析了千寻位置的Docker历程与实践,包括统一配置中心和阿里云镜像库等。

云栖TechDay31期,来自千寻位置网的技术总监汤严敏带来Docker在千寻位置的实践的演讲。本文主要从千寻位置的理念和架构开始谈起,着重分析了千寻位置的Docker历程与实践,包括统一配置中心和阿里云镜像库等。

 

以下是精彩内容整理:

千寻位置

千寻位置以“互联网+位置(北斗)”的理念,通过北斗地基一张网的整合与建设,基于云计算和数据技术,构建位置服务云平台,以满足国家、行业、大众市场对精准位置服务的需求。

千寻位置是一个基于卫星定位、云计算和大数据技术的位置服务开放平台,面向企业和开发者、提供精准位置服务运营的平台型公司;致力于让位置创造价值,将公司打造成为提供精准位置服务、数据积累与挖掘、数据融合增值服务、具有全球竞争力的新兴产业集团;以卫星定位为基础,融合各类定位技术,针对特定的应用场景,不同的应用终端,推出与实际场景相结合的解决方案,向各类终端和应用系统提供高精准位置服务。

千寻位置服务是做什么的呢?我们能够提供亚米级到厘米级,甚至事后静态处理毫米级的高清定位服务,为什么能够做到这么高的精度,其实背后有我们地基增强的一张网,我们全国有1500多个基站,这是千寻自己建设的。用户的终端通过接受天上的卫星信号,把信息发送到我们的播发平台,播发平台连接地基增强的站,背后有一个复杂的算法加工,最后把处理过后的数据铺到终端上去,卫星信号经历过电离层、障碍物,还有各种复杂的场景,其实是有一定偏差的,我们就是要努力消除偏差,这就是千寻位置为什么能够提供到亚米级、厘米级的,甚至是静态处理毫米级的最根本原因。

毫不夸张的说,千寻算法可以说是国内在算法领域里面投入最多的一家公司,正是因为我们投入了巨大的人力、物力,所以我们才能够得以对高清定位市场的诉求提供很好的服务。

c93e41b82799b9c2ca21da1dd6244dce052c2123

图为千寻网站架构图。技术无所谓优劣,在合适的人、合适的团队手上,才能够发挥出它的作用,然后解决公司当下和未来可能出现的一些业务场景。我们的架构中,一边是我们公司的网站,一边是我们的服务售卖平台,一边是用户使用过程当中计费相关的,背后的播发是有播发团队去负责的。

 

Docker历程

千寻是阿里巴巴和中国兵器共同投资成立的一家公司,与阿里云深度合作,无论从ECS还是RDS,还是各种各样云计算相关的,当下有一千多台ECS,千寻Docker的历程分成了几个阶段:

  • 2014年到2015年的时候,用普通的ECS,公司也会做一些云集上的研发,适配各种业务场景,那时候人也不多,我们开了几十台几百台机器即可满足大部分的需求;
  • 到了2016年,公司组织架构也做了一些调整,业务也在发力,对技术也提出了更多的要求,经过技术小组讨论,我们决定尝试在部门引入DockerDocker并不是特别适用于CPO密集型或者是RAO密集型的,所以我们还是小心求证,不能步子迈得太快,不可能一下子把整个生产环境全部切到Docker上面去;
  • 20168月,在线下我们的开发环境和测试环境下面就尝试着去用Docker,效果已经非常明显。每来一个同学就直接给他一台机器,每一个测试的同学都有一套独立的环境,我们网站差不多有40多个应用,如果每个应用部署一台服务器,这个代价还是蛮高的,现在直接给一套Docker的环境,按照规则根据我们设定去做一些安装,这是非常方便的。切到阿里云的Docker上去,好处是它提供了丰富的管理手段,包括监控、运维,包括它做了充分的测试,每一个新版本上来以后,都是经过充分测试才会放出去。我们自己用标准的Docker时候,自己设立了虚拟路由,解决了容器之间互通的问题。
  • 201612 生产环境阿里云Docker,阿里云的Docker天然支持容器之间的互通,它在底层的网络层做了一些处理, 12月份我们开始把相当一部分应用切到我们的生产环境上面,切到阿里云的Docker上去了。

资源利用不充分,1000+机器,服务扩容不方便,开发测试和生产配置不统一,基于这些,千寻切入Docker后有如下情况:

1)测试环境:几十个系统,一个测试同学一套完整环境,对比机器数(待评估)

2)使用阿里云仓库管理镜像包,相比以前方式,不需要手动拷贝包,CI集成起来很方便(3compose管理,使用阿里云管理集群,页面化管理

4)最开始解决dubbo调用,手工解决网段问题,后来用阿里云的网络,天然打通

5)标准docker,自己解决夸主机容器互联(虚拟路由,指定网段)

 

Docker实践

在用Docker的时候,我们有一些自己的东西在里面,比如统一配置中心,从生产上来说,我们希望一个包可以丢到不同的环境里面去,只不过需要给它事先设定一些东西,可能在生产环境它是连着数据库,在开发环节连着另外一个数据库。我们也做了一些基础性的建设,就把统一的配制中心搞起来了,它同样适用于ECS这种情况。

我们同时还要兼顾一下开发同学的效率,开发同学如果感觉很不满意,基本上就是很失败了,比如说日志路径,生产环境所有的应用是日志路径,我们放了个人用户下面。开发同学用的是同一套配置,我们做到能够允许在本地的某一个地方去做一些覆盖,如果发现你这个地方有这样的一个K存在,我就不会使用配置中心,这样就可以大家统一都用同一套配置中心,同时又有自己的个性配置。生产环境只有一套配置中心,那我们有了配置中心,容器在启动的那个时刻,它也会到我们配置中心里面去读配置项。

使用Docker的好处,相信大家应该对Docker都有过比较深的了解,具体如下:

  • 使用阿里云Docker,我们直接一个包放到我们的Docker容器里面,生成一个镜像,这个镜像不管是在开发环节还是在测试环节,还是在哪条生产环节,它都能够无缝的衔接上,这是我们用Docker的一个好处;
  • 使用阿里云镜像仓库是有好处的,省得自己拷贝来拷贝去;
  • CI基于Docker,算法部门对环境要求较多(如ubuntcentos等),有多种的环境需要对算法进行验证和加工,所以这也是基于Docker去做的;
  • 统一的Dockerfile
  • 数据卷(集群中多ECS数据卷共享建议使用NAS,可在阿里云容器管理中配置);
  • 使用阿里云容器管理控制台;   
  • 创建集群注意网段不要和vpc冲突,集群中一台ECS需要占用一个C段;
  • 偶尔遇到旧容器()清理不干净;
  • 一个进程一个容器,admin
  • 统一配置中心;
  • CPU密集型和高I/O型应用。比如像我们自己的播发平台,我们每秒钟就要往下吐数据,基本上就不太适合去做Docker,还有算法在持续不断的进行运算,这个也不太适合去用Docker

我们一方面要做一些自己的基础化设施建设,另一方面还要响应公司的业务部门的需求,所以很多基础设施做的不完全够,自动化运维和日志监控这一部分,接下来的阶段我们可能会和运维同学一起来做,聚集各部门的能量才能把事情做好。

 

 

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
SQL 数据库 Docker
OBCP实践 - OceanBase Docker 体验
开发者和技术爱好者可以在无需复杂安装配置的情况下迅速搭建OceanBase数据库环境,从而方便地进行功能测试、性能评估或者开发调试等实践活动。同时,由于Docker的便捷性,此方法也支持跨平台部署,使得OceanBase数据库能够在不同的操作系统(如Linux、Windows、macOS)上轻松体验。
70 2
|
2月前
|
运维 云计算 Docker
深入理解与实践:基于Docker的微服务架构优化策略
本文旨在为软件开发和运维人员提供一个全面的指南,探讨如何通过Docker容器技术优化微服务架构。我们不仅深入分析了Docker在微服务环境中的关键作用,还提出了一系列实践策略,以提高部署效率、增强系统稳定性,并确保服务的可伸缩性和安全性。通过具体案例分析和比较传统部署方式的局限性,本文展示了Docker如何成为微服务架构优化不可或缺的工具,旨在帮助读者构建一个更加灵活、高效和可靠的服务环境。
149 1
|
4月前
|
网络协议 jenkins 调度
Docker【部署 06】Swarm实践及Operation not permitted和No chain/target/match by that name问题处理
Docker【部署 06】Swarm实践及Operation not permitted和No chain/target/match by that name问题处理
120 0
Docker【部署 06】Swarm实践及Operation not permitted和No chain/target/match by that name问题处理
|
6月前
|
存储 分布式计算 Hadoop
基于docker的Hadoop环境搭建与应用实践(脚本部署)
本文介绍了Hadoop环境的搭建与应用实践。对Hadoop的概念和原理进行了简要说明,包括HDFS分布式文件系统和MapReduce计算模型等,主要通过脚本的方式进行快捷部署,在部署完成后对HDFS和mapreduce进行了测试,确保其功能正常。
|
4月前
|
Linux API Docker
Docker下部署微服务实践踩坑总结
Docker下部署微服务实践踩坑总结
79 0
|
1月前
|
Kubernetes Go 开发者
Go语言与Docker容器结合的实践应用与案例分析
【2月更文挑战第23天】本文通过分析实际案例,探讨了Go语言与Docker容器技术结合的实践应用。通过详细阐述Go语言在容器化环境中的开发优势,以及Docker容器技术在Go应用部署中的重要作用,本文旨在为读者提供Go语言与Docker容器结合的具体实现方法和实际应用场景。
|
1月前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
61 0
|
3月前
|
Java Docker Windows
Windows下部署SpringBoot的实践方案(Docker & Docker Desktop)
Windows下部署SpringBoot的实践方案(Docker & Docker Desktop)
60 0
|
4月前
|
运维 Cloud Native Linux
【云原生|Docker系列第4篇】Docker的容器的入门实践
【云原生|Docker系列第4篇】Docker的容器的入门实践
|
4月前
|
Cloud Native 应用服务中间件 nginx
【云原生|Docker系列第3篇】Docker镜像的入门实践
【云原生|Docker系列第3篇】Docker镜像的入门实践