2015年容器技术峰会学习笔记(二)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是2015年容器技术峰会学习笔记(二),【编者的话】这是2015容器技术峰会学习笔记的第二篇,在这里,作者继续讲述有关容器的诸多轶事,华尔街之狼? 开源巨头? 初创团队? 让我们一起去看看他们是怎么玩的容器的吧!
本文讲的是2015年容器技术峰会学习笔记(二) 【编者的话】这是2015容器技术峰会学习笔记的第二篇,在这里,作者继续讲述有关容器的诸多轶事,华尔街之狼? 开源巨头? 初创团队? 让我们一起去看看他们是怎么玩的容器的吧!

@Container容器技术大会将于2016年1月24日在北京举行,来自爱奇艺、微博、腾讯、去哪儿网、美团云、京东、蘑菇街、惠普、暴走漫画等知名公司的技术负责人将分享他们的容器应用案例。

昨天我们发布了这次容器技术峰会笔记的 第一部分 。今天继续!我们将给大家分享更多其他的在现场听到的有趣见闻。
Containers-VMs-Infrastructure2.jpg

在这里,你可以听到华尔街的老兵、开源巨头以及一些敏捷的初创团队的有趣故事。

华尔街之狼的容器玩法?

Jake Loveless, Lucera

Jake是Lucera的CEO,Lucera是一家专注于为华尔街提供IaaS服务的公司。Lucera 最开始是一家高频交易所。Loveless 表示在这里速度真的很重要。他们为此做了大量的优化。Lucera 很快便意识到他们也许可以在基础设施服务的世界里大有可为,因而开始了转型之路。

Jake喜欢把IaaS服务看成是一个构建赛道的过程。Lucera 已然实现了100%完全基于容器构建的基础设施服务,而这也正好贴合了本次峰会的主题。为了达成这一目的,他们选择了SmartOS以及一些Joyent技术栈里的其它组件。

为了追求更快的速度,Lucera尝试了很多不同的策略。更好的托管节点,性能更好的虚拟机等等。很多时候他们需要在成本和性能两方面做出权衡和取舍。或者说至少他们曾经做出过妥协,直到Jake开始尝试去使用容器。

在这个时候,大屏幕上投射出了一个铁三角的图像。这个铁三角中的每一个节点分别是可靠性、性能以及安全性。Jake声称一旦一家企业对其中任意一个点做的不够,那么其他另外两个也将会受到影响。

那么,容器在这里的铁三角中扮演着怎样的角色呢?原来,它们正是Lucera一直以来苦苦追寻的"救世良药"。

可靠性

>如果你不能在你的系统运行的时候调试它的代码,那么就别指望自己能写出安全可靠的软件。

Jake随即做了一次Dtrace的现场demo,以显示在Lucera的技术栈上调试代码是如何的方便。他补充道,“除了实际生产的一些情况没办法做到完全的模拟,其他的你都可以办到。”

作为背景,Loveless指出在峰值情况下,他的服务器每秒需要发送数以千万计的消息。

安全性

Lucera是 EAL4 认证的企业。这是由 CCRA  通过的商业软件所能达到的最高级别的安全认证。

性能

高性能被公认为是Lucera成功的关键因素之一。为了进一步说明这一点,Jake分享了一个瑞士央行(SNB)有关的案例。这也许是我个人在这次峰会里最喜欢的一个案例分享了。

案例分析

Jake 首先从一个简短的背景故事开始讲起。这个故事的关键便是 一价定律 。粗略地讲,那就是这个世上根本不存在套汇的可能。在货币国际化的背景下,一美元换算成欧元又换算成英镑最终回到美元的价值必定是相同的。

如果一种货币的价格发生了变化,那么所有货币的价格必须随之依次改变以消除套汇盈利的可能。如果出现失败的情况,那么整个市场自然会发生动荡。

Jake 还介绍到投资者们历来觉得瑞士法郎是一个很好的避险资产。换句话说,买入他们的话你至少能保证你的钱袋子是安全的。

