simon0 2018-12-10
中国的主要云供应商都采用了开源容器编排系统Kubernetes。全球规模最大的Kubernetes集群在京东运营。未来开源贡献是一项能够带来巨额红利的投资。
在Kubernetes生态系统中,中国企业启动的三个主要项目由云原生计算基金会(CNCF)孵化中:Harbour,TiKV和Dragonfly。这几个项目很好了代表了中国目前云原生发展的前沿,而且很可能在不久的将来带动大量中国开源项目的发展。
众所周知,CNCF因其孵化Kubernetes,为美国云供应商提供公共内容以寻求相互协议方面发挥了关键作用。现在,所有主要的中国云供应商也先后加入了CNCF,采用开源软件并为开源做出贡献。
CNCF是Linux基金会的一个部门,致力于支持Kubernetes和其他“云原生”技术。CNCF为云生态系统中的竞争玩家提供了一个中立的基础,以找到共同点。由于CNCF,认证Kubernetes和Cloud Native愿景等工作使企业更容易采用Kubernetes。
Kubernetes的迅速普及正在导致提供新基础设施的企业和开源项目的蓬勃发展。Kubernetes的影响力不断扩大,它通过为服务器资源的调度和资源管理提供公共层,已经重塑了云供应商的竞争态势。
但到目前为止,在Kubernetes生态系统中能够看到中国企业对开源工程的热情与其对企业的热情一样火热。
中国的工程师也同样喜欢构建软件;不喜欢多余的工作;喜欢利用规模经济;他们看到了公司之间合作的价值。
李开复在他的《AI未来》一书中记录了中国和美国机器学习社区之间的共生关系。Kubernetes生态系统的全球驱动力更加积极,而且鉴于企业已准备好采用Kubernetes,它的影响可能会更快,并且企业非常愿意为它支付费用。
从金融,到电信再到保险公司:世界上每个大型企业都希望实现基础设施现代化并加快发展。这些企业想要购买Kubernetes,云供应商和服务集成商希望将其带给企业。
由于客户的重视和投入,云供应商很乐意共同努力改善Kubernetes相关的核心基础设施,这也包括中国云供应商。
云供应商应该为Kubernetes做出贡献,因为贡献过程将使他们更加熟悉生态系统的发展方向。当云供应商成为CNCF的赞助商时,他们就会了解云原生技术的最新内部发展。
Kubernetes为开源做出了前所未有的激励。CNCF的治理使这个生态系统能够通过健康的流程(例如CNCF Sandbox)而蓬勃发展。
已经理解了为什么中国的科技公司开始为开源做出贡献,那么让我们来看看上面提到的三个主要CNCF项目。
容器镜像描述了应用程序的完整版本和可执行版本。这些容器镜像存储在容器注册表中。当需要容器镜像加载的新实例时,必须从注册表加载该镜像并将其安排到Kubernetes主机上。
在一个大型的Kubernetes集群中,容器一直在加载和删除。服务器正在消亡,新应用程序正在启动,现有应用程序由于负载增加而扩展。这种动态环境给容器镜像网络基础架构带来了巨大的负担。
容器镜像可能非常大,在节点故障或网络问题时都会占用带宽并产生问题。理想情况下,我们希望从下载过程中断的地方继续。这节省了宝贵的时间和带宽。考虑到这些因素,如何在阿里云内处理文件和镜像分发?
阿里云是中国最大的云供应商,全球第三,在全球拥有19个地区。需要为数百万人提供快速可靠的服务,尤其是在中国的双11等高峰期。
面对这样的应用场景。阿里的选择不是使用wget,curl或ftp的传统工具,阿里决定构建自己的文件分发工具,并将其应用于镜像分发的场景。结果是Dragonfly,一种P2P文件分发系统。
它是如何工作的?在Dragonfly架构中,P2P网络涉及两种类型的节点:集群管理器(也称为超级节点)和主机(也称为对等节点)。这些主机是dfget终端。
当对等方需要镜像时,集群管理器会检查当前环境中的镜像是否已存在于磁盘中。如果没有,则从注册表中提取所请求的镜像。
镜像文件是分片的,并通过多个线程下载。这加快了流程,并且通过下载过程中保留的元数据,可以更轻松地恢复下载。
当集群管理器正在下载分片时,它也可以为主机提供这些分片。主机下载分片后,主机的对等端即可使用该分片。当主机下载了所有分片时,下载完成。
这种架构可以显著提高速度,并且可以轻松下载大镜像。当先前请求太多镜像在注册表处创建网络瓶颈时,使用对等分布式系统,可以达到一致的服务时间。Dragonfly允许数千个并行请求,平均每12秒完成一次下载。
Dragonfly通过智能调度和智能压缩等附加功能改进了其基础架构。镜像文件在分发之前进行压缩,从而提高速度并减少带宽使用。
除了速度之外的设计决策呢?
Dragonfly支持众多容器技术,如阿里巴巴的容器Pouch和Docker。它不需要对容器服务的编程方式进行任何更改。
在P2P网络中,安全性是一个问题,因为文件分发现在可以在任何两个对等体内完成。Dragonfly在传输过程中已经加密了文件,而Dragonfly的未来路线图显示了要采取的进一步的措施。
加入CNCF,Dragonfly似乎有一个充满希望的未来。
容器从容器镜像中出来。这些镜像保存在注册表中,以便更轻松地分发镜像。注册表允许共享镜像,构建自动化CI管道以及为镜像创建安全的存储环境。
注册管理机构有不同的选择:开发人员可以决定使用即用型服务,例如Docker Hub,Amazon ECR,Google Container Registry,或自行托管其注册表。
但是,由于隐私和安全要求,并非所有组织都可以在公有云上保留其镜像。
Harbour是一个云原生镜像注册表,用于存储,标记和扫描镜像。它最初是由VMWare中国发起的项目,并且已被接受为CNCF的沙箱项目。Harbor非常注重安全性,信任,合规性和性能。
Harbour提供什么?
Harbour具有许多功能,可以改进容器镜像的简单存储概念。
镜像复制
对于应用程序的不同阶段,企业可以拥有多个注册表。必须复制镜像,因为它们已准备好进入管道的下一个阶段。
镜像不是确定性的,开发人员在构建相同的Dockerfile时可能无法获得单一,一致的镜像。Harbor允许从源直接镜像复制,以便以一致的方式将镜像分发到不同的注册表。
Harbor允许设置规则以触发镜像复制,从而自动化该过程。初始复制可确保不更改镜像。对原始镜像的任何进一步更改都遵循增量模型:仅将更改转发到副本镜像。
借助Harbor,开发人员还可以在全球范围内复制图像,并在多个站点中拥有相同的图像。这可以改善图像拉动和推动的延迟。
镜像安全
Harbor在两个方面处理镜像安全:通过在用户方面实施基于角色的访问控制,以及在容器前端进行内容签名和漏洞分析。
Harbor允许根据这些角色定义提供权限,例如读/写访问。这可以防止非特权用户覆盖镜像。
使用公证功能,开发人员可以签署他们推送到注册表的镜像。当另一个开发人员拉动镜像时,他们可以确保推送到注册表的镜像没有被更改。他们可以验证签名,然后整理镜像。
Harbour使用一种名为Clair的开源工具,利用外部资源来检查存储在注册表中的镜像的漏洞。该扫描可以周期性地进行,并且基于阈值,确定镜像的漏洞级别。
这些功能极大地提高了Harbor的安全性能,使其特别适用于想要自行托管其专有镜像的企业。
Harbour专为云原生环境而设计,可以作为独立的注册表部署,也可以使用Helm图表部署在Kubernetes上。
关系数据库多年来一直主导着软件世界。然而,当垂直扩展不再可行时,分布式系统开始兴起,NoSQL解决方案应运而生。在云时代,数据几乎总是保存在具有大量物理节点的分布式环境中。
有状态系统需要满足云原生环境需求的存储解决方案:可扩展性,速度,数据一致性和容错能力。获得所有这些方面的权利是一项艰巨的任务。
作为一种解决方案,一个激动人心的中国项目以事务键值数据库的形式出现,该数据库提供地理复制,水平可扩展性,强一致性和一致的分布式事务。
TiKV是一个开源的统一分布式存储层。它最初是由PingCAP开发作为TiDB的一个存储层,然后引入CNCF为沙箱项目。它将NoSQL级别的可伸缩性功能与关系数据库的事务ACID属性结合在一起。它的灵感来自Google的Spanner和F1的分层架构。
TiKV汇集了众多技术和机制。它的架构包括Placement Drivers,Raft Groups,RocksDB作为仓库(Store)和分区(Region)。
TiKV使用Raft一致性算法,通过多种优化增强性能,在将分区复制到多个节点期间实现数据一致性。这些分区形成Raft组,允许冗余和可靠性。
作为其底层存储引擎,TiKV使用RocksDB。RocksDB作为底层引擎提供快速操作和稳定性。在每个物理节点上,TiKV架构包含两个RocksDB实例:一个用于存储数据,另一个用于Raft日志。
TiKV专注于性能,一致性和可扩展性,是云原生企业的完美键值存储解决方案。你可以使用TiDB尝试TiKV,或单独尝试TiKV。
中国的开源正在变得越来越主流,这三个主要项目正在进入CNCF。通过支持这些开源项目的所有公司之间的强大合作,特别是在增加了中国企业和贡献开发人员的情况下,开源将继续蓬勃发展。