异步水平分层架构
Last updated
Was this helpful?
Last updated
Was this helpful?
图3异步化水平分层架构
图3和图2相比,增加MQ层(消息队列层),APP端更新请求经过网关层后持久化到MQ层,返回给APP端。业务逻辑层从MQ层读取更新请求消费。在架构上,通过MQ层把更新请求的处理进行了异步化。图3即变成了异步化水平分层架构。采用异步化水平分层架构,提升了系统整体吞吐量。在社区等高并发业务场景适合异步化架构。异步化架构会带来数据处理的延迟情况,因此对数据一致性要求苛刻的业务场景,比如金融、支付等,异步化架构不适合,这些场景常使用图2同步水平分层架构。
水平分层架构解决了单体架构的问题,它存在的明显问题是每层粒度过粗,在每一层并没有按照业务功能单元进一步垂直拆分。
单体架构按照业务功能在垂直方向进行拆分,就变成了SOA架构,如图4:
图4 SOA架构
图4按照业务功能单元进行拆分,分为了交互服务、信息服务等,每一个服务都是单体,单体服务之间通过企业服务总线(ESB)进行交互。可知SOA架构仅进行了垂直方向拆分,对每个服务并没有按照水平方向进一步拆分,因此SOA架构拆分也不彻底。
SOA的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。
基于这些基础的服务,可以将业务过程用类似BPEL流程的方式编排起来,而BPEL反映的是业务处理的过程,这些过程对于业务人员更为直观,调整也比hardcode的代码更容易。
当然企业还需要对服务治理,比如服务注册库,监控管理等。
我们知道企业计算领域,如果不是交易系统的话,并发量都不是很大的,所以大多数情况下,一台服务器就容纳将许许多多的服务,这些服务采用统一的基础设施,可能都运行在一个应用服务器的进程中。虽然说是面向服务了,但还是单一的系统。