摘抄大牛的----“评估中间件的靠谱程度”

中间件是否靠谱,往往前期的调查是需要花时间、精力和人力成本去试水的。

如果有这个成本倒是随便试,可是从头来过换别的试试的事情,真的很不好。

看了一下大牛发的文章,很不错,摘抄一下。


  1. 集成复杂度。好的中间件的特点是高度模块化(就是说不随便暴露无关的接口),最小侵入(普通的使用不需要你使用继承之类的强耦合关系),容 易集成到完全不同类型的代码库(比如尽可能地使用可移植代码而不是直接调用平台API),对外部环境有极少的假定,极力与其他系统的实现细节解耦。设计良 好的第三方库应尽可能地具有有效的默认行为,需要最小量的配置就可以工作起来。集成的代码接触面积应该最小化(这个接触面积越大越深入,评估周期和维护工 作量就会成倍增长)。如果一个中等水平的程序员做了两天还没让集成能初步跑起来,集成复杂度就值得怀疑了。(需要两天以上时间去集成的库,通常需要n个两 天去维护)
    (俺认为,配置繁杂、接口凌乱的库,往往意味着作者还没想清楚这个库应该被怎么用,应该用于什么场景,该遮的没遮住,不该露的到处走光,还是很容易识别的)
  2. 内存管理。关心两点:a. 内存占用是否有不合理的开销 b.
    内存所有权和分配释放的职责是否清楚。理论上,库的作者应该是对库的内存使用情况最了解的人,他应该定制明确的分配和管理策略。当超出预算时,应该能明确
    地通知使用者,从而有机会去处理这类事件,而不是任由自己想分多少就分配多少。(更好的设计是把内存使用设计为可伸缩的,这样调用方有机会在运行时根据需
    要动态去指定内存用量)
    如果一个库不能独立管理一个独立堆或内存池,那至少也要把 alloc/free
    的接口开放出来。(这样至少可以接管一下,有机会决定转发到系统堆还是定制的堆,以及插入一些统计和调试性的代码)最糟糕的情况是,直接到处随意地
    new/delete。这样的话资源的消耗情况就很难控制了。
  3. 对大量 I/O
    访问的处理。硬盘/光盘/网络都是有延迟的,所以访问的策略非常重要。一个第三方库永远不应该直接调用系统API去访问外部资源(如声音文件等),调用方
    应该有机会去捕获文件和数据的请求,提供定制的方案,从定制的数据源(如已经缓存到内存中的打包数据)读取。最灵活的方式是库完全不提供任何文件或流的读
    取,只访问给定的内存块,把资源如何获取完全交给调用方开发者处理。最糟糕的中间件,总是假定 POSIX
    文件系统在目标平台是有效的,直接依赖C语言运行时的 FILE 和 fopen() 之类的东东。
  4. 日志系统。设计优良的库能够一致地处理运行时的消息,警告和错误,也很容易集成到你已有的日志系统。更好的设计给你一个选项能从高到低(从
    完全静默到最少量的关键错误到完全的调试信息)逐级开启各类信息。当开启静默的选项时,编译期就能把这些额外的调试输出字符串干掉,以避免额外的开销。当
    开启 ‘Noisy
    verbosity‘之类的选项时,系统的各项指标都不断地被输出,通过某段给定的输出,基本能够了解系统当时运行的上下文细节,一些不当的使用也能被及
    时捕获。
  5. 错误处理,稳定性,性能开销,工具。通常评估一个技术,这些都是必须考察的指标,俺就不一一赘述了。
  6. 客户支持,维护工作量,可移植性等等,这些属于延伸的需求,都很直观,也就略去不提。

摘抄大牛的----“评估中间件的靠谱程度”

时间: 2024-09-04 22:27:24

摘抄大牛的----“评估中间件的靠谱程度”的相关文章

对比其它软件方法评估敏捷和Scrum

一般来说,选择一种软件开发方法,更像是加入一个邪教组织,而不像是做出了一个技术决策.许多公司甚至从未试图去评估这些方法,而仅仅是盲目采用最流行的方法,这就造成了如今五花八门的各种敏捷方法.因此本文将使用包括功能点.缺陷移除率(DRE).质量成本(COQ)以及总拥有成本(TCO)在内的一些标准的度量指标,对现代软件开发方法的样本进行比较. 目前有约55种已命名的软件开发方法正在使用,还有更大数量的混合方法.这些开发方法中包括传统的瀑布方法.各种花样的敏捷.Rational统一过程(RUP).团队软

