一: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提供的服务的协议。。继续借用一张图来说明下。
他两个的关系就是思想与实现的关系