网络程序出现,就有了“请求”-“响应”(Request-Response / R-R)式的软件架构,其出现至今已经很久很久了,或许是人类社会中各系统之间的交互规则,决定了B/C/W – S类型的R-R型架构, 该种架构类型满足了人类社会的信息系统需求, 同时也影响了程序工程人员的思想。
这里分析当下B/C/W - S构架中的 S 端:
S端大都以多层服务器架构型来实现的,如下:
为了实现服务器处理的高性能,分别对Server Cache DB 层做水平的扩展, 所有的数据交互仍然是R-R型的交互方式, 即请求数据,响应数据。
例如 当用户发来一个请求Request1,时,请求数据,以及处理该请求所需的其它数据流为:
loadbalance -> S1 -> C1 -> DB1
当数据返回的路线为
DB1 -> C1 -> S1 -> loadBalance -> 用户
然而分析 用户的请求,有:增删改查
其中有些并不需要进行复杂的计算, 像 查找一个数据,删除某数据, 这个任务完全可以由Cache层实现。并不需要Server处理,而Server只注于其自身的业务就行。
而协同架构中, 其于系统的观点,从各个子系统的功能角度出发, 将S端的各子系统放置于平等的地位, 同时利用其主动推送数据的功能, 其架构图如下:
在这种架构下,一个请求Request1到来时处理流程如下:
一、在 需要复杂处理的情况下,数据流向为:
1. Request1 -> S1
->C1
2. C1 -> S1 (C1 把所需的数据推送给S1)
3. S1 处理数据后返回给 -> loadBalance -> 客户
二、在只有查询的情况下
数据请求
Request1 -> C1
数据返回
C1 -> loadbalance -> 客户
或许只是R-R的思想影响了你系统的性能, 尝试一下 上面这个方案。
又或是人性的缺点影响了你系统的性能呢 ?