ESB,SOA,微服务结构的区分别以及WebService、RMI、RPC、REST、RestFul区别

  • Post author:
  • Post category:其他


一:ESB(enterprise service bus)企业总线

一图胜万语:

在这里插入图片描述

ESB之前很火,特别是在大公司,如银行,财经等大集团肯定或多或少的使用过。现在已经成历史了,为什么呢?

原因主要是:

1:ESB的本身就很复杂,大大增加了系统的复杂性和可维护性。

2:就是由于ESB想要做到所有服务都通过一个通路通信,直接降低了通信速度。

3.单纯的ESB作用不大,需要配套其他众多解决方案才能更好工作。比如Load balance,心跳监控等等。

二:SOA(Service Oriented Architecture) 面向服务架构

上图从左右的凌乱转换到右边的ESB统一管理的思想,或者说设计模式就是SOA。有点抽像,说白了:它是一种设计理念,其中包含多个服务, 服务之间通过相互依赖最终提供一系列完整的功能。各个服务通常以独立的形式部署运行,服务之间 通过网络进行调用。

三:微服务(microservice ):

不知道是哪个始作俑者这么直白翻译成微服务?微者小也!所以很多人都认为微服务就是微小的服务,在这个全民皆微的时代:开发者认为把功能做到最小化就是微服务,业务的人认为把事情拆成小化单元化就是微服务了……每个人的眼里都有自已的微服务(貌似跟风与围观是人的天性)。其实微服务是种思想,他是指把

复杂

的事情/系统能拆分成多个具有能

独立完成

某件事或业务组件服务。

所以前提是复杂,有需要拆的才拆(要有价值与意义)。结果现在很多人为了’微’而微。比如明明是件很简单而独立的事:吃饭!很多人为了赶时髦,把吃饭拆成:拿碗,盛饭,拿筷子,夹菜…… 还美其名曰:微服务,高大上。

具体的可以参考:

https://blog.csdn.net/weixin_40868341/article/details/98358291,其中有对微服务做了深刻分析。

四: WebService

这家伙搞程序的应该没有人没听过吧。他主要是以开放的xml标准来实现不同平台/语言/域之间的通信。不太明白的可以自行百度下。

五:RMI(Remote Method Invocation)与RPC(Remote Procedure Call Protocol)

RMI:远程方法调用是种Java技术,只适用与Java之间进行通信。RPC:远程过程调用协议是种协议,他与平台/语言无关。目前比较成功的如阿里的dubbo.

借用baidu的一张图说明下RPC工作原理:

在这里插入图片描述

一次RPC调用的过程大概有10步:

1.执行客户端调用语句,传送参数

2.调用本地系统发送网络消息

3.消息传送到远程主机

4.服务器得到消息并取得参数

5.根据调用请求以及参数执行远程过程(服务)

6.执行过程完毕,将结果返回服务器句柄

7.服务器句柄返回结果,调用远程主机的系统网络服务发送结果

8.消息传回本地主机

9.客户端句柄由本地主机的网络服务接收消息

10.客户端接收到调用语句返回的结果数据。

六.REST& RestFull

REST = REpresentational State Transfer .主要作用:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

RESTful是一种针对Web,iOS,Android和第三方开发者变为平等的角色通过一套API来共同消费Server提供的服务的协议。。继续借用一张图来说明下。

他两个的关系就是思想与实现的关系

在这里插入图片描述



版权声明:本文为weixin_40868341原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。