写点什么

肖德时:如何用 Docker 来管理微服务架构的乱网

  • 2016-03-15
  • 本文字数:1917 字

    阅读完需:约 6 分钟

2016 年 1 月 22~23 日,ECUG Con 2015 大会在北京新疆大厦举行,ECUG(Effective Cloud User Group,实效云计算用户组)是由 Erlang 爱好者、分布式领域的知名专家组成的民间技术团体。ECUG Con 是该组织一年一度交流云计算产业前沿技术的大会。来自数人云的肖德时分享了“Docker 在数人云的实践”主题演讲。

数人云也是在 2015 年 Docker 最火的时候加入了这个创业大军的,所以肖德时此次分享主要讲述 Docker 在数人云的最佳实践。

数人云技术架构设计

作为一家创业公司,数人云在 2015 年只做了一件事情,那就是提供 PaaS 功能,而容器技术是不可缺少的重要组成部分,这也就是为什么现在很多企业内部会大量使用 Docker 的原因。只不过现在的问题是,我们能用一个小小的芯片就可以取代 60 年前需要用卡车拉的一台电脑,可是为什么现在企业不能用一台电脑管理整个电脑集群,让复杂的事情简单化,既节省人力又便于管理?

肖德时在这里说,其实谷歌本身计算管理的方式就是经过二十多年的磨练才达到现在的高水平的,也希望国内也有这样的管理方式。谷歌的管理架构有几个特点。首先推出的是针对容器的 ECS 架构,符合国内创业需求。所有云化的请求都是 ELB 请求,完全依赖于硬件的支撑,这不是企业架构里面最重要的部分。

在管理引擎和控制面板方面,数人云所做的就是上图黄色部分,也是核心组件。除了追求快速度之外,还要让它具备管理机器集群的能力,提供资源和 CPU,最核心的任务是管理 UI 和内部交互。所有通信都是独立的,而且全部用 Docker 进行容器化包装,所有组件的分发都是通过中央来进行分发。

数人云之前做部署的时候用的是镜像包转变。从微服务架构到分布式 DCOS 架构设计的转变过程中欠考虑的事情就是没有考虑分布式状况。但在实际应用场景中,分布式架构可以带来的好处,一是可以快速复制,二是可以在廉价的机器上进行计算。所以,用 Docker 的目的是把现有的微服务包装起来,能够快速的分发,实现多方面去复制。从本质上来说,数人云的架构是把环境带上做 Ruild、Ship、Run 的实现,而且内部每一个开发者和运维,都会用 Docker 的方式来交互。

数人云创业之初做的几件事

在创业一年之后,肖德时总结了他们的团队做了哪些有决定性的事情。

  • 第一件事就是最大程度地使用 Go 语言,不仅因为 Go 语言性能高,它的语法简单易于理解也是关键点,这就避免了招聘尖端工程师来组建开发团队了。
  • 第二件事情就是团队内容标准化,在开发工程上 Go 语言非常易于理解和易于约束,这也有助于把一个服务更详细的拆解,一个简单的分布式应用差不多拆了 50 个,当作一个微服务来处理,对于这样大规模的任务,需要一个集群来管理微服务,如果没有集群来管理,拆的再细也是控制不了的。
  • 第三个是 API 的设计,如何设计一个最好的 API,根据经验不同是无法预测的。数人云团队是在开发之前就把输入和输出做了一次内部的预演,降低了成本。

微服务应用开发在数人云的实践

数人云现在需要管理的 App 有 50 多款,根本不可能用人工的方式去管理,所以他们采用自己的 MySQL 管自己的数人云:搭建 3 套关系来应对快速迭代的需要,不需要做很多的架构设计。

在分享过程中,作为 Docker 的开发者之一的肖德时也谈到了 Docker 的另一面。Docker 本身现状是有坑的:

  • 第一点,它的语言并不是标准的,只是 Docker 公司的实现,无法满足企业的需要。企业需要一个迁移,就是对每一层的认证。
  • 第二点是每一层的存储需要有最优的,但 Docker 没有,而且目前还没有最佳解决方案,尤其是在和企业客户熟悉完 Docker 之后不能直接用卡包来解决这个问题,是需要考虑的。
  • 第三点,开发团队经过一年多的实践,Docker 的本身特性都是源于 Kernel,但是特性和 Kernel 是分离的,只有 Docker 自己做一个 Kernel 才能包容在一起。
  • 第四个是安全方面,根据最近的报告显示,在 KVM 和目前所有的虚拟机里面,Docker 都是可以穿透到主机上,只是这个漏洞还没有暴露出来。但是 1.10 版本仍然存在这个问题,也就是说 Docker 现在是不安全的,使用过程中一定要和公网做一个隔离。

