首页 文章 精选 留言 我的

精选列表

搜索[趋势探讨],共10000篇文章
优秀的个人博客,低调大师

Storm同步调用之DRPC模型探讨

摘要:Storm的编程模型是一个有向无环图,决定了storm的spout接收到外部系统的请求后,spout并不能得到bolt的处理结果并将结果返回给外部请求。所以也就决定了storm无法提供对外部系统的同步调用功能。 最近新的黑名单项目需要在storm实时计算平台上提供对外部系统请求调用的同步响应(也就是让storm支持同步调用而不是回调),而Storm的编程模型是一个有向无环图,也就决定了storm的spout接收到外部系统的请求后,将请求数据分发给下游的bolt进行处理后,spout并不能得到bolt的处理结果并将结果返回给外部请求。 在传统也就是业界大部分应用场景storm对外部系统的调用都是采用回调的方式。本人之前参与的某4000万用户,日均1000万交易量的信用卡中心也是采用回调的方式。 原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/7602242.html storm常见回调设计方案 首先jetty,tomcat等启动服务,接收外部系统的请求,将请求得到的数据发往kafka,activeMQ等消息队列中,就立马响应给外部系统。 然后storm实时平台去消息队列中拉取数据并进行分布式并行处理,然后将运算完的结果存入第三方存储介质(外部系统直接通过读取该介质获取结果)或者调用外部系统的接口将处理的结果推送出去(以回调的方式实现伪同步请求)。 目前的需求 现在的项目是一个产品,要接入各大银行的系统中,所以通过要求对方提供一个回调接口来实现同步是不可能的。必须依靠自己去实现同步请求响应,外部系统将消息发往storm实时平台,然后外部系统会阻塞,等待storm实时平台处理完后将结果返回给外部系统。 这个时候当然就是去storm的官网去看看有没有对应的高级接口,果不其然看到了DRPC,熟悉RPC的就知道就是远程过程调用,就是向远程系统发送socket请求并得到远程系统处理的结果,那么DPRC也就是分布式远程过程调用而已,那么他就一定提供了同步请求响应的功能。 关于DRPC在文章末尾会简单演示一下,这里重点说下我对storm的DRPC的原理理解。上面我也说了storm的编程模型是一个有向无环图,从模型的角度来说是不可能支持同步请求的功能的。 自己如何基于storm实现同步调用 我也自己思考下,如果是我自己会如何在现有的storm的编程模型下如何实现同步调用。 方案一:大家最容易想到的方案就是,在storm的拓扑的spout节点中new ServerSocket(8080),来接收外部系统的请求,然后将请求的数据分发给下游的bolt处理,处理完后将结果返回给外部系统。 问题一:storm的计算模型的拓扑结构是一个有向无环图,处理的结果并不会返回给spout节点。 我可以让bolt将处理的结果存入redis,然后spout不断轮询去redis读取对应的结果并返回! 貌似可以,但是查看spout的调用源代码会发现,如果这样会导致spout的吞吐量下降,因为spout只有从redis轮询到当次请求的处理结果后才会在循环调用nextTuple()方法,当然在spout实现类中开启多线程后,貌似可以解决nextTuple方法阻塞(具体没有去想,因为本身这个方案不可行了,就没必须去掉头发了)storm的任务中再去开多线程是无效率的,还不如不选择storm技术。 问题二:spout节点启动的机器是不固定的,ip是会变化的,则对外部系统调用时ip的维护带来了麻烦,所以这种方案不可取。 public void nextTuple() { 获取请求的数据 collector.emit(); while(true) { 去redis中读取该次请求的结果,读到则结束循环 } } 方案二:抛开storm实时平台,单独开发一套中转程序,负责接收外部系统的请求,将外部请求的参数存入一个先进先出的队列中,阻塞等待storm处理的结果。storm拓扑的spout中创建socket去连接中转程序,中转程序从队列中拿出请求参数返回给spout。spout获取到请求参数后,将参数传给下游的bolt去计算,下游的最后一层bolt计算完也创建socke去连接中转程序并将结果发送给中转程序。中转程序获得bolt返回结果,存入某个地方,然后中转程序中阻塞的地方轮询得到结果后,就结束轮询响应给外部系统了。 当然这只是一个简单的方案设计,具体还有很多细节设计以及考虑在我们的Server端,因为它要同时协调三个不同的程序的请求,并且能够根据以每一个请求自动聚合外部系统请求,spout请求,bolt请求为一组。 Storm的DRPC概述 storm的DRPC其实就实现外部系统同步调用storm实时平台的功能组件了。应该不需要我去从零开发了。接下来就看看storm的DPRC功能是否和我当初的想法是否一致! 官方话语: 分布式RPC(DRPC)背后的思想是将真正强大功能的计算与storm的计算并行化。Storm拓扑以一个函数参数的流作为输入,它向每个函数调用发出一个输出流的结果。 分布式RPC(DRPC)的真正目的是使用storm实时并行计算极端功能。Storm拓扑需要一个输入流作为函数参数,以一个输出流的形式发射每个函数调用的结果。。从一个客户端的角度来看,一个分布式RPC调用就像是一个常规的RPC调用。 分布式RPC工作流程如下图所示: 客户端程序会向启动的DRPC服务器发送要执行的函数名称和该函数的参数。具备DRPC功能的拓扑会使用一个DRPCSpout接收来自DRPC服务器传来的函数调用流。每个函数调用都用一个惟一的id标记在DRPC服务器上。拓扑计算好结果后会由一个名为ReturnResults的bolt去连接DRPC服务器给出对应函数调用id的结果,然后DRPC服务器根据ID找到等待中的客户端,为等待中的客户端消除阻塞,并发送结果给客户端。 从一个客户端的角度来看,一个分布式RPC调用就像是一个常规的RPC调用。 public class Client { public static void main(String[] args) throws TException, DRPCExecutionException { DRPCClient client = new DRPCClient("192.168.19.131", 3772); for (int i = 0; i < 10; i++) { System.out.println(i); String result = client.execute("method_name","param is intsmaze--"+i+"---"); System.out.println(result); } client.close(); } } 下一篇将会重点讲解如何运行storm的drpc示例,并剖析它的内部实现原理来验证是否和本文的猜想一致。 作者: intsmaze(刘洋) 出处: http://www.cnblogs.com/intsmaze/ 老铁,你的--->推荐,--->关注,--->评论--->是我继续写作的动力。 微信公众号号:Apache技术研究院 由于博主能力有限,文中可能存在描述不正确,欢迎指正、补充! 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

