Diamanti容器融合存储基础架构

Diamanti容器融合存储基础架构

 ICT架构师技术交流  2016-10-17 22:06

Diamanti容器融合存储基础架构

2016-10-07 Hardy “ICT架构师技术交流?微信公众号

前一段时间我们介绍了一款容器定义存储产品,文章分了上下两篇,容器定义存储(CDS)—存储技术的"瘦身"革命和容器定义存储(CDS)—春江水暖"Portworx"先知,文章介绍了容器定义存储的背景和未来发展趋势,今天我们沿承容器和存储的话题,来看看另一家专注于容器应用提供存储融合系统的科技公司Diamanti和其产品架构。

Diamanti提供融合Appliance,在融合设备内通过一张PCIe卡作为网络和存储控制器以进行网络和存储IO控制和负载均衡,多张PCIe卡形成分布式流量管理集群系统。 Appliance给予X86和Linux平台构建,其上同时提供存储服务和运行容器应用,PCIe卡提供面向容器的SDS和SDN Controller能力,提供面向容器的存储和网络精细化SLA供给,数据面外置。支持在docker和kubernetes的基础上对网络和存储进行了增强,可以支持stateful和stateless应用的编排,支持反亲和性调度,值得跟踪分析。

容器的内建基础架构

Diamanti基于容器的存储融合基础架构,解决了容器为中心的应用特殊需求,确保网络兼容和存储持久化,在每个设备使用内置PCIE IO控制器,实现了对容器网络和存储虚拟化,保证应用的性能不需要做代码级的更改和定制化,每个容器可以按需的获取网络和存储资源,每个容器之间可以做到业务负责的隔离。Diamanti采用集群方式部署不同的设备,确保用户每次可以只添加一个设备按需扩容。

容器与其网络互联

Diamanti可以使用户通过命令行创建网络,分配唯一的vlan和ip地址范围,并通过10GE或GE网络和现有网络互联。用户通过虚拟端口与其他一个或多个网络互连,虚拟端口是通过SR-IOV技术实现的标准资源隔离端口,每个容器的性能和吞吐量都是由自定义的性能要求(Tier)来满足,开发者可基于容器或应用级指定它们的I/O策略,以快速得到所需存储服务。 不同容器可以共享同一个性能标准,新的性能标准也可以基于某个特定的应用和功能来设定。Diamanti流量交换在本地每个设备之间完成,消除了软件和虚拟化层带来的瓶颈。

容器的存储持久化

Diamanti可以使得用户通过命令行创建虚拟块存储设备,定义包含容量、镜像、复制和重删压缩等特征,卷是来自于分布在不同Diamanti集群节点上的物理闪存资源,通过虚拟池化而得来。用户可以通过一个或多个卷来部署容器,每一个圈对容器来说呈现为一个NVMe设备。Diamanti可以保证对每个卷读写请求带宽。 Diamanti通过扩展NVMe协议到时10GE网络保证端到端的100ms时延。在docker和kubernetes的基础上对网络和存储进行了增强,可以支持stateful和stateless应用的编排,支持反亲和性调度。

简化容器管理

使用图形化界面用户可以很快的了解集群的健康情况和容器的性能,并且可以跟踪每个容器的历史网络情况和存储性能,对应用的性能和系统使用率也提供了可视化接口,用户可以通过图表或者API接口对每一个容器进行监控。

集成流行的容器开源架构

Diamanti集成了最广泛的开源容器生态,包括linux操作系统、容器运行时、容器编排工具,由于 Diamanti基于标准X86和基于SR-IOV和VNMe的PCIe 设备,所以无需单独开发相关驱动。当前预览版已可在Google GCE和Amazon ECS上下载使用。同时, Diamanti紧密集成开源项目,如Docker、Kubernetes和Mesos,借助其功能实现容器调度和配置管理,不需要做任何修改。开发者只需要通过现存的Docker镜像即可得到一致的数据访问服务,运维人员也可以得到一次构建到处运行的标准数据平台。

Diamanti产品特点

Diamanti同已有集群管理生态兼容,依托Docker和Kubernetes,支持快速、自动化集群搭建。

容器网络同Host网络分离,可给任何容器分配IP地址,创建私有网络以隔离流量,从而简化网络管理、加强网络安全。

Diamanti采用IO架构优化,尽量使用本地盘下盘,最小化外部存储的需求,通过管理工具对磁盘分区并跟踪容器应用的性能和容量使用情况,可以做到按需规划。

跨容器如跨Docker和Kubernets调度,以做IO负载均衡、基于开发者或容器管理者的要求、根据厂商自定义label和亲和性规则来定制化容器放置,将负载放到存储和网络性能最优的位置。