有的人问为了节省资源可不可以在物理机里多启动一个 Docker,在这种情况下可以对 Docker 做迁移?肖德时解释说,

如果是在进程无状态的情况下,必须要这么做。有状态的话,在中断时间用分布式存储解决序列化问题。迁移的过程是调度,从一台机器上调到另外一台机器上。

另一个来自传统企业的听众问到,如何把传统应用快速迁移到云环境下?肖德时回答说:

分布式存储这一块也是 Docker 发力的地方,迁移过程中遇到一个问题就是,如果企业内部有几千个应用同时单点访问一个盘,那么 IO 性能肯定是很差的。解决的办法就是把 IO 分流,变相的把 IO 性能分到更多机器上,通过挂盘的方式来解决,目前这是最成熟的方式。

2016-03-15 09:106200
用户头像

发布了 181 篇内容, 共 100.3 次阅读, 收获喜欢 207 次。

关注

评论

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

教你用Java7的Fork/Join框架开发高并发程序

华为云开发者联盟

Java 算法 线程 高并发 Fork/Join框架

浙江金华市正规等保测评机构有几家?在哪里?联系电话是多少?

行云管家

网络安全 等保 等保测评

Vue进阶(幺叁幺):父子组件传值实现数据深拷贝

No Silver Bullet

Vue 深拷贝 10月月更

我用 10000 张图片合成我们美好的瞬间

荣顶

JavaScript 大前端 canvas 图形处理

专场预告 | DTCC数据库技术大会云溪数据库专场

云计算

DCI架构是如何解决DDD战术建模缺点的?

华为云开发者联盟

领域驱动设计 对象 建模 对象编程 DCI架构

2021年9月国产数据库大事记

墨天轮

数据库 华为云 国产数据库 达梦 人大金仓

为绿色而生:智慧矿山可视化数治监管

一只数据鲸鱼

数据可视化 智慧矿山 煤矿 矿山

“828页Java面试手册”在我手,何愁offer不到手!

Java 程序员 架构 面试 后端

万字长文,一篇吃透WebSocket:概念、原理、易错常识、动手实践

JackJiang

websocket 即时通讯 IM

OpenCV学习(三):三重境界

轻口味

OpenCV图像处理 10月月更

设计电商秒杀系统

木云先森

架构训练营

【优化技术专题】「线程间的高性能消息框架」终极关注Disruptor的核心源码和Java8的@Contended伪共享指南

码界西柚

Disruptor 异步执行 高性能框架 10月月更

明道云当选“中国电子商会数据资源服务创新专业委员会”理事单位

明道云

校友录小程序开发笔记三十二:校友卡模块设计与实现

CC同学

SSH是什么?怎么组成?有哪些优势?

行云管家

SSH 服务器 SSH工具 服务器管理协议

机器翻译是否能替代人工翻译?从前世今生说起

博文视点Broadview

实时音频抗弱网技术揭秘

百度开发者中心

最佳实践 经验分享 智能视频

仅需三天,受人追捧的华为内部Java优化笔记登顶Github热搜!

Java 架构 面试 程序人生 编程语言

Java 面试的“完美圣经”,有了这些还愁面试吗?

Java 程序员 架构 面试 后端

用21张图,把Git 工作原理彻底说清楚

git 架构 面试 后端

「 活动 」连续 3 天,企业容器应用实战营上海站来啦!

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生 活动

双减来了!人工智能如何促进教育领域转型?

京东科技开发者

人工智能 大数据 AI 教育行业

GitHub标星过万!阿里内部流传的JDK源码剖析手册到底有多强?

程序员 jdk 面试 java

再见收费的Navicat!操作所有数据库靠它就够了!

Java 数据库 架构 开源项目

想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中

华为云开发者联盟

MySQL 运维 测试 MySQL数据库 Kubernetes 集群

还在苦恼网络协议?阿里大佬这份笔记带你从入门到精通!

Java 架构 面试 程序人生 编程语言

成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程

阿里巴巴中间件

阿里云 微服务 云原生 中间件 网关

设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01

vivo互联网技术

自动化 后端 设计模式 软件架构设计 java

一加9 Pro怎么样?值得入手的全能旗舰

Geek_8a195c

每一个用到canvas的小伙伴都应该了解的fabric.js

荣顶

JavaScript 大前端 canvas 图形处理 画布

肖德时:如何用Docker来管理微服务架构的乱网_语言 & 开发_Xue Liang_InfoQ精选文章