本文来自网易云社区。docker
近日遇到一些同窗想了解下网易蜂巢 (现已改名为网易云计算基础服务)在技术上是怎么个原理, 这里随手记录一下蜂巢技术架构的科普贴。数据库
组成网易蜂巢(现已改名为网易云计算基础服务)的技术可分为4大块
这每一块技术论原理其实都有许多很好的公开资料能够参考,因此没有多少神秘的东西,这里就只简单介绍一下。
容器技术基于当前流行的开源项目 Docker,一个很好的类比是集装箱的概念,一个容器是一个完整的软件运行环境,打包了操做系统、库、运行时环境、业务代码,这使得容器做为一个总体一旦构建完成后可随处运行,在网易蜂巢中交付给用户的最小单位就是容器。这里有一个问题容器和虚拟机的区别是什么,在技术上固然有不少区别,例如容器只是利用资源隔离加名称空间这样的技术在操做系统层面作了虚拟化,与宿主机共享内核空间这是与虚拟机显著不一样的,但我的认为这并非最重要的,关键在于容器提供了一种像代码同样描述运行环境的手段,构成环境的每个零件都在开发者掌控之中,运行环境可像代码同样作版本控制,这也使得基于 Docker 开发可得到一个最大的好处—环境的一致性。
容器蜂巢提供的计算资源的最小单位,而要实现一个可水平扩展的产品服务端架构,则须要引入集群的概念,在网易蜂巢中称之为”服务”,集群的运维如发布、回滚、扩容、缩容以及集群的成员管理须要引入编排服务来实现,网易蜂巢的编排服务基于开源项目 kubernetes,编排服务将受控的资源抽象为三个层次,容器(软件及运行环境),Pod(相关联的容器的组合,相互间通讯无需跨网络,例如应用服务器和本地缓存)容纳一个或多个容器,Node(提供计算、网络、存储的资源节点)容纳一个或多个 Pod。
前面提到须要 Node 来提供资源,管理资源的即为 IaaS 服务,IaaS 服务提供的资源能够是虚拟机、容器,但 IaaS 服务要确保计算能力(CPU,内存),网络IO,磁盘 IO 按需分配、并保障计算、IO 能力是稳定供给的,也就是须要保障 QoS。IaaS服务的技术基础是虚拟化技术,包括计算、网络、存储的虚拟化技术,计算的虚拟化不管在硬件或软件层面都相对成熟,而在网络、存储的虚拟化上网易蜂巢的选择是软件定义的技术,咱们仅仅依赖通用的硬件与x86服务器来实现虚拟化,软件定义带来的好处是咱们能够针对业务需求在网络、存储的控制层面作灵活的定制,网易蜂巢简单平坦的私有网络即是得益于软件定义网络的实现。
而真正开发一个产品随着产品规模的不一样还须要一些基础 PaaS服务的支持,例如数据库服务、缓存服务、对象存储服务、搜索服务、负载均衡服务、DDos防护服务等等,网易蜂巢中目前集成了负载均衡服务与关系数据库服务(其余 PaaS服务后续会陆续上线),这些基础服务的实现与容器没有直接联系,其中负载均衡服务、DDos 防护服务比较特殊位于流量的入口对业务透明,其余的PaaS 服务咱们在蜂巢中倾向于将其抽象成backing service 的概念,对用户来讲只暴露一个 url及提供相应的管理工具,用户无需关心 url 背后是怎样一个服务集群,集群的成员是什么,集群是基于什么实现的。
虽然说云计算平台的技术原理大同小异,但真正在设计实现层面要面对的是极高的工程复杂度,这才是云计算技术真正充满了挑战和创新的地方,咱们也挺乐意在这方面和你们多多分享的。
最后仍是盛情邀请你们来试用一下网易云计算基础服务,感觉下docker容器服务的乐趣,
点击可免费试用。