Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7172015
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 架构设计与优化

2013-12-09 18:58:19

读了一些开源软件,接触了leveldb,memcached,zfs on linux.
觉得优秀的软件在设计上总是相似的。

列举出开源软件中使用的很好的设计模式:
Reactor
模式只是模式,与具体的实现不一定是一一对应的。他封装了一个可重用的事件分离和分发框架。可以用一个线程等待多事件源的事件请求的发生。直到从事件源处收到了事件,Reactor 获得了产生事件的事件句柄,并将事件以非阻塞的形式发送下去。不同的Reactor需要不同的事件分离器。

Half-Sync/Half-Async
这个设计模式是与Reactor经常是一起来使用的。并发的软件总是异步和同步同时存在。异步可以高效的利用底层提供服务,同步可以简化应用程序的处理工作。
这种模式采用三层架构,分为同步服务层,中间队列层,异步服务层。该模式通过中间队列层将同步服务层与异步服务层分开。在异步服务层只负责完成最基本的工作。然后将数据放入到队列层,同步层通过中间队列层(这里相当于memcached中的connect_queue)拿数据,并进行必要的同步工作。

前面的异步层可以通过Wrapper Facade 将与平台相关的异步IO功能封装到统一的接口层中,借此实现并发软件的可移植性。memcached就很好的利用了这一点,使用libevent,libevent将与平台相关的内容封装到了库里。这样memcached就可以移植到了不同的平台上。
阅读(360) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~