Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1445365
  • 博文数量: 209
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3772
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
个人简介

阿弥陀佛

文章分类

全部博文(209)

文章存档

2019年(3)

2018年(5)

2017年(6)

2016年(10)

2015年(9)

2014年(73)

2013年(90)

2012年(13)

分类: 架构设计与优化

2013-12-07 17:42:23

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

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

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

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