近日遇到一些同学想了解下网易蜂巢
(现已更名为网易云计算基础服务)在技术上是怎么个原理, 这里随手记录一下蜂巢技术架构的科普贴。
组成网易蜂巢(现已更名为网易云计算基础服务)的技术可分为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容器服务的乐趣,
点击可免费试用。