优秀的个人博客,低调大师

CloudCC CRM探讨中国云计算市场现状

云计算 市场经历了喜忧参半的一年,喜的是,云计算的市场持续爆发式增长,云计算的市场已经从互联网行业逐渐向传统行业和企业级市场渗透和转化,越来越多的企业开始尝试和接纳云计算(如);忧的是我们也看到一些云计算的创业公司倒下了,这说明这个市场竞争在日趋白热化。 无论是公有云、私有云还是混合云市场,已经硝烟弥漫,刀光剑影了。所以大家都在说2016年是云计算最关键的一年,“关键“这个词用的很有水平,一语双关,即说明这个市场竞争更加激烈,也表达了市场爆发增长的机遇。 从公有云的市场格局来看,AWS和阿里云在国外、国内一家独大的局面,基本已经形成,这里跟资源投入和先发优势密不可分。当然谁是第二,这个话题比较敏感,就不在这里讨论了,这里想讨论的还是偏技术层面的事情。很多人说公有云其实是种运营模式的业态,那么也就是说拼的是平台运营服务的能力,拼的是成本与投入。 这话没错,不过从长期的角度来考虑,拼的还是技术,对于公有云来说,凭借基础资源,如果想要获取很好的利润实现盈利,个人觉得不现实;真正公有云的赢利点,还是来自于PaaS层,甚至是SaaS层的服务,这点从AWS的发展轨迹,可见一斑。 IaaS层的技术竞争力,在现有的技术格局下,个人认为很难有绝对的优势,虽然每家都在强调自己的网络能力、存储能力,也确实存在一些差异,但个人认为不是纯技术上的差异,很多事运营理念上的差异;真正能够体现技术差异的更多是在PaaS层的服务,比如RDB、No-SQL、缓存、队列、负载均衡、安全等等。服务于单个用户,这些技术都不是问题,在互联网公司,这些都有很好的实践和技术积累,但是在云平台上以服务形式展现,可就真的是考验技术实力了。 一个金融客户,在尝试了国内若干家云平台的RDB服务之后,最终还是选择了跟国内一家专注于RDB技术的传统技术提供商合作,自己搭建了RDB服务。道理很简单,你达不到我的技术要求,在技术的领域是忽悠不了的。行就是行,不行就是不行。 因此在公有云这个领域,未必AWS、阿里云就不可超越。而这种超越,个人觉得不是什么弯道超车,而是真真实实需要在技术上超越。这当然很难,因为AWS也好,阿里云也好,都聚集了一帮优秀的人,他们也在持续的投入和进化。但是不是没有机会,没有可能,云计算的领域还是技术主导。 再说说私有云或者混合云市场吧,某种程度上说,公有云和私有云要解决的问题完全不同,公有云要解决的是IT资源池化、服务化的问题;但是私有云、混合云其实要解决的企业IT架构升级以及混合IT架构管理的问题,所谓升级,就是说不管什么云,首先要能解决我在传统IT架构下的问题。 如何做到企业IT架构的安全、合规、稳定、可控。我们经常看到企业的IT管理者跟云服务商的售前完全不在一个频道上。根本原因我觉得是,你没有想清楚企业究竟要解决什么问题。 本文转自d1net(转载)

