企业开发珠玑-异步

一、目标:考虑使用一个工具之前,一定要深刻理解自己的目标是什么,要解决的问题是什么,是否有业务意义,或者商业价值。没目标做事就是瞎掰,没目标或者也是瞎掰。

二、场景之一:日志。偶尔会用到复杂的日志系统,日志要写很多地方,时间被拉长

三、场景之二:复杂的业务,但是可以并行。本人使用过的场景就是抓数据--》分析,数据抓取后,进行多角度的分析是可以并行的。

四、场景之三:某些技术场景。如我们公司的系统多系统对接,经常互发消息,发消息的前提就是对方系统是活着的,俗说的握手,偶尔系统故障,或者跨区域延迟高--------耗时。所以非实时应答需求也使用异步交互。

五、有保障的异步:disruptor。速度效率极快,适用要求严格步骤的异步。它的异步可以像一个树形结构一样执行程序,父子节点有先后顺序,同级节点可以并行,并且多个子节点可以收敛到一个孙子节点,孙子节点可以等所有父节点执行完毕再执行。 它是起于一个银行系统。

六、无保障的异步:akka是个代表作。消息发完就不管了,甚至在发消息同时你关闭系统都无所谓,它不做任何保障承诺,所以用于非严格数据安全场景。

七、通常我们用于标准的符合java JMS标准的消息服务器是也可以认为是异步的。它们一般可以无保障和有保障的发送消息,通过设定不同的参数。如activemq等。

八、异步是一个系统发展趋势。性能是考虑的一方面,更重要的是它分离关注点,不仅编码可以分离,甚至未来有可能发展出专有硬件来支撑软件。

时间: 2024-10-07 11:22:44

企业开发珠玑-异步的相关文章

企业开发珠玑-化整为零,分而治之

一.这堆屁话不仅是为了应对企业复杂的业务需求和变化,复杂的代码变化,也是执行力的强有力技巧之一. 二.化整为零,分而治之.是指将大目标制定为脚下的每一步,这一步多大多宽,因人,因时而异 三.空壳测试.空壳测试这名词是自己发明的,可以发生在设计阶段,demo阶段,或编码的第一阶段.从架构和业务角度,对业务编码,服务器和组件的调用路径进行测试,保证调用关系是符合业务需求.符合设计的.企业开发有个难点就是各种开发组件和,工具,新旧系统混杂,发生多个系统交互的概率很大,出错的很难找问题出在那个环节.因此

企业开发珠玑-过度设计

一.过度设计一般起源于对需求太多的计划,预测和猜想.要知道"计划赶不上变化"是普遍真理.所以因时,因地制宜才是最重要的.用国外传过来的词就是"敏捷开发". ------顺便吐槽一下"敏捷开发","迭代开发","瀑布流"这些争论.挺扯淡,其实都是要看人员,资金,时间等各方面的条件,那些贬此扬彼都是为理论而理论,或者别有用心. 二.怎么规避过度设计?不管时敏捷还是瀑布,都要避免过度设计.说些个人经验,架构设计的

企业开发珠玑-缓存

一.缓存实际把我们数据划分为静态和动态数据,直接影响数据库设计.这里的静是相对的,不是绝对静,请不要死脑筋. 这一点很容易理解,经常变化的数据不做缓存,相对静止数据做缓存 二.缓存影响我们的架构模式,影响我们的前端设计,增加我们的异步行为,让我们在编码中也动静分离. 1)局部刷新模式.经常用到的模式例子就是产品-库存,产品的描述部分是固定的,但是库存是不停的消耗补充的.协调到前端就是,打开产品页后,ajax异步不停的刷库存.诸如此类细节数据动态变更都使用此模式. 2)内存数据库模式.在编码中例子

企业开发珠玑--给新手管理的建议

1)不要给小孩网络.小孩不控制自己的探索欲望,容易迷路 2)任务目标明确,给参考案例,不要发散,要收敛,谨遵守:copy-modify模式 3)菜鸟的问题十之八九是粗心大意导致.去解决这些充满幻想的粗心大意问题挺费时间的. 没有办法的解决办法就是从环境搭建到代码全部重来一遍,代码重写一边,api重新参考手册. 4)教会菜鸟debug,观察变化.走一步看一步,摸石头过河.菜鸟学不会不会的就准备苍蝇拍吧... 5)多让小孩起立会议发言.70,80,90差距大着呢. 6)管理放松,考核严格.催发内动力

企业开发珠玑-管理变化

易经中对易的解释:变易,简易之道,变化而又恒常.用初中课本马克思相关内容解释就是:世间的一切事物都是运动的.到我们软件中就是"需求是变化的".曾几何时,掷笔从容,恶骂客户,恶骂老板......再不济的,都背后唠叨过几句操蛋的需求变更.现在想想,骂是该骂,但骂的主题是错的.实际上不是客户要变,不是分析师分析不清楚需求,而是公司统筹管理出了问题. 既然变化不可避免,一是要多方面.多角度的思考发生变化的的风险应对措施,另外软件设计时就要考虑未来变化的可能性,不说上穷碧落下黄泉,千年等一回,至

Android开发之异步具体解释(一)Thread+Handler

请尊重他人的劳动成果,转载请注明出处:  Android开发之异步具体解释(一)Thread+Handler http://blog.csdn.net/fengyuzhengfan/article/details/40211589 在Android实际开发project中常常会进行一些诸如:文件读写.訪问网络等耗时的操作,这些耗时的操作是不建议放到UI线程里的. 所以我们会新开一个线程.在子线程中进行这些耗时的操作.耗时操作过程中.UI常常须要更新,但Android是不同意在子线程中改动UI的.

Android开发之异步详解(二)之AsyncTask

请尊重他人的劳动成果,转载请注明出处:Android开发之异步详解(二)之AsyncTask http://blog.csdn.net/fengyuzhengfan/article/details/40212745 我曾在<Android开发之异步详解(一)之Thread+Handler>一文中介绍过通过Thread+Handler实现异步操作.感兴趣的朋友可以看一下. 虽然Thread+Handler可以实现更新主线程的UI并实现异步,但Thread+Handler模式需要为每一个任务创建一

Android开发之异步详解(一)Thread+Handler

请尊重他人的劳动成果,转载请注明出处:  Android开发之异步详解(一)Thread+Handler http://blog.csdn.net/fengyuzhengfan/article/details/40211589 在Android实际开发工程中经常会进行一些诸如:文件读写.访问网络等耗时的操作,这些耗时的操作是不建议放到UI线程里的.所以我们会新开一个线程,在子线程中进行这些耗时的操作,耗时操作过程中,UI经常需要更新,但Android是不允许在子线程中修改UI的.所以就出现了Th

Win8.1应用开发之异步编程

在win8应用商店开发时,我们会遇到许多异步方法,它们存在的目的就是为了确保你的应用在执行需要大量时间的任务时仍能保持良好的响应,也就是说调用异步API是为了响应用户的操作.设想一下我们点击一个Button,会从网上下载一些信息,如果没有异步,我们就不得不等它下载完才能继续进行操作.为了能在下载时保持响应,windows提供了一个用于下载源的异步方法SyndicationClient.RetrieveFeedAsync. // Put the keyword, async on the decl