写点什么

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

发布了 182 篇内容, 共 104.1 次阅读, 收获喜欢 208 次。

关注

评论

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

嘉为蓝鲸携手麒麟软件共建国产化一站式DevOps解决方案

嘉为蓝鲸

DevOps 自动化运维 嘉为蓝鲸

状态机的概念与设计

timerring

FPGA

十年老程序员:再见了Navicat,以后多数据库管理就看这款SQL工具

雨果

sql navicat 数据库管理工具

Sugar BI 增强分析能力全场景解析

XxinQi

数据分析 可视化 BI 商务智能 预测模型

第六周作业-拆分电商系统为微服务

不爱学习的程序猿

支付对接常用的加密方式介绍以及java代码实现

京东科技开发者

Java 安全 哈希算法 加密算法 非对称加密算法

我的快速调优线上服务器CPU利用率通用办法,震惊面试官

KINDLING

Java cpu 服务器 性能调优 ebpf

算力新话题,畅聊算力之新民生

鲸品堂

算力网络 企业号 2 月 PK 榜

重识Flutter 用于解决复杂滑动视窗问题的Slivers - part1

编程的平行世界

flutter 前端 an'droid

100 行 shell 写个 Docker

vivo互联网技术

Docker Shell

关于小程序游戏变现方式你还知道哪些?

没有用户名丶

前端开发 小程序游戏

全新视觉,升维体验!全栈可观测中心嘉为鲸眼产品全新体验升级

嘉为蓝鲸

可观测 自动化运维 嘉为蓝鲸

成熟的自动化运维平台是怎样练成的?

嘉为蓝鲸

自动化运维 嘉为蓝鲸

Java高手速成 | 单例模式实现方式——枚举

TiAmo

单例模式 枚举 Java 开发

【活动报名】re:Invent - AI 应用助力企业构建数字战略

亚马逊云科技 (Amazon Web Services)

GaussDB(DWS)现网案例:collation报错

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

MASA Stack 1.0 发布会讲稿 —— 产品篇

MASA技术团队

.net 云原生 MASA MASA Blazor

极客时间运维进阶训练营第十三周作业

9527

ChatGPT集成之前,让我们复习一下即将过时的知识

newbe36524

搜索引擎; ChatGPT

《数字经济全景白皮书》出海篇:选对路径下好棋,热点出海行业如何实现增长?

易观分析

数字化 经济 出海

Portraiture4最新简体中文li磨皮滤镜插件

茶色酒

Portraiture Portraiture4

嘉为科技蝉联信创工委会“卓越贡献成员”荣誉称号

嘉为蓝鲸

自动化运维 嘉为蓝鲸

兴业证券打造更“自然”的数字人,火山语音提供技术支持

科技热闻

Apipost自动化测试功能概述

不想敲代码

自动化测试 测试自动化 apipost

高校数据库/SQL教学用什么样的SQL工具?管理更方便,学习更轻松

雨果

数据库管理工具 :MySQL 数据库 SQL开发工具

对线面试官:浅聊一下 Java 虚拟机栈?

王磊

java面试

【Rust学习】内存安全探秘:变量的所有权、引用与借用

京东科技开发者

spring rust slice 企业号 2 月 PK 榜 可变引用

Boom 3D免费电脑环绕音乐软件2023最新版下载

茶色酒

Boom 3D

前端图片最优化压缩方案

凉城

前端 图片处理 图片压缩 前端图片压缩

小游戏内测|小游戏脱离微信运行在其它 App

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

有关TCP协议,这是我看过讲的最清楚的一篇文章了!

程序员小毕

程序员 TCP 程序人生 计算机网络 架构师

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