首页 > 其他分享 >Restful、SOAP、RPC、SOA、微服务之间的区别

Restful、SOAP、RPC、SOA、微服务之间的区别

时间:2023-03-16 23:24:05浏览次数:60  
标签:SOA 服务 RPC 应用 架构 Restful SOAP

内容大纲:

1.介绍Restful、SOAP、RPC、SOA以及微服务

2.重点谈谈SOA与微服务的区别

3.以及为什么要使用微服务架构

什么是Restful

Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务。

主要的设计原则:

  •  资源与URI
  •  统一资源接口(HTTP方法如GET,PUT和POST)
  •  资源的表述
  •  资源的链接
  •  状态的转移

总之,RESTful的核心就是后端将资源发布为URI,前端通过URI访问资源,并通过HTTP动词表示要对资源进行的操作。

什么是SOAP

  • 简单对象访问协议是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。SOAP协议和HTTP协议一样,都是底层的通信协议,只是请求包的格式不同而已,SOAP包是XML格式的。
  • SOAP的消息是基于xml并封装成了符合http协议,因此,它符合任何路由器、 防火墙或代理服务器的要求。
  • SOAP可以使用任何语言来完成,只要发送正确的soap请求即可,基于soap的服务可以在任何平台无需修改即可正常使用。

RPC

  • PRC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
  • PRC会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)
  • PRC是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)
  • PRC在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。

4种典型RPC远程调用框架

(1)RMI实现,利用java.rmi包实现,基于Java远程方法协议(Java Remote Method Protocol)和java的原生序列化。

(2)Hessian,是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 基于HTTP协议,采用二进制编解码。

(3)thrift是一种可伸缩的跨语言服务的软件框架。thrift允许你定义一个描述文件,描述数据类型和服务接口。依据该文件,编译器方便地生成RPC客户端和服务器通信代码。

(4)dubbo,阿里的RPC框架。

(5)还有SpringCloud框架,微服务全家桶。为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。

微服务在本质上,就是rpc。rpc有基于tcp的,http的,mq的等等。spring cloud是基于spring boot的,spring boot 实现的是http协议的rpc,算是rpc的一个子集。

什么是SOA

SOA(Service-Oriented Architecture),中文全称:面向服务的架构。

通俗点来讲,SOA提倡将不同应用程序的业务功能封装成“服务”并宿主起来,通常以接口和契约的形式暴露并提供给外界应用访问(通过交换消息),达到不同系统可重用的目的。

SOA是一个组件模型,它能将不同的服务通过定义良好的接口和契约联系起来。服务是SOA的基石。

微服务和SOA的区别

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

总之,微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式。

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

  1.  微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
  2.  微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
  3.  微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。

为什么要使用微服务?

技术为业务而生,架构也为业务而出现,当然SOA和微服务也是因为业务的发展而出现。出现SOA和微服务框架与业务的发展、平台的壮大密不可分,下面借用dubbo的网站架构发展图和说明:

 
  •  单一应用架构
  •  当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
  •  此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
  •  垂直应用架构
  •  当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
  •  此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
  •  分布式服务架构
  •  当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
  •  此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
  •  流动计算架构
  •  当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
  •  此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

平台随着业务的发展从 All in One 环境就可以满足业务需求(以Java来说,可能只是一两个war包就解决了)。

发展到需要拆分多个应用,并且采用MVC的方式分离前后端,加快开发效率;在发展到服务越来越多,不得不将一些核心或共用的服务拆分出来,其实发展到此阶段,如果服务拆分的足够精细,并且独立运行,我觉得就可以将之理解为一个微服务了。

  •  单一应用架构
  •  当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
  •  此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
  •  垂直应用架构
  •  当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
  •  此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
  •  分布式服务架构
  •  当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
  •  此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
  •  流动计算架构
  •  当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
  •  此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

平台随着业务的发展从 All in One 环境就可以满足业务需求(以Java来说,可能只是一两个war包就解决了)。

发展到需要拆分多个应用,并且采用MVC的方式分离前后端,加快开发效率;在发展到服务越来越多,不得不将一些核心或共用的服务拆分出来,其实发展到此阶段,如果服务拆分的足够精细,并且独立运行,我觉得就可以将之理解为一个微服务了。

 

标签:SOA,服务,RPC,应用,架构,Restful,SOAP
From: https://www.cnblogs.com/xiaobingch/p/17224631.html

相关文章

  • 【保姆级教学】某金融app FRIDA hook加解密算法+jsrpc=乱杀
    首发于土司:https://www.t00ls.com/thread-68782-1-1.html0x01APP渗透测试因为是经过授权的测试,所以拿到的这个包是没有加固的。加固的话,也是有对策的,可以使用脱壳机脱......
  • 如何在 Apinto 实现 HTTP 与gRPC 的协议转换 (上)
    什么是gRPC像gRPC是由google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多数流行的编程语言。gRPC基于 HTTP/......
  • VC MFC 使用 soap方式与web服务器交互
    首先安装MicrosoftSOAPToolkit3.0  soapsdk.exe链接:https://pan.baidu.com/s/15NeiuXQm4Wnvjvd8ngPwsA提取码:l8yh  包含头,引用库,命名空间#import"msxml6.d......
  • postman调试grpc接口
    一直用postman调试http接口,很顺手。这次试了下调试grpc接口,方便  然后导入proto文件  选择调用的grpc接口,调用 ......
  • gRPC之.Net6中的客户端和服务端共用proto协议文件
    1、说明在上一篇文章gRPC之.Net6中的初步使用介绍中,我们简单的介绍了gRPC在服务端、客户端以及Web项目中的使用。有一个问题,不知道大家发现没有,就是不管在服务端项目还是......
  • RPC
    对于整条RPC调用链路(从App到网关再到各个服务系统),怎么设置RPC的超时时间,要考虑哪些问题?”   结合TP99请求耗时:首先如果你要回答“超时时间设置和重传次......
  • RPC框架JMH测试-chatgpt自动生成
    本文将介绍如何使用Java的JMH测试框架来测试RPC框架的性能。我们选择了ApacheDubbo作为目标RPC框架,Dubbo是一种高效的远程调用框架,它支持多种传输协议和序列化协议,并且具......
  • RPC 微服务框架设计
    本文依旧主要参考沈剑大佬的微服务设计相关的五篇博文及其精彩评论,还参考其他数位网友的优秀分享,文末是完整参考。1、SOA和微服务SOA(Service-OrientedArchitecture,面......
  • 微服务RPC框架-Feign
    一个成熟的微服务集群,内部调用必然依赖一个好的RPC框架,比如:基于http协议的feign,基于私有tcp协议的dubbo。本文内容介绍feign。一、What?如果不使用rpc框架,那么调用服务需......
  • 1、认识soar
    SOAR的概念最初是Gartner在2015年提出的,指的是“SecurityOperations,AnalyticsandReportingStack”,即“安全运维分析与报告”。 随着安全技术与市场的演变,S......