转载

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

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请求,完全依赖于硬件的支撑,这不是企业架构里面最重要的部分。

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

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

肖德时:如何用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性能分到更多机器上,通过挂盘的方式来解决,目前这是最成熟的方式。

原文  http://www.infoq.com/cn/articles/docker-microservice-architect
正文到此结束
Loading...