介绍完背景后,Jake继续深入到故事的核心。在2011年经济危机的时候,大量的资金被兑换成瑞士法郎。这引发了法郎相对价值(译者注:即保值属性)的急剧下跌。为了应对这种情况,瑞士央行推出了 固定汇率政策 。它定下来欧元兑瑞士法郎最低为1.2。这意味着一旦它跌破1.2倍率,政府将会参与进来并买入大量货币。

多亏有这个政策,到2014年,瑞士央行已经积累了价值约4800亿美元的外国货币,这笔钱相当于瑞士GDP的70%。直到1月15号美国东部时间早上4点30分,瑞士央行觉得差不多赚够了。在没有任何事先通告的情况下,他们取消了固定汇率政策。此举旨在帮助释放次贷危机所带来的经济泡沫。

用Jake的话来说便是,“这就像4年以来积蓄的压力被瞬间释放一样。” 对于那些有心人来说,机会是显而易见的。这正是一个千载难逢的套汇的机会。为了能够更加清晰的展现当时的场面,Loveless 指出当天甚至有少数银行因此遭遇了他们史上最糟糕的一次在线交易体验。

就Jake本人的亲身经历来说,早上4点35分的时候他如常收到了他的CTO打来的电话。“你一定要看看这个。”

Jake登陆上了Lucera的系统然而并没有看到任何的报错或是告警。系统难道有宕机过吗? 在他继续在看板上筛选之后,他发现有200多个CPU超分极限的实例。CPU超分极限是SmartOS的一个特性,它在一个CPU完全爆棚的情况下向相邻的机器实例租借60s的CPU时间片。这里的确冒烟了,不过还没有任何起火的迹象。

Jake 继续把目光聚焦在当天接下来所发生的事情上。在其他的地方,他们早就乱成一团。强如华尔街的基础设施也开始了坍塌。这导致剩下来的交易所的负载急剧增长,而结果又引发了他们之中的众多系统再次崩溃。在那天,人群效应给其中大量的企业敲响了丧钟。

至于Lucera? 直到那天结束,他们也没看到任何一个单点故障。事实证明,他们的基础设施能够在混乱的形势下依然稳定的提供服务。而作为为数不多的仍然能提供服务的企业之一,收获的回报无疑也是无比丰厚的。Jake指出许多他们的客户都表示当天的交易足以抵得上平常期间一个月的交易量。

Type-C Hypervisor

Dustin Kirkland,Canonical

Type-C Hypervisor 是什么? 为了解答这个问题,Dustin Kirkland 把我们带回到了1973年,特别是第四次ACM研讨会上关于操作系统原理的讨论。更具体一些的话,便是作为这次研讨会结果发表的一篇论文。

在“关于第三代可虚拟架构的形式化要求描述”这篇论文里,作者提出了一系列重要的正式定义,关于需要采取哪些措施来创建一个hypervisor + 虚拟机。

自那以后,世上便多了两种类型的hypervisor。类型1承载于本地的裸机之上。类型2 便是一台拥有一个真实操作系统的机器,在这里hypervisor更多的只是扮演一个应用的角色。

符合类型1定义的像Vmware的vSphere和Xen。
而符合类型2的有KVM以及virtualbox。

LXD便是引入的第三种类型即Type C的hypervisor程序。在Type C中,每个容器共享宿主机上相同的一套操作系统。

我们再回到1973年的这篇论文。这里面有一些对于一台虚拟机简单的要求:
  • 效率
  • 资源控制
  • 等价性(你在客户端机器上做的任何事情理应都可以在宿主机上完成,反之亦然)

这里还有一个挺有意思的第4个要求:虚拟机可以递归的运行。换句话说,如果一切都实现了虚拟化,那就没有理由不能在虚拟机里跑虚拟机。

Dustin随后问了一个很重要的问题,“这跟Docker有什么不同之处吗?” Docker是一个应用容器,它解决了一个重要的问题,“我应该如何提供一个二进制文件,并且在一个容器里运行它呢? 我应该如何像一个静态的二进制文件那样打包一个应用,又怎么才能像二进制文件那样随意迁移?”

