写点什么

肖德时:如何用 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:106149
用户头像

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

关注

评论

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

网络攻防学习笔记 Day68

穿过生命散发芬芳

网络攻防 7月日更

5分钟速读之Rust权威指南(三十八)模板语法

wzx

rust

为啥Java应用迁移到容器后会出现OOM?

Java架构师迁哥

Clickhouse Projection 特性探索

GrowingIO技术专栏

数据库 大数据 数据分析 OLAP Clickhouse

【Redis】数据结构

awen

redis 数据结构

十二张图,一脚踹开消息队列的大门

三分恶

消息队列

React 18探秘(上)

Teobler

大前端 React

Linux之find exec

入门小站

Linux

区块链时代下,企业如何打造数据要素的“新竞争力”?

CECBC

公司内部使用的数仓命名规范

白贺BaiHe

大数据 数仓 数仓规范 7月日更

领域驱动设计101 - 聚合

luojiahu

领域驱动设计 DDD

在线base64加密解密工具

入门小站

工具

每天学习10个实用Javascript代码片段(三)

devpoint

JavaScript JSON格式化 7月日更

3分钟评估 你的运维监控系统是“救命稻草”还是“鸡肋”

鹿小U

运维自动化 监控系统 运维平台

模块七 - 王者荣耀商城异地多活架构设计

华仔架构训练营

多地“真金白银”力撑区块链,中西部欲弯道超车新赛道

CECBC

IntelliJ IDEA必备7款Python插件

Jackpop

IDEA pycharm

腾讯一面 Java Phaser 并发编程的理解与应用

陈皮的JavaLib

Java 面试 多线程

架构实战营模块8 课后作业

En wei

架构实战营

Rust从0到1-智能指针-Drop trait

rust smart pointer drop trait

底层技术支撑智慧出行,汽车智能化发展下区块链大放异彩

CECBC

妇与术(三):机器人可以没有性别,但关系技术离不开女性

脑极体

什么是数据集市

奔向架构师

数据仓库 数据架构 7月日更

魔方、齿轮、融合剂:当新ICT技术邂逅教育产业

脑极体

2020年的焦虑与忧伤

Emotion

疫情 考研 研究生

如何看待技术采用生命周期 | 【话题讨论】

耳东@Erdong

云原生 话题讨论 7月日更

Spring到底应该学哪些内容?

冰河

spring aop ioc 注解驱动 依赖反转

Python利器!Jupyter最大威胁终于来了

Jackpop

Python Jupyter Notebook

🏆 【JVM 性能调优】「对象内存分配」输出常用参数

码界西柚

JVM 7月日更

凭借这5步,我30分钟学会了Python爬虫!

Jackpop

爬虫 爬虫教程

Vue3 + TypeScript 开发实践总结

程序员海军

typescript 大前端 Vue3 框架

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