Linux Native Aio 异步AIO的研究 http://rango.swoole.com/archives/282 首先声明一下epoll+nonblock从宏观角度可以叫做全异步,但从微观的角度来看还是同步的IO.只是在数据到达后得到系统通知,然后同步执行recv取回数据,没有iowait. 真正的异步IO(下面会统一叫做AIO)应该像Windows IOCP一样,传入文件句柄,缓存区,尺寸等参数和一个函数指针,当操作系统真正完成了IO操作,再执行对应的函数. 实际上对于socket…
前段时间在自研的基于iSCSI的SAN 上跑mysql,CPU的iowait很大,后面改用Native AIO,有了非常大的改观.这里简单总结一下Native AIO的实现.对于以IO为最大瓶颈的数据库,native AIO几乎不二的选择,仅仅依靠多线程,显然无法解决磁盘和网络的问题. 1 API 与data struct AIO的主要接口: System call Description io_setup( ) Initializes an asynchronous context for t…
嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核锁? Linux的内核锁主要是自旋锁和信号量. 自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用.要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行.自旋锁可以在任何时刻防止多于一个的执行…
(接上文<架构设计:系统存储(27)--分布式文件系统Ceph(安装)>) 3. 连接到Ceph系统 3-1. 连接客户端 完毕Ceph文件系统的创建过程后.就能够让客户端连接过去. Ceph支持两种客户端挂载方式:使用Linux内核支持的mount命令进行的挂载方式.使用用户空间文件系统FUSE(Filesystem in Userspace)进行的网络磁盘挂载方式. 这两种挂载方式的本质差别是,前者须要有Linux内核的支持.而后者仅仅是工作在Linux上的一个应用软件. 3-1-1. 使…
Java生鲜电商平台-电商促销业务分析设计与系统架构 说明:Java开源生鲜电商平台-电商促销业务分析设计与系统架构,列举的是常见的促销场景与源代码下载 左侧为享受促销的资格,常见为这三种: 首单 大于或等于某个会员级别 特定会员组:比如女性,月消费满1000等等,都是通过查询条件查询出来的特定分组. 优惠类型,对于电商网站主要是下面4类: 金额 赠品:商品.优惠券.现金券.积分等 包邮(实际上也是钱) 其它:如送精美包装等. 对于其它业务类型的平台,则估计会有其它形式的优惠,比如赠送三个VIP…
ShareERP 2013-09-03 ERP业务平台化是每个软件提供商必须要进行的趋势,传统定制化路线已死,不能走定制化的老路了.以往最大问的题是不能累积和沉淀技术及提升项目业务管理能力,其次是管理与成本很高.关于平台化设计的文章很多,不在一一列举,具体来分析一下实现平台化的技术,因为介绍实际的软件架构技术的文章实在太少. ERP平台化设计基本要素: 1. 业务模块设计(基础平台,以运行业务): 业务模块是业务流程运行的基础,系统在设计前期应先规划业务模块架构体系,就笔者的所设计的系统为例:…
(接上文<架构设计:系统存储(23)--数据一致性与Paxos算法(上)>) 2-1-1. Prapare准备阶段 首先须要介绍几个在Acceptor角色上须要被持久化保存的数据属性: PrepareVote保存了当前Acceptor接收到的已完毕投票授权的最大投票轮次 AcceptedVote保存了当前Acceptor在赋值阶段完毕投票赋值的投票轮次 AcceptedValue保存了当前Acceptor在赋值阶段被赋予的值 1.第一个阶段Proposer和Acceptor至少要完毕一次网络通…
(接上文<架构设计:系统间通信(19)--MQ:消息协议(上)>) 上篇文章中我们重点讨论了"协议"的重要性.并为各位读者介绍了Stomp协议和XMPP协议. 这两种协议是消息队列中两种不同使用场景下的典型代表. 本文主要接续上文的篇幅,继续讨论消息队列中还有一种典型协议:AMQP协议. 3-3.AMQP协议 AMQP协议的全称是:Advanced Message Queuing Protocol(高级消息队列协议).眼下AMQP协议的版本号为 Version 1.0.这个…
原文地址:8.ERP设计之系统基础管理(BS)-日志模块设计作者:ShareERP 日志模块基本要素包括: 用户会话.登录.注销.模块加载/卸载.数据操作(增/删/改/审/弃/关等等).数据恢复.日志查询,如果高要求的客户可能还需要审计分析.总结报告. 如果想提高用户体验,可以从用户日志分析中得出更多用户操作行为上的数据,以便我们改进程序模块,加深用户体验. 设计日志模块,要考虑多个层面: 1.  用户会话管理:主要记录登录.注销.用户端信息. 2.  用户行为管理:主要记录用户操作行为习惯,记…
1.概述 从本篇文章开始,我们将花一到两篇的篇幅介绍ESB(企业服务总线)技术的基本概念,为读者们理清多个和ESB技术有关名词.我们还将在其中为读者阐述什么情况下应该使用ESB技术.接下来,为了加深读者对ESB技术的直观理解,我们将利用Apache Camel一起搭建一个ESB技术的服务实现,虽然这个示例不能把目前主流的ESB服务实现中所有功能模块都保罗进来,但至少可以让读者看到ESB技术核心服务完整的工作方式. 2.为什么需要ESB 2-1.ESB与SOA 2-1-1.SOA SOA(Serv…