基于用户定义的需求配置存储FlexVolume,在Kubernets中的相关的Plugin特性引入存储卷相关参数,Provider(plugin Provider名)、Command(用于Setup和Teardown Volume)、VolumeID、FSType(文件系统类型)、Readonly(只读mount)、Options(可传给Plugin的额外选项); (Kubernets以前调度策略仅基于CPU和内存,无网络和存储因素)。

Diamanti已经和Red Hat OpenShift Container Platform集成提供融合基础架构,实现应用快速融合部署、优化容器生命周期管理、保证应用性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
(3) 参考利用下面的程序代码,完成代码注释中要求的两项任务。 import re """ 下面ref是2020年CVPR的最佳论文的pdf格式直接另存为文本文件后, 截取的参考文献前6篇的文本部分。 请利用该科研文献的这部分文本,利用正则表达式、字符串处理等方法, 编程实现对这6篇参考文献按下面的方式进行排序输出。 a.按参考文献标题排序 b.按出版年份排序 """ ref = """[1] Panos Achlioptas, Olga Diamanti, Ioannis Mitliagkas, and Leonidas Guibas. Learning representations and generative models for 3D point clouds. In Proc. ICML, 2018 [2] Pulkit Agrawal, Joao Carreira, and Jitendra Malik. Learning to see by moving. In Proc. ICCV, 2015 [3] Peter N. Belhumeur, David J. Kriegman, and Alan L. Yuille. The bas-relief ambiguity. IJCV, 1999 [4] Christoph Bregler, Aaron Hertzmann, and Henning Biermann. Recovering non-rigid 3D shape from image streams. In Proc. CVPR, 2000 [5] Angel X. Chang, Thomas Funkhouser, Leonidas Guibas. Shapenet: An information-rich 3d model reposi-tory. arXiv preprint arXiv:1512.03012, 2015 [6] Ching-Hang Chen, Ambrish Tyagi, Amit Agrawal, Dy-lan Drover, Rohith MV, Stefan Stojanov, and James M. Rehg. Unsupervised 3d pose estimation with geometric self-supervision. In Proc. CVPR, 2019""" ref_str = re.sub(r'\[([0-9]{1})\]', r'$[\1]', ref) # 添加分隔$ print(ref_str) #脚手架代码 ref_str_2 = re.sub(r'([a-zA-Z]{2})\.', r'\1.#', ref_str) # 添加分隔# print(ref_str_2) #脚手架代码 ref_str2 = ref_str_2.replace("\n", "") ref_list = ref_str2.split("$") print(ref_list) #脚手架代码 [提示: 排序可以采用内置函数sorted(),语法如下: sorted(iterable, /, *, key=None, reverse=False), 注意掌握形式参数中带“/”和“*”的用途]
最新发布
05-26
代码注释如下: ```python import re # 定义参考文献字符串 ref = """[1] Panos Achlioptas, Olga Diamanti, Ioannis Mitliagkas, and Leonidas Guibas. Learning representations and generative models for 3D point clouds. In Proc. ICML, 2018 [2] Pulkit Agrawal, Joao Carreira, and Jitendra Malik. Learning to see by moving. In Proc. ICCV, 2015 [3] Peter N. Belhumeur, David J. Kriegman, and Alan L. Yuille. The bas-relief ambiguity. IJCV, 1999 [4] Christoph Bregler, Aaron Hertzmann, and Henning Biermann. Recovering non-rigid 3D shape from image streams. In Proc. CVPR, 2000 [5] Angel X. Chang, Thomas Funkhouser, Leonidas Guibas. Shapenet: An information-rich 3d model reposi-tory. arXiv preprint arXiv:1512.03012, 2015 [6] Ching-Hang Chen, Ambrish Tyagi, Amit Agrawal, Dy-lan Drover, Rohith MV, Stefan Stojanov, and James M. Rehg. Unsupervised 3d pose estimation with geometric self-supervision. In Proc. CVPR, 2019""" # 用正则表达式将参考文献编号中的中括号[]改为$,以便后续分割 ref_str = re.sub(r'\[([0-9]{1})\]', r'$[\1]', ref) # 用正则表达式将参考文献中的作者缩写后面的句号.改为#,以便后续分割 ref_str_2 = re.sub(r'([a-zA-Z]{2})\.', r'\1.#', ref_str) # 去掉参考文献中的换行符 ref_str2 = ref_str_2.replace("\n", "") # 用$分割参考文献字符串,将每个参考文献作为一个元素存入列表中 ref_list = ref_str2.split("$") # 按参考文献标题排序 ref_list_title = sorted(ref_list, key=lambda x: x.split(". ")[-1]) # 打印按参考文献标题排序后的结果 print("按参考文献标题排序:") for i in ref_list_title: print(i) # 按出版年份排序 ref_list_year = sorted(ref_list, key=lambda x: int(re.findall(r'\d{4}', x)[-1])) # 打印按出版年份排序后的结果 print("按出版年份排序:") for i in ref_list_year: print(i) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师技术联盟(Hardy)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值