RMI,SOA,微服务
什么是SOA
通过服务的组合和编排来实现上层的业务流程
作用:简化维护,降低整体风险,伸缩
微服务架构
- 什么是微服务架构
架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念
作用:各服务可独立应用,组合服务也可系统应用(巨石应用[monolith]的简化实现策略-平台思想)
微服务和SOA的区别
SOA与微服务的区别在于如下几个方面:
- 微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
- 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
- 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
- SOA架构主要针对企业级、采用ESB服务(ESB企业服务总线),非常重,需要序列化和反序列化,采用XML格式传输。
- 微服务架构主要互联网公司,轻量级、小巧,独立运行,基于Http+Rest+JSON格式传输。
为什么要使用微服务?
RMI 协议的全称为 Remote Method Invocation
(远程方法调用)协议。
RMI 应用程序通常包含两个独立的程序,一个服务器和一个客户端。典型的服务器程序会创建一些远程对象,使对这些对象的引用可访问,并等待客户端调用这些对象上的方法。典型的客户端程序获取对服务器上一个或多个远程对象的远程引用,然后调用它们上的方法。RMI 提供了服务器和客户端通信和来回传递信息的机制。这样的应用程序有时被称为分布式对象应用程序。
分布式对象应用需要做到以下几点:
- 定位远程对象:应用程序可以使用各种机制来获取对远程对象的引用。例如,应用程序可以使用 RMI 的简单命名工具 RMI 注册表注册其远程对象。或者,应用程序可以传递和返回远程对象引用作为其他远程调用的一部分。
- 与远程对象通信:远程对象之间的通信细节由 RMI 处理。对于程序员来说,远程通信看起来类似于常规的 Java 方法调用。
- 为传递的对象加载类定义:因为 RMI 允许来回传递对象,所以它提供了加载对象的类定义以及传输对象数据的机制。
下图描述了一个 RMI 分布式应用程序,它使用 RMI 注册表来获取对远程对象的引用。服务器调用注册表以将名称与远程对象关联(或绑定)。客户端在服务器的注册表中通过其名称查找远程对象,然后调用它的方法。该图还显示,RMI 系统使用现有的 Web 服务器在需要时为对象加载类定义,从服务器到客户端以及从客户端到服务器。
RMI 的核心和独特功能之一是它能够下载对象类的定义,如果该类未在接收方的 Java 虚拟机中定义。一个对象的所有类型和行为,以前只能在单个 Java 虚拟机中使用,现在可以传输到另一个可能是远程的 Java 虚拟机。RMI 通过对象的实际类传递对象,因此当对象被发送到另一个 Java 虚拟机时,对象的行为不会改变。此功能允许将新类型和行为引入远程 Java 虚拟机,从而动态扩展应用程序的行为。此跟踪中的计算引擎示例使用此功能将新行为引入分布式程序。
RMI由3个部分构成:
第一个是rmiregistry(远程方法调用注册,JDK提供的一个可以独立运行的程序,在bin目录下,名为rmiregistry.exe)。
客户端端和服务端都有rmiregistry.exe,客户端基于他进行对象发现,服务端基于他进行对象注册。
第二个是server端的程序,对外提供远程对象
第三个是client端的程序,想要调用远程对象的方法。