FF ASIO 异步消息网络框架

简介: 在前边http://www.cnblogs.com/zhiranok/archive/2011/12/12/boost_asio.html 我提到,针对前面使用boost asio 中遇到的问题,对asio进行封装,如下几个目标: 1. 创建socket、acceptor不再自己构造io_service,由于asio中的对象均要保存io_service的引用,   若要手动构造,必须保证io_service晚于所有的asio对象(如socket、acceptor)释放,但是往往socket被逻辑层保存在某个内存深处,任意一个socket晚于    io_service释放,将会引起崩溃。

在前边http://www.cnblogs.com/zhiranok/archive/2011/12/12/boost_asio.html

我提到,针对前面使用boost asio 中遇到的问题,对asio进行封装,如下几个目标:

1. 创建socket、acceptor不再自己构造io_service,由于asio中的对象均要保存io_service的引用,

  若要手动构造,必须保证io_service晚于所有的asio对象(如socket、acceptor)释放,但是往往socket被逻辑层保存在某个内存深处,任意一个socket晚于    io_service释放,将会引起崩溃。

2. 编写分布式程序时,都是采用异步消息,但是asio 中对socket进行async_write不能保证线程安全,而且我们必须保证在单个socket上发送数据

  必须是顺序的。

3. io_service必须绑定线程才能运行,而每个asio socket都需要io_service,所以经常要手动为io_service创建线程,但是经过测试表明,网络io分配的线程配置

  2-4个效率最佳,在增加线程并不能增大吞吐量,这是由于asio采用全异步模式。所以我们只需要开启两个专门的线程给asio的io_service用即可,

  省了在关心线程的分配。

4. 在编写分布式程序中,变的往往只是逻辑层,网络框架、消息协议基本不怎么变化,所以网络框架必须能够保证逻辑层的接口足够灵活。在基于消息模式

  通讯的框架下,每个程序需要单独定制自己的消息派发策略。

5. 如果新增加支持的消息协议,必须保证无需重写框架,而且保证原来的消息派发策略仍然有效。

目前ff_lib已经能够很好的支持以上几点,当然,消息解析并没有来得及优化,目前仍然处于demo版本。

其类关系如图:


 

其实现参见:

http://code.google.com/p/redrabbit/source/browse/trunk/lib



目录
相关文章
|
3月前
|
数据采集 存储 数据处理
Scrapy:Python网络爬虫框架的利器
在当今信息时代,网络数据已成为企业和个人获取信息的重要途径。而Python网络爬虫框架Scrapy则成为了网络爬虫工程师的必备工具。本文将介绍Scrapy的概念与实践,以及其在数据采集和处理过程中的应用。
23 1
|
3月前
|
消息中间件 NoSQL Linux
workFlow c++异步网络库编译教程与简介
搜狗公司C++服务器引擎,编程范式。支撑搜狗几乎所有后端C++在线服务,包括所有搜索服务,云输入法,在线广告等,每日处理数百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数后端与嵌入式开发需求。 编程范式 结构化并发与任务隐藏回调与内存回收机制
53 0
|
3月前
|
NoSQL Linux Redis
Redis 的网络框架是实现了 Reactor 模型吗?
Redis 的网络框架是实现了 Reactor 模型吗?
|
4月前
|
机器学习/深度学习 数据采集 分布式计算
社交网络分析4(下):社交网络链路预测分析、LightGBM框架、LLSLP方法(LightGBM 堆叠链路预测)、堆叠泛化 、社交网络链路预测分析的挑战
社交网络分析4(下):社交网络链路预测分析、LightGBM框架、LLSLP方法(LightGBM 堆叠链路预测)、堆叠泛化 、社交网络链路预测分析的挑战
217 0
|
12天前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。
|
存储 设计模式 网络协议
Netty网络框架(一)
Netty网络框架
31 1
|
1月前
|
网络协议 安全 网络安全
网络基础与通信原理:构建数字世界的框架
网络基础与通信原理:构建数字世界的框架
46 1
|
3月前
|
数据采集 存储 机器人
Scrapy网络爬虫框架——从入门到实践
网络爬虫已经成为了信息获取的必备工具之一,而Scrapy作为Python中最流行的网络爬虫框架之一,具有高效、可扩展、易用等特点。本文将深入介绍Scrapy框架的概念和实践,帮助读者快速掌握构建高质量网络爬虫的方法。
59 0
|
3月前
|
数据采集 存储 调度
Scrapy:从入门到实践的网络爬虫框架
Scrapy是一款强大的Python网络爬虫框架,可以帮助开发者更高效地抓取互联网上的数据。本文将介绍Scrapy的概念和基本原理,详细讲解如何使用Scrapy框架实现一个简单的网络爬虫,并分享一些实战经验和技巧。
|
3月前
|
数据采集 存储 调度
Scrapy:高效的Python网络爬虫框架
在信息时代,数据的获取和分析已经成为了一项重要的技能。而网络爬虫则是实现数据采集的一种常用手段。Scrapy作为一个高效、灵活的Python网络爬虫框架,其具备强大的扩展性、高度的可配置性以及良好的兼容性。本文将从Scrapy的概念入手,介绍其基本原理、使用方法以及实际应用案例。

热门文章

最新文章