优秀的个人博客,低调大师

安防云计算核心技术探讨

云计算技术以大系统、大数据为最显著的特征,而安防行业是一个非常典型的大数据应用场景,安防行业中的卡口监控系统、视频监控系统由大量的设备组成(包括大量的前端采集设备、后端平台和云计算服务器集群等),每天产生呈几何级增长的数据,随着智慧城市大型项目的不断成功落地,整个安防平台呈现出数据量超大、数据类型多样、数据处理逻辑复杂、数据清洗、数据共享、数据挖掘难度高等处理难题,对安防厂商提出了巨大的挑战。其中主要表现在智能交通行业领域中海量的交通流信息和卡口过车抓拍图片、智慧城市行业领域中的海量视频录像文件等非结构化数据,安防行业的主要用户公安、交警都有着需要对海量图片和视频文件进行安全有效的数据存储、高性能并行计算、智能化的数据分析挖掘后进行实战方面的强烈需求,这些都与云计算特性非常吻合。提供海量存储的同时,如何快速有效的定位多维度数据,挖掘出各类孤岛数据在多维度的潜在关联关系,一直是我们致力于解决的问题。云计算、大数据等技术正在慢慢渗入安防行业,随着这些技术的发展成熟,将对安防行业带来革命性的影响。 大规模混合计算技术 监控系统产生的大量视频图像数据如果只靠人工来进行处理,效率会非常低,借助于视频智能化处理算法,已经可以从视频图像数据中获取一些简单的特征进行比对,或者进行模式匹配产生报警事件,提高了处理的效率。这种方式能够处理的数据量,数据组合的程度,数据的类型等等都还处于较低的水平,无法应对海量数据和日益增长的需求。大规模计算技术的目的就是为了提供一种统一的数据处理平台,上面可以集成各种智能化算法和计算模型,综合处理海量监控数据,以更快的速度得到更有价值的数据。 统一资源管理技术 监控系统产生的主要数据就是视频和图像数据,原始数据经过处理后,会产生更丰富的数据,处理的方式也会有很大不同。比如对于历史视频数据可以在后台处理的视频数据检索,对于卡口的车牌和人脸特征数据需要实时布控,对历史卡口信息需要做到实时检索。这些数据都需要不同的计算框架进行处理,通过引入统一的资源管理平台,可以在同一个资源池里运行不同的计算框架,大幅提高资源的利用率,同时在资源被某种业务独占时,又能最大限度的发挥系统的性能。 实时检索技术 传统的结构化数据都采用关系型数据库进行保存,通过RAC等技术形成数据库集群,通过索引方式进行加速,但是核心还是基于行存储和关系运算,面对海量记录时在各个方面都已经遇到了瓶颈。实时检索技术通过引入分布式数据库,列式存储,内存计算,索引引擎等技术,能应对100亿级别的结构化数据,在存储容量,可扩展性,检索速度等多个方面都可以得到大幅提升。该系统在智能交通、刑事侦查等视频监控领域具备重要的研究价值和广阔的应用前景。 复杂事件处理技术 随着安防行业的发展,业务变的也来越复杂,比如智能交通领域,出现了车辆积分研判、套牌车分析、同行车分析等需求。这些需求存在产生结果所依赖的条件多、处理过程实时性的要求高、需要处理的数据量巨大等特点。 传统的方式是采用关系数据库,通过复杂的SQL语句组合,不断查询比对的方式,很难满足实时性的要求。复杂事件处理通过引入流式计算等技术,动态地对输入数据进行实时的分析,处理速度可以大幅提供。不符合条件的数据都被丢弃掉,系统中只存在处理的结果或者可能有用的中间数据,这样对存储的要求也变小了,完全在内存中进行全过程的分析,实时性得到了保证。 人脸检索技术 人脸检索的技术在单台服务器上的应用已经比较成熟,可以应用在身份鉴别、在逃人员抓捕、可疑人员排查、身份证查重等领域。人脸检测过程可以分为以下几个阶段:视频或图像解码、人脸检测、特征提取、特征比对,前三个步骤都是每次请求对应一次计算,计算量相对可控,而最后一个步骤特征比每次请求则需要和达亿级的人脸特征进行比对,是运算量最大的一个阶段。 一些实时应用的请求数每秒钟可达请求数达到数百次,每次人脸比对次数可达百万级别时,则整个系统需要支持每秒亿级的人脸特征比对计算。如此大规模的计算,单机上是无法完成的,必须采用集群完成。特征库本身规模不大,但是比对次数很大,属于典型的计算密集型集群,特征库可以全部倒入到内存,在内存中完成计算。 海量视频检索技术 图像传感器采集到的视频数据保存到后端存储后,用户可以随时选择目标区域的多个摄像头,提交给视频检索集群,检索集群按照目标物体的特征快速检索的所有对应摄像头产生视频数据,找到目标物体特征所出现的视频,并定位到准确的时间点。其中主要使用了智能化技术实现视频数据到物体特征结构化数据的转换,支持车辆颜色,车牌,衣着颜色,人脸等特征。基于统一的计算资源池,实现智能化算法的并行运算,线性提高检索效率。 结构化之后的数据可以保存到数据库,下次检索可以直接通过结构化数据进行二次检索,大幅提高检索效率。 分布式对象存储技术 安防云在系统架构和设计上,充分考虑大规模集群环境下软硬件发生故障的现实,采用先进的管理思想和软件系统,实现对大量普通存储服务器存储空间资源进行虚拟化整合,实现软硬件故障高度容错,搭建高度稳定可靠的存储集群。 系统将控制流与数据流分离,以及充分优化元数据节点控制系统,使得系统具备极高的性能和良好的线性扩展能力。系统整体为应用提供统一命名空间,使得系统具备极好的数据共享能力。系统将负载均衡到集群内的各节点上,充分利用集群各节点性能,以获得很好的性能聚合能力以保证系统的稳定。集群采用高度灵活自组网技术,提供简易部署和维护功能。系统在数据可靠方面,采用智能冗余重建技术,保证较高磁盘利用率的前提下,提供最佳冗余策略。另外,系统在节点软硬件故障容错方面,也进行充分考虑,具备屏蔽所有可屏蔽错误能力。 快速文件索引技术 云存储系统可以支持上亿级的文件,同时还需要支持上千个用户同时访问。这么大规模的元数据和并发访问量,采用传统的内存加磁盘多级存储,以及多级索引方式,寻址的开销将非常大,直接影响到系统的可用性。 为了提高系统的响应速度,云存储采用粗粒度的管理方式,以64M作为典型的块大小进行索引,大幅减小元数据的数量,即使如此,系统的元数据规模还是会达到GB级别。基于这种情况,系统采用全内存态的元数据访问模式,可以将文件寻址时间降到毫秒级别。 为了保证元数据的可靠性,需要对元数据的访问做日志记录,并定期将元数据持久化到硬盘。 负载自动均衡技术 采用中心服务器模式来管理整个云存储文件系统,所有元数据均保存在元数据服务器上,文件则被按块划分存储在不同的数据节点上。 元数据维护了统一的命名空间,同时掌握整个系统内数据节点的使用情况,当客户端向元数据服务器发送数据读写的请求时,元数据服务器根据数据节点的磁盘使用情况、网络负担等情况,选择负担最轻的节点服务器对外提供服务,自动调节集群的负载状态。 数据节点内同时有提供磁盘级的负载均衡,根据磁盘的IO负载,空间容量等情况,自动选择负载最轻的磁盘存储新的数据文件。 当有一个数据节点因为机器故障或者其他原因造成离线时,元数据服务器会将此机器自动屏蔽掉,不再将此数据节点提供给客户端使用,同时存储在此数据节点上的数据也会自动恢复到其他可用的节点服务器上,自动屏蔽数据单节点故障对系统的影响。 另外对故障的数据节点上的数据快速恢复,只需将数据节点上的硬盘拔出,插入到其他数据节点,这样即减少集群对数据恢复的压力,又不对客户端读写产生影响。 高速并发访问技术 客户端在访问云存储时,首先访问元数据服务器,获取将要与之进行交互的数据节点信息,然后直接访问这些数据节点完成数据存取。 客户端与元数据服务器之间只有控制流,而无数据流,这样就极大地降低了元数据服务器的负载,使之不成为系统性能的一个瓶颈。客户端与数据节点之间直接传输数据流,同时由于文件被分成多个节点进行分布式存储,客户端可以同时访问多个节点服务器,从而使得整个系统的I/O高度并行,系统整体性能得到提高。 通常情况下,系统的整体吞吐率与节点服务器的数量呈正比。 高可靠性保证技术 对于元数据,通过操作日志来提供容错功能。主服务器本地SSD盘组建高可靠RAID1,提供高可靠容错能力。当元数据服务器发生故障时,在磁盘数据保存完好的情况下,可以迅速恢复以上元数据。且操作日志在主备元数据服务器之间实时同步,实现更高程度的可靠性。 对于节点服务器,采用Erasure Code冗余方式实现容错,数据冗余分布存储在不同的数据节点上。任一数据节点的损坏,不会导致任何数据丢失,不会影响任何的数据访问和写入过程。之后,通过灵活数据恢复机制,进行数据重建过程。集群规模越大,恢复速度越快。 高可用技术 系统中的所有服务节点均是通过网络连接在一起,由于采用了高可靠的容错机制,系统增减节点不必停止服务,可在线增减存储节点。 元数据服务器采用主备双机热备技术,主机故障,备机自动接替其工作,对外服务不停止;存储节点可采用Erasure code冗余备份机制,如采用4+1节点间冗余容错,任意损失一个节点,数据不丢失,服务不停止,客户端无感知。 本文转自d1net(转载)

