什么是SOA

SOA(Service-Oriented Architecture),中文全称:面向服务的架构。
SOA提倡将不同应用程序的业务功能封装成“服务”并宿主起来,通常以接口和契约的形式暴露并提供给外界应用访问(通过交换消息),达到不同系统可重用的目的。
SOA是一个组件模型,它能将不同的服务通过定义良好的接口和契约联系起来。服务是SOA的基石。 
业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力
通过服务的组合和编排来实现上层的业务流程
作用:简化维护,降低整体风险,伸缩

微服务架构

  • 什么是微服务架构
    架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念

作用:各服务可独立应用,组合服务也可系统应用(巨石应用[monolith]的简化实现策略-平台思想)

微服务和SOA的区别

微服务是SOA架构演进的结果。两者说到底都是对外提供接口的一种架构设计方式,随着互联网的发展,复杂的平台、业务的出现,导致SOA架构向更细粒度、更通过化程度发展,就成了所谓的微服务了。
总之,微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式。

SOA与微服务的区别在于如下几个方面:

  • 微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
  • 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
  • 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
  • SOA架构主要针对企业级、采用ESB服务(ESB企业服务总线),非常重,需要序列化和反序列化,采用XML格式传输。
  • 微服务架构主要互联网公司,轻量级、小巧,独立运行,基于Http+Rest+JSON格式传输。

为什么要使用微服务?

技术为业务而生,架构也为业务而出现,当然SOA和微服务也是因为业务的发展而出现。https://www.cnblogs.com/wwct/p/12945230.html
平台随着业务的发展从 All in One 环境就可以满足业务需求(以Java来说,可能只是一两个war包就解决了)。发展到需要拆分多个应用,并且采用MVC的方式分离前后端,加快开发效率;在发展到服务越来越多,不得不将一些核心或共用的服务拆分出来,其实发展到此阶段,如果服务拆分的足够精细,并且独立运行,我觉得就可以将之理解为一个微服务了。

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端的程序,想要调用远程对象的方法。

  

RMI,SOA,微服务的更多相关文章

  1. atititi.soa  微服务 区别 联系 优缺点.doc

    atititi.soa  微服务 区别 联系 优缺点.doc 1. 应用微服务的动机,跟传统巨石应用的比较1 2. 面向服务架构(SOA)  esb2 3. 微服务架构(Microservices)2 ...

  2. SOA&微服务&服务网格&高可用

    SOA 架构 SOA 全称是:Service Oriented Architecture,“面向服务的架构”. 它是一种设计理念,其中包含多个服务,服务之间通过相互依赖最终提供一系列完整的功能. 各个 ...

  3. SOA & 微服务

    参考文档: https://www.cnblogs.com/renzhitian/p/6853289.htmlhttp://www.jdon.com/soa.htmlhttps://www.ibm.c ...

  4. 应用架构的演进--MVC,RPC,SOA,微服务架构

    MVC架构:垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率. 当业务规模很小时,将所有功能都部署在同一个进程中,通过双机或者前置负载均衡 ...

  5. Service Mesh架构的持续演进 单体模块化 SOA 微服务 Service Mesh

    架构不止-严选Service Mesh架构的持续演进 网易严选 王育松 严选技术团队 2019-11-25 前言同严选的业务一样,在下层承载它的IT系统架构一样要生存.呼吸.增长和发展,否则过时的.僵 ...

  6. Ant.SOA微服务框架开源

    开源地址:https://github.com/yuzd/AntServiceStack   框架特色0.Service Management(服务治理) 1.CodeGen Contract Fir ...

  7. 微服务架构 vs. SOA架构

    面向服务架构(SOA)已经存在有些年头了,这是一种用于设计软件的伟大原则.在SOA中,所有组件都是独立自主的,并能为其他组件提供服务.要替换掉系统中的某些部分而不对整个系统造成较大的影响本是个难题,然 ...

  8. MVC RPC SOA 和微服务架构的区别

    MVC RPC SOA 微服务架构的区别 单体架构 MVC(Model View Controller) M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使 ...

  9. 程序员修神之路--为什么有了SOA,我们还用微服务?

    菜菜哥,我最近需要做一个项目,老大让我用微服务的方式来做 那挺好呀,微服务现在的确很流行 我以前在别的公司都是以SOA的方式,SOA也是面向服务的方式呀 的确,微服务和SOA有相同之处 面向服务的架构 ...

  10. 从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?

    作者 | 易立 阿里云资深技术专家 导读:从十余年前的各种分布式系统研发到现在的容器云,从支撑原有业务到孵化各个新业务,企业的发展离不开统一的.与时俱进的技术架构.本篇文章从企业分布式应用架构层面介绍 ...

随机推荐

  1. ubuntu 安装osx 主题 转自linux公社

    繁體 你好,游客 登录 注册 搜索 首页Linux新闻Linux教程数据库技术Linux编程服务器应用Linux安全Linux下载Linux认证Linux主题Linux壁纸Linux软件数码手机电脑 ...

  2. [NOIP2010 提高组] 关押罪犯 - 洛谷

    P1525 [NOIP2010 提高组] 关押罪犯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 种类并查集 #include <bits/stdc++.h> #def ...

  3. grpc断路器之sentinel 荐

    背景 为了防止下游服务雪崩,这里考虑使用断路器 技术选型 由于是springboot服务且集成了istio,这里考虑三种方案 istio hystrix sentinel 这里分别有这几种方案的对比 ...

  4. Linux内核信号SIGIO使用实例讲解

    一.信号 1. 基本概念 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上, ...

  5. 2024年智能革命:HarmonyOS NEXT与盘古大模型5.0的颠覆性融合

    引言 2024年,这一年注定在全球智能设备市场的历史上写下浓墨重彩的一笔.作为全球科技巨头,华为再次以其前瞻性的布局,推动了技术与应用的深度融合.在这个充满变革的时代,华为通过不断扩展的鸿蒙生态系统, ...

  6. 学习设计微服务:api认证

    前言最近再学习微服务,所以把自己的个人站点https://www.ttblog.site/拆分成微服务.目前正在思考微服务里面的认证与授权,网上百度到都是根据用户名和密码来实现的,考虑到实际的原因,我 ...

  7. 使用FastAPI来开发项目,项目的目录结构如何规划的一些参考和基类封装的一些处理

    使用FastAPI开发项目时,良好的目录结构可以帮助你更好地组织代码,提高可维护性和扩展性.同样,对基类的封装,也可以进一步减少开发代码,提供便利,并减少出错的几率. 下面是一个推荐的目录结构示例: ...

  8. sicp每日一题[1.42]

    Exercise 1.42 Let f and g be two one-argument functions. The composition f after g is defined to be ...

  9. 小tips:node版本管理工具nvm

    nvm是node版本管理工具 为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版本的node的工具 安装 nvm-windows 最新下载地址: https://git ...

  10. Vue——前端框架

    Vue    Vue 快速入门    <!DOCTYPE html> <html lang="en"> <head> <meta char ...