与之相反,LXD它算是Linux容器( LXC )的一个扩展。LXD应当看做是一台机器的容器。他们和虚拟机扮演着非常相似的角色。一台机器的容器的优势在于它在硬件上封装的更细致,启动的更快,与此同时它在根本上与一个完整成熟的操作系统一样的运转自如。

在幻灯片的最后,Dustin切换到了对LXD(以及它满足的1973年那篇论文里所列出的各项特性)的一个现场演示。在所有的基准测试中,Dustin的机器显示LXD与本地运行的脚本相应的测试结果总体上大致持平。

如果你想进一步了解更多有关LXD的知识,欢迎访问 Linuxcontainers.org

容器生态系统标准:需求和进展

Brandon Philips,CoreOS

当容器峰会上大多数其他的演讲嘉宾纷纷翻到几十年前去回顾历史的时候,CoreOS的Brandon Phillips选择的是着眼于当下。他谈到了容器近一年来的发展状况。

作为铺垫,Phillips 指出在Docker的世界里,容器的标准和需求在很大程度上仍然是一个开放性的话题。怎样才能更好的满足用户的需求呢?这是一个在他开始着手去定义一个标准的时候经常会问自己的问题。

一个比较有说服力的答案便是它需要从码农们入手。对于这帮实际去创造东西的人来说易用性实在是一个很大的问题。

是什么让Docker变得如此有价值? Phillips回过头来问了一些反问句,“我们已经使用LXC和tar压缩包这么多年了,但是我们可从来没有一起开会讨论过它。”

那么为什么我们现在又频频提到容器呢?

首先,我们需要有一个加密摘要算法来识别不同的容器。这个线上的容器有何不同又或者跟我这个本地的完全一样? 如果Alice构建了它,我应该也能够通过一串类似密钥的东西来验证它是否真的就是Alice所创建的那个容器。

其二,仅仅有一个加密认证还是不够的,因为人们大都比较反感记忆这些琐碎的东西。我们需要的是一些人类可读的名字。Brandon指出,尽管他个人不是很喜欢他们,然而类似DNS风格的名字确实起的不错. 例如,“Com.example.app”。

第三,容器必须建立一套标准。无论它是Rkt还是Docker,你理应都可以在任意一个地方运行容器。他借着现实世界的集装箱的例子打了一个比方。集装箱能够托运在船上,同样也应该可以放到火车上,或者拖车上等等。

appc 标准

随着解答完需求的问题之后,Brandon又回过头来介绍了一下过去一年 appc标准 的发展情况。它在发布时搭配了一些代码作为一个实际实现例子的demo。自那以后,这才有了Rkt。

他指出在CoreOS刚发布这一标准的时候,他希望可以看到大量基于这一标准实现的具体实例。一个标准最有意思的事情莫过于它可以推动人们围绕着它来构建各式各样的系统。 没有理由单单只是为了促成其中的一个实现方案成为容器的统一标准。

一个好的标准同样也必须具备易于定位的特点。我怎么使用一个人类可读的名字来找到这个东西?

Brandon一本正经的指出这样的约定对于人们来说大有帮助。

在appc刚发布的时候,它的宏愿是希望社区能够联合起来组建一套事实上的容器标准。欢呼!事实上,appc的确引起了不小的轰动。这虽然已经是旧闻。自那以后,appc、CoreOS、Docker和许多其他公司走到一起共同提出了一个 开放容器倡议标准

你可以关注如下链接获取它的最新动态:  github.com/opencontainers/spec

Brian在演讲的最后还不忘提醒大家通读一下该标准规范。为了确保他和开放容器项目的其他人员做出更加正确的选择,从我们(开发人员)这里获取反馈是必不可少的。

(完)

原文链接:2015 container summit notes and learnings part 2 (翻译:吴佳兴)

