怎么理解php的中间件

是什么

定义

根据zend-framework中的定义:

所谓中间件是指提供在请求和响应之间的,能够截获请求,并在其基础上进行逻辑处理,与此同时能够完成请求的响应或传递到下一个中间件的代码。
复制代码

在两个服务之间的模块,都可以称为中间件。

中间件应该一种架构方法,不局限于特定的语言。 例如提供不同应用之间消息通讯的消息中间件。淘宝下面很多产品之间都需要信息共享,通过一个中间人来专门传递消息。这样做很容易扩展,对上层应用提供统一消息操作接口就行了。 单个程序内部也可以有中间件,一个程序内部实现对中间件接口对支持。 把底层的接口包装一层,然后向上层提供接口。这样底层改变的话,上层也就是你写的代码不用动,只改中间件即可。由于只有中间件一个地方调用底层,改起来会比较方便。

有哪些

非底层操作系统软件、非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件,统称中间件。常见的有如下几种:服务中间件、集成中间件、数据中间件、消息中间件、安全中间件。

用Java实现的中间件,统称Java中间件。中间件,可以理解为类库,介于类库和产品之间。中间件真的是java世界的产物,我等phper能找的资料太少了。

说简单一点,就是你的程序A和程序B互相通信使用的协议,程序A,B可以由不同语言不同平台构建。但是协议可以保证他们能互相认识互发的东西。

简单说,中间件有个很大的特点,是脱离于具体设计目标,而具备提供普遍独立功能需求的模块。这使得中间件一定是可替换的。如果一个系统设计中,中间件是不可替换的,不是架构、框架设计有问题,那么就是这个中间件,在别处可能是个中间件,在这个系统内是引擎。

消息中间件

消息中间件就是一个临时存储器。主要解决应用耦合,异步消息,流量削锋等问题,是大型分布式系统不可缺少的中间件。

1.用于海量数据洪峰的临时存储,比如抢购秒杀,后端程序一下子处理不了这么多抢购请求,那就由消息中间件来存储抢购请求,后端程序再慢慢取出消息处理呗
2.用于多个系统之间的消息传递
复制代码

目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。

数据库中间件

使用场景的比较多,比如:

1、读写分离
2、数据库从库的负载均衡
3、分布式事务
4、支持多种数据库(Mysql、PG、Oracle等)
复制代码

框架中的中间件

CI框架和tp框架中的hook(钩子),就是中间件的一种。 laravel中可以使用php artisan 命令创建中间件,比如请求过滤器就是最常见的中间件使用方法一种。Laravel支持全局的中间件和根据具体路由规定的中间件两种,同时优先级又以定义顺序为准。 ZendFramework是由zend公司推出的php框架,其目标就是建立一套大而全的php框架。以满足企业应用开发的目标。其中"zend-stratigility" 负责提供中间件以及中间件执行流的功能。

附录

一篇比较巧妙设计中间件的文章 blog.youkuaiyun.com/qq_20329253… 一片用闭包实现中间件的文章 blog.youkuaiyun.com/allen_tsang…

求关注,求喜欢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值