Docker在千寻位置的实践

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

以下是精彩内容整理:
千寻位置
千寻位置以“互联网+位置(北斗)”的理念,通过北斗地基一张网的整合与建设,基于云计算和数据技术,构建位置服务云平台,以满足国家、行业、大众市场对精准位置服务的需求。
千寻位置是一个基于卫星定位、云计算和大数据技术的位置服务开放平台,面向企业和开发者、提供精准位置服务运营的平台型公司;致力于让位置创造价值,将公司打造成为提供精准位置服务、数据积累与挖掘、数据融合增值服务、具有全球竞争力的新兴产业集团;以卫星定位为基础,融合各类定位技术,针对特定的应用场景,不同的应用终端,推出与实际场景相结合的解决方案,向各类终端和应用系统提供高精准位置服务。
千寻位置服务是做什么的呢?我们能够提供亚米级到厘米级,甚至事后静态处理毫米级的高清定位服务,为什么能够做到这么高的精度,其实背后有我们地基增强的一张网,我们全国有1500多个基站,这是千寻自己建设的。用户的终端通过接受天上的卫星信号,把信息发送到我们的播发平台,播发平台连接地基增强的站,背后有一个复杂的算法加工,最后把处理过后的数据铺到终端上去,卫星信号经历过电离层、障碍物,还有各种复杂的场景,其实是有一定偏差的,我们就是要努力消除偏差,这就是千寻位置为什么能够提供到亚米级、厘米级的,甚至是静态处理毫米级的最根本原因。
毫不夸张的说,千寻算法可以说是国内在算法领域里面投入最多的一家公司,正是因为我们投入了巨大的人力、物力,所以我们才能够得以对高清定位市场的诉求提供很好的服务。
1.png

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

Docker历程
千寻是阿里巴巴和中国兵器共同投资成立的一家公司,与阿里云深度合作,无论从ECS还是RDS,还是各种各样云计算相关的,当下有一千多台ECS,千寻Docker的历程分成了几个阶段:
在2014年到2015年的时候,用普通的ECS,公司也会做一些云集上的研发,适配各种业务场景,那时候人也不多,我们开了几十台几百台机器即可满足大部分的需求;
到了2016年,公司组织架构也做了一些调整,业务也在发力,对技术也提出了更多的要求,经过技术小组讨论,我们决定尝试在部门引入Docker,Docker并不是特别适用于CPO密集型或者是RAO密集型的,所以我们还是小心求证,不能步子迈得太快,不可能一下子把整个生产环境全部切到Docker上面去;
2016年8月,在线下我们的开发环境和测试环境下面就尝试着去用Docker,效果已经非常明显。每来一个同学就直接给他一台机器,每一个测试的同学都有一套独立的环境,我们网站差不多有40多个应用,如果每个应用部署一台服务器,这个代价还是蛮高的,现在直接给一套Docker的环境,按照规则根据我们设定去做一些安装,这是非常方便的。切到阿里云的Docker上去,好处是它提供了丰富的管理手段,包括监控、运维,包括它做了充分的测试,每一个新版本上来以后,都是经过充分测试才会放出去。我们自己用标准的Docker时候,自己设立了虚拟路由,解决了容器之间互通的问题。
2016年12月 生产环境阿里云Docker,阿里云的Docker天然支持容器之间的互通,它在底层的网络层做了一些处理, 12月份我们开始把相当一部分应用切到我们的生产环境上面,切到阿里云的Docker上去了。
资源利用不充分,1000+机器,服务扩容不方便,开发测试和生产配置不统一,基于这些,千寻切入Docker后有如下情况:
(1)测试环境:几十个系统,一个测试同学一套完整环境,对比机器数(待评估)
(2)使用阿里云仓库管理镜像包,相比以前方式,不需要手动拷贝包,CI集成起来很方便(3)compose管理,使用阿里云管理集群,页面化管理
(4)最开始解决dubbo调用,手工解决网段问题,后来用阿里云的网络,天然打通
(5)标准docker,自己解决夸主机容器互联(虚拟路由,指定网段)

Docker实践
在用Docker的时候,我们有一些自己的东西在里面,比如统一配置中心,从生产上来说,我们希望一个包可以丢到不同的环境里面去,只不过需要给它事先设定一些东西,可能在生产环境它是连着数据库,在开发环节连着另外一个数据库。我们也做了一些基础性的建设,就把统一的配制中心搞起来了,它同样适用于ECS这种情况。
我们同时还要兼顾一下开发同学的效率,开发同学如果感觉很不满意,基本上就是很失败了,比如说日志路径,生产环境所有的应用是日志路径,我们放了个人用户下面。开发同学用的是同一套配置,我们做到能够允许在本地的某一个地方去做一些覆盖,如果发现你这个地方有这样的一个K存在,我就不会使用配置中心,这样就可以大家统一都用同一套配置中心,同时又有自己的个性配置。生产环境只有一套配置中心,那我们有了配置中心,容器在启动的那个时刻,它也会到我们配置中心里面去读配置项。
使用Docker的好处,相信大家应该对Docker都有过比较深的了解,具体如下:
使用阿里云Docker,我们直接一个包放到我们的Docker容器里面,生成一个镜像,这个镜像不管是在开发环节还是在测试环节,还是在哪条生产环节,它都能够无缝的衔接上,这是我们用Docker的一个好处;
使用阿里云镜像仓库是有好处的,省得自己拷贝来拷贝去;
CI基于Docker,算法部门对环境要求较多(如ubunt,centos等),有多种的环境需要对算法进行验证和加工,所以这也是基于Docker去做的;
统一的Dockerfile;
数据卷(集群中多ECS数据卷共享建议使用NAS,可在阿里云容器管理中配置);
使用阿里云容器管理控制台;
创建集群注意网段不要和vpc冲突,集群中一台ECS需要占用一个C段;
偶尔遇到旧容器(名)清理不干净;
一个进程一个容器,admin;
统一配置中心;
非CPU密集型和高I/O型应用。比如像我们自己的播发平台,我们每秒钟就要往下吐数据,基本上就不太适合去做Docker,还有算法在持续不断的进行运算,这个也不太适合去用Docker。
我们一方面要做一些自己的基础化设施建设,另一方面还要响应公司的业务部门的需求,所以很多基础设施做的不完全够,自动化运维和日志监控这一部分,接下来的阶段我们可能会和运维同学一起来做,聚集各部门的能量才能把事情做好。

本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.alibaba-inc.com;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
41 2
|
1月前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
2月前
|
Linux iOS开发 Docker
Docker:容器化技术的领航者 —— 从基础到实践的全面解析
在云计算与微服务架构日益盛行的今天,Docker作为容器化技术的佼佼者,正引领着一场软件开发与部署的革命。它不仅极大地提升了应用部署的灵活性与效率,还为持续集成/持续部署(CI/CD)提供了强有力的支撑。
242 69
|
12天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
29天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
78 2
|
1月前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
12天前
|
数据中心 开发者 Docker
理解并实践Docker容器化技术
理解并实践Docker容器化技术
|
1月前
|
运维 JavaScript 虚拟化
探索容器化技术:Docker的实践与应用
【10月更文挑战第9天】探索容器化技术:Docker的实践与应用
53 3
|
1月前
|
Ubuntu Linux 虚拟化
Docker入门实践(一)
Docker入门实践(一)
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
下一篇
无影云桌面