怎样判断一个股权众筹项目是否靠谱?

2015年之前,听到的更多是"产品众筹",等京东推出了"股权众筹"之后,才开始了解到,普通人也可以参与股权众筹项目了. 上次写了,怎样判断一个P2P平台是否靠谱,今天,结合自己的一点经验,谈谈自己的几点看法. 当然,无论是P2P平台债权众筹,还是股权众筹,风险还是不小的,仅从参考. 1.股权众筹平台    平台自身的资质和信用,是非常关键的.平台自身可靠,平台上的项目,才更有可能靠谱,投后服务更有保障.    我只是初步参与了京东东家这个股权众筹平台上的项目,感觉京

285.软件体系结构评估概述

7.1.1 评估关注的质量属性 软件体系结构的设计是整个软件开发过程中关键的一步.对于当今世界上庞大而复杂的系统来说,如果没有一个合适的体系结构而要有一个成功的软件设计几乎是不可想象的. 不同类型的系统需要不同的体系结构,甚至一个系统的不同子系统也需要不同的体系结构.体系结构的选择是一个软件系统设计成败的关键.但是,怎样才能知道为软件系统所选用的体系结构是否恰当?如何确保按照所选用的体系结构能顺利地开发出成功的软件产品呢?要回答这些问题,需要使用专门的方法对软件体系结构进行分析和评估. 体系结构

Gradient Boost Decision Tree(&Treelink)

http://www.cnblogs.com/joneswood/archive/2012/03/04/2379615.html 1.      什么是Treelink Treelink是阿里集团内部的叫法,其学术上的名称是GBDT(Gradient Boosting Decision Tree,梯度提升决策树).GBDT是“模型组合+决策树”相关算法的两个基本形式中的一个,另外一个是随机森林(Random Forest),相较于GBDT要简单一些. 1.1    决策树 应用最广的分类算法之一

django authenticate

程序少不了验证用户与权限分配.通过 Django 自带以及我们一些扩展就能够满足验证与权限的需求. 我在使用 Django 遇到的"login(request, user) 之后,再重定向这个 request,然后 request.user 变成了 anonymous user"问题. 使用了一个自定义的 backend,然后使用 authenticate(parm) 能够获取到 user. 搜索了这些 django login in and redirect to current_u

oracle 数据库体系结构图解

工作之后,一直忙着搞前端开发:基本忘却了,oracle的所有东西:回想当初的"DBA"梦想;想想现在的境况,一言难尽,感慨万千:为了捡起数据库的知识,一直在看大牛们的博客:为了加深记忆,便与复习:后面将不断摘抄大牛的博客内容:拾人牙慧: 下面是一张oracle体系结构: 参考地址:http://blog.chinaunix.net/uid-7589639-id-2974642.html

小贷项目管理总结

华福小贷项目从2016-10-26 13:30 – 15:30 电话会议后正式开始,项目计划: 2016-10-31  下班之前,约定优先级 2016-11-2   UI设计全部完成 2016-11-11  接口开发完成 2016-11-18  开发完成 2016-12-2   发包 2016-12-30  上线 需要开发的接口28个,其中转发接口14个,硬编码接口14个.截止到今天11月13日,转发接口14个接口全部完成,硬编码接口14个完成7个.硬编码接口只完成一半. 项目与计划出现偏差,出

cics

CICS 是IBM 公司的强大主机交易服务器.集成平台,在全球C.C++.COBOL等交易中间件市场上占有绝大多数客户.CICS有超过30年的历史,开发于在IBM英国的 赫思里(Hursley)研发中心.CICS英国式发音是"kiks".在AIX.HP等分布平台上的CICS叫Txseries.交易服务器也叫交易处 理中间件.支持联机交易服务(OLTP),提供用户实时的交易请求与响应,支持分布式交易服务.多个数据源.异种数据源.和分布式协同应用,支持两阶段提 交. 目录 1国际背景 2著

项目进度估算难题

(本文曾发表于<程序员>2015.09.B) 程序员要面临的挑战千千万,项目进度评估是有史以来就存在而且到现在也没有完美解决的重量级问题. 我曾发过一张暴漫,描述项目行进的过程,叫做"软件项目9步神曲".我还专门写了一篇文章,"乐观的程序员",里面也提到了这个.感兴趣的可以点开链接跟过去看看. 项目进度这个坎儿其实又可以拆分为两个: 工作量评估 项目执行与评估 前一阵圈子里流行一篇文章,题目是"做一个这样的APP要多久",类似的版本还