当前位置:首页 > 数码 > 聊聊接口重试机制的几种处置打算——深化分析业界通常 (聊天接口)

聊聊接口重试机制的几种处置打算——深化分析业界通常 (聊天接口)

admin6个月前 (05-12)数码33

1.前言

接口

接口恳求重试机制是保障系统稳固性和容错才干的关键手腕之一。当接口恳求出现失败或临时性失误时,经过重试机制可以提高恳求的成功率。本文将具体引见接口恳求重试机制的几种经常出现方法。


2.几种方法

2.1循环重试

它的基本思绪是:

示例

publicclassRetry{privatestaticfinalintMAX_RETRIES=5;publicstaticResponserequest()throwsException{intretries=0;while(true){try{//发送恳求,前往照应Responseresponse=HttpClient.sendRequest();//恳求成功则前往照应if(response.isSuccess()){returnresponse;}}catch(Exceptione){//恳求失败启动重试}//判别能否超越最大重试次数if(++retries>=MAX_RETRIES){thrownewException("Exceededmaxretries");}//参与距离后重试intinterval=(int)(Math.random()*1000);Thread.sleep(interval);}}publicstaticvoidmn(String[]args)throwsException{Responseresponse=request();//...}}

2.2经常使用SpringRetry库

经常使用SpringRetry库可以很繁难地成功接口恳求的重试机制。

2.2.1参与Maven依赖
<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>1.3.1</version></dependency>
2.2.2参与@EnableRetry注解启用重试性能
2.2.3在须要重试的方法上参与@Retryable注解
@Retryable(value=Exception.class,maxAttempts=3,backoff=@Backoff(delay=5000))publicUsergetUser(Stringid){//远程调用接口}

@Retryable定义了重试规定:-value-重试的意外类型-maxAttempts-最大重试次数-backoff-重试期待战略

2.2.4.还可以自定义RetryTemplate启动更复杂的重试管理
RetryTemplatetemplate=newRetryTemplate();template.execute(context->{//可在此处自定义重试逻辑returnremoteClient.invoke();});

SpringRetry为接口恳求重试提供了完善和易用的处置打算,可以灵敏管理各种重试参数,实用于复杂系统的容错要求。

2.3并发框架异步重试

经常使用并发框架的异步恳求方式可以较繁难地成功接口恳求的重试机制。以CompletableFuture为例:

2.3.1发送恳求经常使用CompletableFuture封装:

CompletableFuture<Response>future=CompletableFuture.supplyAsync(()->{returnservice.call();});

2.3.2当恳求失败时,经常使用retryAsync智能成功重试:

future=future.exceptionally(e->{returnservice.retryAsync();});

2.3.3可以链式调用,自定义重试逻辑:

future.exceptionally(e->{//处置意外}).thenlyAsync(resp->{//处置照应}).retryAsync(retryCount,delay);

关键优势是:

经常使用并发框架可以方便地成功异步重试机制,提高系统容错性。其余框架如Rx也有相似的重试机制。

2.4信息队列重试

经常使用信息队列可以成功接口恳求的异步重试机制。

基本思绪是:

关键步骤:

经常使用信息队列启动重试无利于:

示例

//1.创立队列QueueretryQueue=newQueue("request.retry.queue");//2.恳求失败,发送重试信息publicvoidrequest(){try{//调用接口httpClient.post(url,payload);}catch(Exceptione){//发送重试信息Messagemsg=newMessage(url,payload,maxRetries);retryQueue.send(msg);}}//3.生产者线程启动重试classRetryConsumerimplementsRunnable{publicvoidrun(){while(true){Messagemsg=retryQueue.take();for(inti=0;i<msg.getMaxRetries();i++){try{//重试恳求httpClient.post(msg.getUrl(),msg.getPayload());//恳求成功,完结循环break;}catch(Exceptione){//期待后继续重试}}//重试成功后,确认信息retryQueue.confirm(msg);}}}

这就是经常使用信息队列成功接口重试的基本流程,可以依据需求裁减重试战略、意外处置等逻辑。

2.5自定义重试工具类

经常使用自定义的重试工具类来成功接口恳求的重试机制,提高代码的复用性和可保养性。

重试工具类的成功思绪:

示例:

publicclassRetryUtil{publicstatic<T>Tretry(RetryCallable<T>callable,RetryPolicypolicy){intretries=0;while(true){try{returncallable.call();}catch(Exceptione){if(retries>=policy.maxRetries){throwe;}//期待policy.delay();//重试次数加1retries++;}}}}//口头恳求的函数接口interfaceRetryCallable<T>{Tcall();}//重试战略classRetryPolicy{intmaxRetries;intdelay;}//经常使用示例RetryUtil.retry(()->{//接口恳求returnhttpClient.get(url);},policy);

这样可以提高重试相关逻辑的复用性,防止写重复代码。

2.6经常使用递归结构

经常使用递归结构也可以成功接口恳求的重试机制。

基本思绪是设计一个递归函数,在函数外部发送恳求,假设失败则继续递归调用自身再次重试。

示例:

publicclassRetryRequest{privatestaticfinalintMAX_RETRIES=3;publicstaticResponserequest(intretries){try{//发送恳求Responseresponse=HttpClient.get("http://example.com");returnresponse;}catch(Exceptione){//处置意外//判别能否须要重试if(retries<MAX_RETRIES){//参与重试次数retries++;//提前1秒钟Thread.sleep(1000);//递归调用自身启动重试returnrequest(retries);}//重试失败thrownewRuntimeException("Requestfailedafter"+MAX_RETRIES+"retries!");}}publicstaticvoidmain(String[]args){Responseresponse=request(0);//处置照应}}

关键逻辑是经过递归不时调用自身来成功重试。优势是逻辑较繁难明晰,缺陷是递归档次过深时或许会造成堆栈溢出。须要正当设置最大递归深度,也可以经过循环改写递归来防止深层递归。

2.7经常使用Resilience4j

Resilience4j是一个很好的Java重试库,可以用它来成功接口恳求的重试机制。

关键步骤:

2.7.1参与Resilience4j依赖

<dependency><groupId>io..resilience4j</groupId><artifactId>resilience4j-retry</artifactId></dependency>

2.7.2定义重试逻辑

RetryConfigconfig=RetryConfig.custom().maxAttempts(3).waitDuration(Duration.ofMillis(500)).build();Retryretry=Retry.of("backend",config);

2.7.3经常使用重试逻辑调用接口

Stringresult=retry.executeSupplier(()->{//发送恳求returnbackendService.callAPI();});

2.7.4自定义重试意外predicate

RetryConfigconfig=RetryConfig.custom().retryOnException(e->isRetryable(e)).build();

Resilience4j提供了线程安保的重试decorator,可以经过性能灵敏管理重试战略,很好地允许了接口恳求重试。

2.8经常使用网络工具重试

咱们罕用的一些网络工具来做重试

示例

publicclassRetryExample{privatestaticfinalintMAX_RETRIES=3;publicstaticStringrequest(Stringurl)throwsException{intretries=0;while(true){try{//经常使用HttpClient发送恳求returnHttpClientUtils.get(url);}catch(Exceptione){if(retries>=MAX_RETRIES){throwe;}//参与重试次数retries++;//提前1秒钟TimeUnit.SECONDS.sleep(1);}}}publicstaticvoidmain(String[]args)throwsException{Stringresult=request("http://example.com/api");System.out.println(result);}}//网络工具类classHttpClientUtils{publicstaticStringget(Stringurl)throwsIOException{//发送GET恳求并前往结果}}

关键经过循环和网络工具类来成功重试逻辑,延时管理也可以用Random来成功指数退却。这种utilities+循环的组合可以成功灵敏可复用的重试机制。


3.留意事项

接口恳求重试时须要留意以下几点:

3.1幂等性接口须要是幂等的,屡次调用结果相反,防止重复口头带来反作用。

3.2资源竞争重试或许对服务端形成更大压力,须要思考限流等措施。

3.3超时设置正当设置重试最大次数和总超时期间,防止常年间期待。

3.4重试条件明白哪些意外状况下须要重试,不能无脑重试一切失误。

3.5数据分歧性恳求成功后要幂等升级形态,防止反双数据。

3.6异步机制重试环节不要阻塞主业务线程。

3.7退却战略失败后提前一段期间再重试,可选防止集群重试。

3.8日志记载记载重试的次数、失误要素等信息,繁难排查疑问。

3.9容错机制重试失败后的升级处置,防止级联失败。

总结

接口恳求重试机制对保障系统高可用十分关键,须要依据业务需求选用适合的重试战略。罕用的组合战略包含带最大次数的定时/指数退却重试、缺点转移重试等。重试机制须要综合设置以到达容错成果又防止发生过大的系统负载。


硬盘各种接口IDE.SATA与SATA II的优缺点分析

现在的技术发展实在太快,很多人还没弄清SATA到底有什么好,SATA II又来了。 在传统的IDE、潮流的SATA与前卫的SATA II硬盘之间,到底有着什么样的区别?几种不同的硬盘各自价格等方面又是怎么样?相信很多朋友都想知道。 在深入了解新标准之前,有必要回顾一下原有的技术。 长期以来,硬盘技术的进步,都着重于传输速度和容量两个方面。 基本上认识电脑以来,大家就一直在使用Ultra ATA。 这种延用已久的接口技术,有好些方面都显得过时而需要改进了:大家都知道,数据线太粗,安装不方便,严重影响机箱内空气流通,不利于机箱散热,是传统IDE接口即Ultra ATA硬盘的至命缺点。 不过,IDE硬盘还有很多其它方面的局限性,大概就不是很多人都清楚了。 主从盘相互影响IDE硬盘普遍情况下,一块主板只有两个IDE接口,每个接口可以挂两个IDE设备。 但同一个接口的两个设备是共用带宽的,对速度的影响非常大。 所以稍有常识的人,都会把硬盘和光驱分开两条IDE线连接到主板上这样,IDE有个很大的问题,就是虽然一块主板可以连接4个设备,但事实上只要超过两个,速度就大大下降。 更大的问题是,同一条线上两个设备要严格按主/从设置才能正常运行。 象图中这种西数WD400 JB,主硬盘还有两种不同设置,一条IDE线只接这块硬盘的时候按右边的设置,带从盘的时候则要按中间的设置方式。 据亲身经验,如果没带从盘而按中间的方式设了,会出现五花八门百思不得其解的问题——有时可以启动,有时报告找不到硬盘,有时启动过程中报告硬盘错误之类——每次启动可能出现不同的问题。 不支持热拔插并行ATA在支持设备热插拔方面能力有限,这一点对服务器方面的应用非常重要。 因为服务器通常采用RAID的方式,任何一块硬盘坏了都可以热拔插更换,而不影响数据的完整性,确保服务器任何情况下都正常开着。 具有热插拔支持功能的SCSI和光纤通道占据了企业级应用的几乎全部市场,并行ATA空有价格优势而不能获得一席之地,主要原因就是它不支持热拔插。 不够完善的错误检验技术Ultra DMA引入了基于CRC的数据包出错检测,该技术是ATA-3标准的组成部分。 但是,没有任何一种并行ATA标准提供命令和状态包的出错检测。 尽管命令和状态包出错的范围和几率都小,但它们出错的可能性也不容忽略。 使用过时的5伏电压处理器核心从几个方面要求向低电压过渡。 较低电压允许更快的信号陡变,这对提高速度、降低热耗至关重要。 现在的CPU核心电压基本上都小于2伏,为保持与系统主板上其它芯片的互操作性,通常使用3.3伏的外部电压分离出来,5伏电压成为过时的标准。 虽然大部分目前的 ATA/ATAPI-6标准为并行ATA设备指定的直流电压供应为3.3V (± 8%),但一些模式的接收器大于4伏,所以要使用过时的5伏电压。 字串9接口速度的可升级性差另外,Ultra ATA是受并行总线特性的限制,带宽容易受到限制,经过多次升级,目前最高传输率也只是133M字节/秒。 SATA比IDE优越在哪些地方?SATA是到150流量的,SATAII是300流量SATA不再使用过时的并行总线接口,转用串行总线,整个风格完全改变。 SATA与原来的IDE相比有很多优越性,最明显的就是数据线从80 pin变成了7 pin,而且IDE线的长度不能超过0.4米,而SATA线可以长达1米,安装更方便,利于机箱散热。 除此之外,它还有很多优点:一对一连接,没有主从盘的烦恼每个设备都直接与主板相连,独享150M字节/秒带宽,设备间的速度不会互相影响。 支持热拔插热拔插对于普通家庭用户来说可能作用不大,但对于服务器却是至关重要。 事实上,SATA在低端服务器应用上取得的成功,远比在普通家庭应用中的影响力大。 数据传输更加可靠SATA提高了错误检查的能力,除了对CRC对数据检错之外,还会对命令和状态包进行检错,因此和并行ATA相比提高了接入的整体精确度,使串行ATA在企业RAID和外部存储应用中具有更大的吸引力。 低电压信号SATA的信号电压最高只有0.5伏,低电压一方面能更好地适应新平台强调3.3伏的电源趋势,另一方面有利于速度的提高。 字串7带宽升级潜力大SATA不依赖于系统总线的带宽,而是内置时钟。 刚推出的这一代SATA内置1500MHz时钟,可以达到150M字节/秒的接口带宽。 由于不再依赖系统总线频率,每一代SATA升级带宽的增加都是成倍的:下一代300M字节/秒,再下一代可以达到600M字节/秒SATA仍然存在的几点不足在国内,现在买IDE的人恐怕比买SATA的人多很多。 主要有三个方面的原因:首先,SATA的诸多先进性总体上对个人电脑用户意义不是太大,它最大的意义的反而是适应了入门级企业应用的需要。 其次,nForce4、915之前的那些主板使用SATA硬盘,在安装操作系统的时候需要用到软盘,就象SCSI硬盘那样,增添了用户的麻烦。 另外,国内用户的电脑配置相对落后,很多人都是旧电脑升级大容量硬盘,稍老点的主板还不支持SATA硬盘。 所以,SATA最大的成功在于吸引了很多低端入门级服务器的用户。 但在企业级应用方面,它又仍然在很多方面有待改进:单线程的机械底盘SATA毕竟只是ATA,它的机械底盘是为8x5线程设计的,而SCSI的机械底盘是24x7多线程设计,能更好地满足服务器多任务的需要。 所以SATA虽然在单任务的测试中不比SCSI差,但面对大数据吞吐量的服务器,还是有差距的。 除了速度之外,面对多任务数据读取,硬盘磁头频繁地来回摆动,使硬盘过热是SATA最大的问题。 字串4形同虚设的热拔插功能在实际应用中,RAID硬盘阵列是由多个硬盘组成的,必须知道具体哪一块硬盘坏了,热拔插更换才有意义。 SATA硬盘虽然可以热拔插,但SATA组成的阵列在某块硬盘损坏的时候,不能象SCSI、FC和SAS那样,具有SAF-TE机制用指示灯显示,知道具体坏的是哪一块,热拔插替换的时候,如果取下的是好硬盘,就容易使数据出错。 所以在实际应用中,SATA的热拔插功能有点形同虚设的味道。 速度慢SATA相对于SCSI和FC速度慢,主要原因是机械底盘不同,不适应服务器应用程序大量非线性的读取请求。 所以SATA硬盘用来做视频下载服务器还不错,用在网上交易平台则力不从心。 SATA 1.0控制器的传输速度效率不高,虽然标称具有150MB/s的峰值速度,事实上最快的SATA硬盘速度也只有60MB/s。 整个解决方案价格不虽然SATA硬盘相对于SCSI硬盘来说很便宜,但整个的SATA方案并不便宜。 主要原因是SATA 1.0控制器的每个接口只能连接一个硬盘,8个硬盘组成的阵列需要8个接口,把每个接口300多元的花费算进去,就不便宜了。 SATA II与准SATA II很多人到现在都还不是太清楚SATA与Ultra ATA相比有什么区别与好处,这也难怪。 因为连Intel刚推出SATA的时候,也没想到这个为个人用户而改进的方案,结果会在入门级服务器和工作站等企业应用的前前景更为广大——也正因为这样,2004年才专门成立了SATA IO(SATA国际组织)。 字串8前面那么多介绍,是结合现实情况与SATA官方白皮书整理的,从中已经可以发现,说到SATA优缺点,更多的是从企业应用而不是个人与家庭应用的角度考虑的。 现在经常听到“NCQ硬盘”和“SATA II硬盘”这两个名词,它们是SATA向下一代——SATA II发展的两个不同阶段的产品:第一阶段是在SATA的基础上加入NCQ原生指令排序、存储设备管理(Enclosure Management)、底板互连、数据分散/集中这四项新特性。 第二阶段是在第一阶段的基出上作进一步改进,加入了双宿主主动式故障替换、与多个硬盘高效连接、3.0Gb(即300MB/s)接口带宽等特性。 “NCQ硬盘”的改进:不仅仅是NCQ这么简单由于SATA II的第一阶段几项改进中,NCQ原生指令排序技术对个人用户意义比较大,所以也只有这一项技术比较多人了解。 其实SATA II第一阶段加入的技术包括如下几项:NCQ原生指令排序Native command queuing:什么是NCQ呢?这是SCSI早就使用的一种技术,只是最近才应用于SATA硬盘。 传统台式机硬盘都用线性形式处理请求,这种方式潜在很不好的方面,要理解其中原理,必须对硬盘物理结构有个基本了解。 硬盘里面是圆盘状的,很象CD光盘。 每一个圆盘由许多同心圆划分为一条条磁道,磁道又分出扇区。 每个圆盘由一个或多个磁头负责读取。 如果数据分布在同一磁道,寻找数据的速度是最快的。 在不同磁道之间移动则消耗很多时间。 假设要读取三块数据,其中一块在圆盘最外边的磁道上,一块在圆盘最里面的磁道上,还有一块在圆盘最外边的磁道上。 传统的硬盘,会依次先读取圆盘最外面的数据,然后读取最里面的数据,最后再回头读取最外面的数据。 这样一来,磁头移来移动消耗的寻道时间多,效率就低了。 如果把磁头移动减到最少,寻道时间就会相应减少。 这就是NCQ的目的所在——NCQ可以重新编排指令,不让磁头从外移到内再移到外,而是在移向圆盘内圈之前就读取外圈的两块数据。 字串7现在大家应该明白了,CPU的速度对硬盘性能影响微乎其微,但NCQ技术则可以明显改善硬盘性能,特别是对前面提到的SATA多线程性能差、容易磁头频繁来回摆动、硬盘容易过热这些方面有很大改善。 机架管理(Enclosure Management)前面提到SATA的热拔插技术,由于阵列中有一块硬盘出现故障的时候,不知道具体坏的是哪一块而形同虚设。 SATA II第一阶段即拥有NCQ技术的SATA硬盘,加入了机架管理技术,正是用来解决这一问题的。 背板互连(Backplane Interconnect)SATA用于数据发送的导线数量很小,因而出现了为外部RAID使用而部署的底板。 该底板是一块物理线路板,通常集成到机架的后面板上,上面嵌入了通过刻在线路板上的导线连接到中心控制器插件的多个设备接头。 值得注意的是,中心控制器与主机的接口可以按任意一种协议来设计,可以是SCSI、光纤通道或iSCSI。 底板的使用可使设备咬住接头并紧密结合。 当然,受到FR4材质信号衰减的限制,中心控制器和SATA设备接头之间蚀刻线路的最大长度必须限制在18英寸以内。 虽然这种限制表面上局限了底板端子和SATA机架的设计,而事实上,标准机架为19英寸宽,因此,在一个1U到3U的机架内,为SATA而蚀刻的最大导线长度足以从一个位置适中的中心控制器连接到所有设备接头。 字串4SATA II不等于300MB/s首先,是接口带宽从原来的150MB/s扩展到了300MB/s。 但SATA II不能与300MB/s划等号,因为它包含了SATA II第一阶段的NCQ等技术,以及更多的其它技术:其次,SATA II可以通过Port Multiplier,让每一个SATA接口可以连接4-8个硬盘,即主板有4个SATA接口,可以连接最多32个硬盘。 另外,还有一个非常有趣的技术,叫Dual host active fail over。 它可以通过Port Selector接口选择器,让两台主机同时接一个硬盘。 这样,当一台主机出现故障的时候,另一台备用机可以接管尚为完好的硬盘阵列和数据,这就确保服务器不管在某块硬盘损坏,或是某坏CPU之类的其它配件损坏的情况下,仍能正常运作。 结语:给个人电脑用户的特别提示最后,相信大家对IDE、SATA、NCQ、SATA II已经有了比较整体的认识。 或许很多关于服务器方面的技术还不太明白,其实这没关系,最重要的是获得这样一个概念:SATA、SATA II的改进,大多数不是为个人电脑用户而设的。 SATA对个人电脑用户真正有意义的地方,也就是让机箱散热更加良好。 但与此同时,如果你的主板不支持SATA II,在获得这样一个好处的同时,安装windows操作系统会比较麻烦——需要插入SATA的驱动软盘。 所以IDE用户千万别以为SATA更先进,改用更先进的SATA硬盘会有多大的性能提升。 字串6使用支持NCQ技术的硬盘,对喜欢同时运行很多个程序的用户可能会有速度上的改进,而且由于磁头比较少来回摆动,硬盘会比较长寿,温度也会比较低。 但前面没有提到的一个必要前提是,必须主板和硬盘都支持NCQ技术才起作用。 至于SATA II,唯一对个人电脑用户有意义的就是300MB/s的带宽——当然,SATA II全都是支持NCQ的。 不过千万别指望带宽比原来增加了一倍,就可以获得接近于SATA两倍的速度,因为目前硬盘的速度主要是受硬盘内部数据传输率的限制,而不在于接口带宽,接口带宽的增加对个人用户带来的速度改善,是微乎其微的。 同样,SATA II的好处——支持NCQ和300MB/s的带宽,必须要主板支持,在只支持SATA I的主板上使用SATA II硬盘,就连“微乎其微”的改善也不会有。 总体来说,SATA、NCQ以至完整的SATA II,对一般个人电脑用户的意义不是非常大,它们最大的意义在于为企业应用提供了SCSI、FC之外的廉价存储解决方案——当然如果几种硬盘的价格相差很小的话,尽可能选最先进的SATA II是没错的。 如果担心新技术会不成熟存在某些未知缺陷,继续选择SATA I硬盘甚至是IDE硬盘,也是相当不错的方案。

数码相机的内存卡有哪几种?

现在主要的存储卡类型很多,主要有小型闪存卡(CF卡—compact flash),智慧卡(SM卡—smart media)和记忆棒(MS卡—Memory Stick),xD图像卡、以及多媒体卡(MMC卡—MultiMedia Card)和安全数字卡(SD卡—Secure Digital)等。 下面我们来逐一介绍: 卡 CF卡是最早推出的存储卡,也是大家都比较青睐的存储卡。 CF卡得以普及的原因很多,其中比较重要的一点就是物美价廉。 比起其他数码存储卡,CF卡单位容量的存储成本差不多是最低的,速度也比较快,而且大容量的CF卡比较容易买到。 我们可以接触的到CF卡分为CF Type I/CF Type II两种类型。 由于CF存储卡的插槽可以向下兼容,因此TypeII插槽既可以使CF TypeII卡 又可以使用CF Type I卡;而Type I插槽则只能使用CF Type I卡,而不能使用CF Type II卡,朋友们在选购和使用的时候一定要注意。 卡 SD卡体积小巧,广泛应用在数码相机上,是由日本的松下公司、东芝公司和SanDisk公司共同开发的一种全新的存储卡产品,最大的特点就是通过加密功能,保证数据资料的安全保密。 SD卡在外形上同MultiMedia Card卡保持一致,并且兼容MMC卡接口规范。 不过注意的是,在某些产品例如手机上,SD卡和MMS卡是不能兼容的。 SD 卡在售价方面要高于同容量的MultiMedia Card卡。 卡 在5年前,索尼公司生产了它自己的闪存记忆卡,就是记忆棒—Memory Stick。 其应用于索尼公司出的数码产品,掌上电脑、MP3、数码相机、数码摄像机等等数码设备。 由Memory Stick所衍生出来的Memory Stick PRO和Memory Stick DUO也是索尼记忆棒向高容量和小体积发展的产物。 卡 SM卡最早是由东芝公司推出的,它仅仅是将存储芯片封装起来,自身不包含控制电路,所有的读写操作安全依赖于使用它的设备。 尽管由于结构简单可以做得很薄,在便携性方面优于CF卡,但兼容性差是其致命之伤,一张SM卡一旦在MP3播放器上使用过,数码相机就可能不能再读写。 其市场表现已呈龙钟之态,不会再有更多新的设备支持它。 卡 MMC卡是由Sandisk和西门子于1997年联手推出的,它普及还沾了点SD卡的光。 后来推出的SD卡标准中保留了设备对MMC卡的兼容,就是说虽然使用MMC卡的设备无法使用SD卡,而使用SD卡的设备却可以毫无障碍地使用MMC卡,在某些时候使得MMC顺利成为SD卡的代替品。 MMC卡的大小和SD基本一样,比SD卡要薄一点,不过在读取速度上还是SD强。 因此价格也是MMC比较便宜。 图像卡 xD图像卡是继上面几种存储卡而后生的存储卡产品,是由富士胶卷和奥林巴斯光学工业为SM卡的后续产品成功开发的产品。 它的特点是集体积更小、容量更大于一身,xD图像卡设计只有一张邮票那么大,未来图像存储能力高达令人惊叹的8GB。 存储卡的使用 一般产品用什么样的存储卡也和公司的合作政策有关系。 比如有些产品只支持自己公司出的存储卡,像Sony和PanaSonic那样;有些产品则支持多种类型的存储卡,以更好的方便用户,博得更多用户群的喜爱。 不过大致也有一定的方向,我们来综合说说吧: 数码相机: 1.索尼的数码相机不用当然就是用自己的存储卡Memory Stick或者Memory Stick PRO了,这个毫无异议; 2.松下的数码相机也是用SD卡; 3.佳能以前是用比较廉价的CF卡,不过慢慢地也向体积细小的SD卡靠拢了; 4.在xD卡没出来以前,奥林巴斯和富士的数码相机是采用SM卡作为存储卡的,不过奥林巴斯和富士合作开发出xD卡后,毫无疑问,都一起抛弃了前途昏暗的SM卡,xD卡就自然是它的存储介质了。 5.柯尼卡美能达在去年开始合并,在合并以前,柯尼卡的数码相机是采用MS/SD/MMC双插槽的设计,美能达则是采用SD/MMC卡的,在合并后,柯尼卡美能达的数码相机都是采用SD/MMC卡为存储介质。 6.三星是比较后续的数码相机厂商,因此其对存储卡并没有一个很明确的定向使用,有支持SD/MS的,也有支持CF/SD的。 7.至于其他大厂,例如柯达、宾得、卡西欧等品牌都采用的是SD卡作为介质,就不一一解说了,因为基本的方向都是朝着方便轻巧发展,自然是SD卡为主了。 PDA: 1.索尼的PDA还是用自己的存储卡Memory Stick或者Memory Stick PRO。 2.惠普、DELL、PALMONE等品牌是主要以SD卡为主要的存储介质,也有SD/CF双卡设计。 3.华硕、ACER、东芝等品牌也是以CF为主要的存储介质,也有SD/CF双卡设计的。 从上面产品的存储卡分类可以看到,SD是最受欢迎而且潜力是最大的。 常见存储卡的选购 当我们拥有一个数码产品后,可能就要开始为它的扩展性和容量操心了,选择一张好的存储卡其实也说难不难说容易不容易,要了解现今市场的存储卡价格和品牌以及质量,就需要下一番功夫了,下面让笔者去给大家做个开路先锋,帮大家扫扫市场: 卡: CF卡最早由Sandisk公司于1994年开发推出,如今,CF卡的牌子林立,选择也很多,主要的有SanDisk、EagleTec、Kingston、Kingmax等占领市场,而价格上主要是主流的128MB售价180元,256MB售价280元,512MB售价500元,这个是普通卡的价格参考。 卡: SD卡,最初是由东芝与松下联合推出,SD卡因为引入了数据保密机制,它将DVD的保密技术移植到闪存设备中来,数据加密存储,有利于保护数据安全和知识产权。 现在还是比较少人去买松下原装的SD卡,由于其价格贵,而且可以选择的牌子很多。 市场上SD卡主要的牌子有SanDisk、apacer、LEXAR等等,一般主流128MB售价195元,256MB售价330元,512MB售价560元,这个是普通卡的价格参考。 卡: MS卡是索尼公司在1999年后期开始投产的,主要用户还是索尼产品的用户,虽然主要是索尼用户,但是用户群也挺大的。 现在主要的牌子有apacer、LEXAR、索尼等,一般主流128MB售价300元,256MB售价600元,这个是普通卡的价格参考。 卡: 2002年6月,日本奥林巴斯株式会社和Fujifilm有限公司联合推出xD图像卡,主要是用于这两家公司的数码相机上。 现在主要的牌子就只有奥林巴斯和Fujifilm,价格也比较贵,128MB售价340元,256MB售价680元。 卡: MMC卡和SD卡差不多,主要牌子也和SD卡的差不多,128MB售价160元,256MB售价260元,价格比SD卡便宜。 卡: 至于SM卡,由于基本现在的产品都不采用,所以缺货

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: 接口

“聊聊接口重试机制的几种处置打算——深化分析业界通常 (聊天接口)” 的相关文章

从入门到精通-扒一扒接口最大并发处理数 (从入门到精通的开荒生活)

从入门到精通-扒一扒接口最大并发处理数 (从入门到精通的开荒生活)

前言 在互联网高速发展的今天,高并发、高性能和高可用性已成为互联网系统设计的关键指标。本文将重点探讨高并发和接口最大并发处理数之间的关系。 并发和并行 并发 并发是指在同一时间范围...