SOA指的是面向分布式架构,从实际项目的角度来思考,SOA把Service层和web层拆分成了一个单独的项目(也就是一个war包)。
web和service 是远程调用的关系,这个架构可以叫做面向服务架构,通常实现远程调用RPC的技术有如下:
1. WebService
2. dubbox(dubbo) – 轻量级服务区治理框架
3. Spring Cloud – 重量级服务治理框架
如果是使用WebService实现面向服务架构?
从上图可以看出,webservice采用面向服务分布式架构,可以提高并发能力,分布式项目采用集群的方式部署(高可用性),但是同时也存在着缺点,比如网络抖动和进程繁忙。
为了解决上面的问题,可以使用dubbox来解决。
如果是使用Dubbox实现面向服务架构?
从上图可以看出,使用dubbox来进行项目架构,表现成以及服务层拆分成了一个war包,web层和service服务通过dubbo进行远程调用。获取对象时,可以对对象进行序列化和反序列化。
dubbo使用了NIO异步通信即Netty技术,NIO是有缓冲的,不像IO没有缓冲。