优秀的个人博客,低调大师

【干货】大数据平台建设实践与探讨

导读:微店是全球领先的移动电商网络,创造了一个便利的手机购物环境,目前有超过3000万的店主使用微店销售商品。微店大数据架构师王锋,将重点描述大数据处理平台中数据采集、传输、存储、分析过程中的公共基础技术部分。 马云说“人类正从IT时代走向DT时代”。这个观念提法很快就被广泛传播开来,并被人们所接受。这里笔者不准备大谈DT时代,但是相信DT时代一定是以数据处理为核心的,因此大数据技术在这里有至关重要的地位,很有幸笔者及各位看官正在这个领域努力。 曾看到一篇文章,里面有个观点,“DT时代的骨骼——大数据处理平台”,反映了大数据处理平台在互联网或者移动互联网公司的重要性。大数据处理平台其实包含了整个大数据处理过程,它承载了从数据采集、传输、存储、分析挖掘(离线 OR、实时 OR、即席查询)、可视化、价值体现的整体流程。这些在大的互联网公司

优秀的个人博客,低调大师

NVDIMM在闪存存储中的应用探讨

SSD作为新型存储介质对外暴露成一种通用块设备,传统应用似乎无需任何改变就可以在SSD上运行。在实际应用过程中,传统业务的确可以在SSD上直接运行,但问题是SSD并没有被充分利用,优势没有被充分发挥;更糟糕的是业务的IO特性会导致SSD出现新的问题。例如,在有些应用现场,用户发现SSD的使用寿命被很快耗尽,写放大系统变得很大,使用寿命与预期不同。厂商的写放大系统是在特定的IO Pattern下测算出来的,实际应用由于存在大量的512字节小写问题,数据分布不够“完美”,从而导致SSD内部的写放大系数比预期要大,从而影响SSD的使用寿命。一句话,SSD的使用不是那么简单的,其与业务的IO Pattern息息相关。如果想在企业级SSD上获取足够的性能、一致性以及使用寿命,那么需要面向SSD对存储软件栈进行重构。重构过程的一个思路是通过优化输入SSD的IO Pattern,来获取SSD的最佳工作状态,发挥SSD的性能、避免SSD的问题。 在IO Pattern的优化方法中,正在蓬勃发展的NVDIMM需要尤其关注。可以这么讲,在技术上NVDIMM和SSD是天生一对,他俩可以特性互补,短期内共存发展。NVDIMM其实并非一个革命性、全新的东西,很多磁盘存储系统早就采用NVRAM技术来实现掉电非易失的缓存。这种NVRAM基于PCIe总线,通过电池保证系统在断电情况下的数据可靠性。NVRAM在存储系统中通常会作为数据缓存。为了保证数据可靠性,一个系统中会设计两块NVRAM,通过Mirror的方式冗余数据。NVDIMM与NVRAM相比,最大的差别是将接口从PCIe转移到了DIMM(内存接口),其次在掉电数据保护方面通过NAND Flash和超级电容相结合的方式保证数据不丢,或者直接采用新型存储介质,例如Xpoint、ReRAM等。 在层次化存储系统中,NVDIMM的性能基本和DDR内存的性能是相同的。在性能上远远超过了SSD,其IO访问延迟在几十至几百纳秒左右,而SSD的访问延迟则达到了百微妙以上。但是,SSD在容量上要远远高于NVDIMM。因此,在现有的分层存储体系架构中,引入NVDIMM可以很好的对SSD、磁盘存储进行优化,尤其是IO Pattern方面的优化。 在设计闪存存储系统的时候,2014年第一次开始使用NVDIMM,那时关于NVDIMM的标准刚刚开始由SNIA组织制定。那时的NVDIMM基本都是SLC NAND + SDRAM + SuperCap的设计方式,工作原理也基本相同,这种NVDIMM就是我们现在标准中的NVDIMM-N。随后在2015年以及2016延伸出另外两个NVDIMM产品标准,分别为NVDIMM-F和NVDIMM-P,这些产品的工作原理、形态都会有所不同。从下图可以看出NVDIMM产品标准的演进方向。不同的NVDIMM产品具有不同的应用场景。在存储系统中常用来替代NVRAM的产品形态为NVDIMM-N。 在现有的标准体系中,主要的产品形态有NVDIMM-N、NVDIMM-F以及NVDIMM-P,各自特性如下图所示。其中NVDIMM-N是最早的产品形态,在存储中用来替代NVRAM之类的应用,在系统中通过访存的方式对其进行访问。在性能上NVDIMM-N和普通的DDR内存是相同的,所不同的是在系统掉电的情况下,NVDIMM-N中的数据会被同步写入到内存条上的SLC NAND Flash中。整个掉电过程由超级电容来进行供电。NVDIMM-F是将Flash做成DIMM接口的块设备,通过块设备接口对其进行访问。有一些存储公司在做这样的产品,通过这种方式可以进一步避免由于PCIe总线引入的SSD访问延迟。由于直接通过DIMM接口访问NAND Flash,所以,NVDIMM-F的性能没有办法与NVDIMM-N相对比。通过采用NVDIMM-F形态的SSD,可以构建高密闪存存储系统,但是缺点是需要定制化服务器平台。最新提出的NVDIMM-P是一种综合NVDIMM-N和NVDIMM-F的产品形态,其技术架构于上述两种都有所不同,最大想法是混合内存与NAND Flash,并且提供块设备以及内存的访问接口,在性能上也介于NVDIMM-N和NVDIMM-F之间,容量要远大于NVDIMM-N,可以做到和NVDIMM-F相同的存储容量。 NVDIMM-N是最早提出的产品形态,默认所说的NVDIMM就是这种产品形态。NVDIMM-N的原理如下图所示: 从上图可以看出,内存总线通过Buffer开关可以直接访问DRAM,所以,没有引入额外的IO延迟。在正常使用过程中,NVDIMM-N在系统中就是一片普通内存。在该子系统中我们可以发现有一个称之为Cntlr的控制器,早期产品该控制器都是采用FPGA来实现,通过该控制器可以实现内存数据的持久化与加载操作。当控制器接收到SAVE命令信号后,将DRAM中的数据保存到NAND;在系统重新上电之后,从NAND中加载数据至DRAM中。正因为这个控制器的作用,才保证了在系统异常断电情况下的DRAM数据不丢失。和NVDIMM-P相比,操作系统无法直接访问NAND中的数据。对于NVDIMM-N而言,其一个很重要的技术点是如何在掉电的情况下触发内存数据的持久化操作。在早期的NVDIMM-N设计中,通常需要特殊主板的支持。在该类主板中存在一个硬件单元,例如采用CPLD对电源进行监测,当发现系统电源低于预期时,开始触发处理器进行掉电保护。在该类设计中,操作系统会存在一个驱动程序,该驱动程序负责系统掉电情况下的CPU数据刷新操作。通过该驱动将处理器Cache中的内容刷新到NVDIMM,然后再向NVDIMM硬件发送数据保存信号。NVDIMM接收到SAVE信号之后,将SDRAM中的数据进行持久化。整个过程可以描述如下图所示: 这种操作方式最大的一个问题是不通用,需要硬件平台的定制,并且也需要大电容的续航能力,要保证处理器Cache中的数据全部刷新到内存。另一种更加通用的方法是采用Intel标准的ADR技术,通过该技术,在Intel处理器检测到断电情况时,处理器会向NVDIMM发送SAVE信号,并且让NVDIMM处于自刷新的工作模式。这种方式最大的问题是如何保证处理器缓存数据的掉电非易失。前两年和NVDIMM标准组织讨论过这个问题,目前还没有标准来支持这个特性。也就是说,在系统异常掉电的情况下,处理器Cache中的数据是不能保证非易失的。对于存储应用来讲这是一个严重的缺陷,很有可能在系统掉电的情况下出现数据丢失的问题。所以,在应用NVDIMM的时候一定要解决该问题,这才是NVDIMM在存储应用中的设计重点。 近两年NVDIMM-N已经被相关组织标准化,并且ADR技术已经成为主流技术手段。在DIMM接口方面也定义了新的接口信号。JEDEC JC45.6标准中对12V供电、SAVE_n信号、EVENT#信号以及I2C的电气特性进行了标准化,具体定义如上图所示。 在NVDIMM-N掉电保护过程中的一大功臣是超级电容,这种电容具有很高的电容密度,具备快速充电的特性,在系统掉电情况可以为NVDIMM提供足够的能量,保证将SDRAM中的数据刷新至NAND Flash中。看起来这个部件没有什么特殊之处,似乎在存储系统中不需要对其进行过多考虑。其实不然,任何元件都可能发生故障,如果超级电容发生故障,那么在系统掉电情况下将会发生数据丢失的灾难。超级电容的使用寿命和工作温度息息相关,温度越高,超级电容的使用年限越短,如下图所示: 通过该图可以看出,在不同电容输出电压的情况下,随着环境工作温度的提升,超级电容的使用寿命在下降。在55度工作环境下,很多超级电容的使用寿命居然不到5年。在SSD存储系统中,55度环境工作温度是比较正常的,所以,超级电容的使用寿命成了NVDIMM在存储应用中使用的一个问题。为了解决这个问题,在存储系统设计过程中,需要对超级电容的使用寿命、状态进行监测,一旦出现风吹草动,需要提前进行预警,否则将会导致数据灾难。所以,在存储系统中引入NVDIMM之后,我们发现,NVDIMM解决了存储系统中的很多问题,并且可以和SSD进行配合,优化IO Pattern,但是与此同时也引入了很多棘手的现实问题。 个人觉得对NVDIMM-N冲击比较的大的产品是新型存储介质,例如Xpoint为代表的半导体存储介质。Xpoint构成的Memory最大的好处是不需要超级电容之类的故障部件,虽然在性能上不如NVDIMM-N,但是在存储应用中,需要解决处理器Cache的问题,所以,综合下来的性能Xpoint未必有多大的差距。Xpoint从2015年发布以来,还没有出产品,但是采用Xpoint构建的PCIe SSD已经有测试结果了,性能远远超过采用NAND Flash构建的SSD。如下图所示,在队列深度为1的情况下,采用Xpoint构建的SSD可以运行到将近8万IOPS,是目前PCIe P3700 SSD的7.32倍。未来比较看好这种新型存储介质可以在NVDIMM产品形态上进行创新,与基于NAND Flash的SSD进行配合,通力打造高性能、高效、可靠数据存储系统。 NVDIMM-F是一种比较直接的产品形态,其直接通过控制器将NAND Flash连接到内存总线上。具体原理如下图所示。在系统中,通过块设备的方式对NAND中的数据进行访问。和基于PCIe总线的SSD相比,数据访问总线发生了变化,具有更高的总线带宽。在控制NAND的控制器中,需要实现类似于SSD中的FTL,将NAND包装成块设备供系统使用。 在存储系统中,有些厂商采用这种设计思路。通过自定义硬件平台的方式在内存总线上集成大量的NVDIMM-F模块,从而在较小的物理空间内构建高密存储。早年有一家Skyra存储公司就是采用这种设计思路,想在1U的物理空间内打造PB级存储,这个想法在那个年代还是比较疯狂的。随着NAND Flash颗粒存储密度的提升,在1U空间实现PB级存储已经并非难事,并且也不需要采用NVDIMM-F这样的物理形态。 和NVDIMM-N相比,NVDIMM-F的访问性能相对比较低,其主要限制于NAND Flash的性能。如果将NAND Flash替换成Xpoint之类的介质,那么访问性能将会大大提升。为了均衡内存和NAND之间的性能与容量,诞生了NVDIMM-P产品形态,该产品的原理结构和前两种都有所不同,其通过控制器的方式连接DRAM与NAND,并且可以将NAND和DRAM空间都暴露给系统。这种方式可以理解成一种混合存储的架构,在系统突然掉电的情况下,通过SAVE信号将DRAM中的数据刷新至NAND中。 与NVDIMM-N相比,这种形态可以做到很大的存储容量。但是,由于在DRAM和内存控制器之间介入了额外的控制器单元,因此,DRAM的IO访问性能会有所影响,性能也是介于NVDIMM-N和NVDIMM-F之间。由于是混合存储的模式,所以比较担心性能的抖动性。 为了充分优化SSD闪存存储系统,NVDIMM是一种非常好的存储介质,通过NVDIMM可以实现对SSD IO Pattern的优化处理。但是任何东西都不会是完美的,在存储系统中使用NVDIMM并非找到了救命稻草,而在使用NVDIMM优良特性的同时会遇到很多新的问题。新型存储架构设计过程一方面需要利用新型介质带来的福利,更为重要的是需要解决新型介质引入的问题。期待NVDIMM技术进一步发展与完善,在未来高性能闪存存储系统中发挥更加重要的角色。 (存储之道)