原文发布时间为:2015-11-09
本文作者:colstuwjx 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:2015年容器技术峰会学习笔记(二)
目录
相关文章
|
14天前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
15天前
|
Kubernetes 开发者 Docker
基于容器技术的微服务架构
基于容器技术的微服务架构
19 0
|
2月前
|
Docker 容器
Docker学习笔记三:如何运行一个容器?
Docker学习笔记三:如何运行一个容器?
Docker学习笔记三:如何运行一个容器?
|
5天前
|
运维 监控 Devops
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
在数字化转型的浪潮中,企业的IT基础设施和软件交付模式正经历着深刻的变革。传统的运维方式已难以满足快速迭代、灵活扩展的现代业务需求。本文将探讨如何通过容器技术实现高效的自动化运维体系,重点分析持续集成(CI)与持续部署(CD)的实践方法及其对企业运维效率的影响。通过引入微服务架构、容器编排、DevOps文化等概念,我们旨在为读者提供一套全面的自动化运维解决方案,以支持业务的敏捷性和可扩展性。
|
7天前
|
边缘计算 Kubernetes 负载均衡
容器编排技术在云计算中的应用
随着云计算技术的飞速发展,容器编排技术作为一种重要的部署和管理工具,正在逐渐成为云计算领域的热门话题。本文将介绍容器编排技术在云计算中的应用,探讨其在提高应用程序部署效率、资源利用率以及系统可靠性方面的优势,并分析其未来发展趋势。
|
17天前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
29 0
|
24天前
|
运维 API Docker
深入浅出:微服务架构与容器化技术的完美融合
【2月更文挑战第13天】 在现代软件开发领域,微服务架构和容器化技术已成为推动企业快速发展的两大核心力量。本文将从微服务的基本概念出发,深入探讨其与容器化技术结合的必然性与优势,进而分析如何在实践中有效地实现二者的完美融合。通过对微服务架构的细致解析及容器化技术的应用展示,旨在为读者提供一种全新的视角,理解并掌握这一前沿技术趋势,以指导实际工作中的技术选择与架构设计。
|
1月前
|
运维 Java Linux
深入解析:使用Docker容器化技术提升Java应用的部署效率
在快速迭代的软件开发周期中,如何保证应用的快速、一致和可靠部署成为了开发团队需要面对的重大挑战。本文将探讨如何利用Docker容器化技术,结合Java应用,实现高效、一致的部署流程。我们将从Docker的基本概念出发,详细介绍将Java应用容器化的步骤,包括创建Dockerfile、构建镜像以及运行容器等关键环节,并通过示例代码加以说明。此外,本文还将讨论在使用Docker部署Java应用时可能遇到的常见问题及其解决策略,旨在为读者提供一种提升部署效率、优化开发流程的有效方法。
295 2
|
1月前
|
虚拟化 开发者 Docker
深入浅出:利用Docker容器化技术加速Web开发流程
在本篇文章中,我们将探讨Docker容器化技术如何为Web开发带来革命性的效率提升。通过具体案例和实操示范,我们不仅会介绍Docker的基本概念和工作原理,还将深入分析如何利用Docker容器化技术简化开发环境的搭建、提高应用的可移植性以及加快部署速度。本文旨在为读者提供一种全新的视角,理解并实践如何通过Docker优化现代Web开发流程,无论是对于个人开发者还是团队项目,都将带来前所未有的便捷和效率。
19 0
|
1月前
|
负载均衡 开发者 Docker
深入浅出:利用Docker容器化技术提升Web开发效率
在快速变化的软件开发领域,开发者面临着环境一致性和项目部署效率的双重挑战。Docker作为一种先进的容器化技术,为解决这些问题提供了优雅的解决方案。本文将探讨Docker的核心概念、优势以及如何在Web开发中应用Docker来提升开发和部署的效率。通过实际案例分析,读者将了解到如何构建、分享和运行Docker容器,以确保开发环境的一致性,并加速Web应用的交付过程。

相关产品

  • 容器镜像服务
  • 容器服务Kubernetes版