优秀的个人博客,低调大师

日本政府将开始探讨 AI 法律监管

日本共同社消息称,日本政府正在考虑对大型 AI 系统开发商制定具有法律约束力的法规,以确保他们采取措施应对虚假信息和其他风险。 尽管该政府此前倾向于自愿采取此类措施,但出于对 AI 潜在滥用的担忧,日本政府已经认识到有必要制定类似于欧盟和其他国家所采取的惩罚性法规。他们计划召集 AI 专家委员会讨论该问题,并考虑将新规定纳入将于六月左右编制的经济和财政管理政策指南中。 日本计划不久将发布指导方针,列出包括“以人为本”和安全使用 AI 在内的 10 项原则。根据其执政党自民党一个项目小组上个月发布的草案,开发先进技术(例如生成型 AI 聊天机器人 ChatGPT)的企业将被指定为“AI 基础模型开发商”。 在高风险领域使用 AI 的企业将被要求进行内部或外部安全验证,并与政府共享风险评估。政府指定的开发商还将被要求向政府或第三方机构报告其合规状况。如果不遵守规定,政府可以要求报告或进行现场检查,并对违规行为处以罚款和其他处罚。 此前,欧洲议会本月早些时候通过了世界上第一个全面的 AI 法案,预计将于 2026 年生效,并对违规行为处以巨额罚款。拜登 - 哈里斯政府也宣布批准了一份安全软件开发认证表,任何提供政府将使用的软件的公司都需要填写该表格。 相关阅读: 美国政府软件要求提供安全软件开发认证表

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册