Restful、SOAP、RPC、SOA、微服务之间的区别-copy
什么是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
RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)
RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)
RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。
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与微服务的区别在于如下几个方面:
- 微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
- 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
- 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
为什么要使用微服务?
技术为业务而生,架构也为业务而出现,当然SOA和微服务也是因为业务的发展而出现。出现SOA和微服务框架与业务的发展、平台的壮大密不可分,下面借用dubbo的网站架构发展图和说明:
- 单一应用架构
- 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
- 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
- 垂直应用架构
- 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
- 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
- 分布式服务架构
- 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
- 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
- 流动计算架构
- 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
- 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。
平台随着业务的发展从 All in One 环境就可以满足业务需求(以Java来说,可能只是一两个war包就解决了)。
发展到需要拆分多个应用,并且采用MVC的方式分离前后端,加快开发效率;在发展到服务越来越多,不得不将一些核心或共用的服务拆分出来,其实发展到此阶段,如果服务拆分的足够精细,并且独立运行,我觉得就可以将之理解为一个微服务了。
Restful、SOAP、RPC、SOA、微服务之间的区别-copy的更多相关文章
- SOA和微服务之间的区别
近几年,我们有很多文章对SOA和微服务之间的不同点和相似点进行了分析.有些人认为SOA有很多地方是值得微服务学习的,而有些人则认为区别对待微服务和SOA会更好.而Neal Ford认为,将单体迁移到面 ...
- 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别(转载)
转载来源:https://youzhixueyuan.com/the-difference-between-restful-soap-rpc-soa-and-micro-service.html 内容 ...
- Restful、SOAP、RPC、SOA、微服务之间的区别
什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务. 主要的设计原则: 资源与URI ...
- 应用架构的演进--MVC,RPC,SOA,微服务架构
MVC架构:垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率. 当业务规模很小时,将所有功能都部署在同一个进程中,通过双机或者前置负载均衡 ...
- MVC RPC SOA 和微服务架构的区别
MVC RPC SOA 微服务架构的区别 单体架构 MVC(Model View Controller) M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使 ...
- 通俗地理解面向服务的架构(SOA)以及微服务之间的关系
SOA是一种软件的应用架构方法,它基于面向对象,但又不是面向对象,整体上是面向服务的架构.SOA由精确的服务定义.松散的构件服务组成,以及业务流程调用等多个方面形成的一整套架构方法. 这话是不是听起来 ...
- 面试官灵魂三问:什么是SOA?什么是微服务?SOA和微服务有什么区别?
SOA SOA(Service-Oriented Architecture,面向服务的架构)是一种高层级的架构设计理念,可通过在网络上使用基于通用通信语言的服务接口,让软件组件可重复使用. 那么什么是 ...
- atititi.soa 微服务 区别 联系 优缺点.doc
atititi.soa 微服务 区别 联系 优缺点.doc 1. 应用微服务的动机,跟传统巨石应用的比较1 2. 面向服务架构(SOA) esb2 3. 微服务架构(Microservices)2 ...
- SOA & 微服务
参考文档: https://www.cnblogs.com/renzhitian/p/6853289.htmlhttp://www.jdon.com/soa.htmlhttps://www.ibm.c ...
- SOA和微服务架构的区别?
转自知乎:https://www.zhihu.com/question/37808426/answer/93335393 SOA和微服务架构的区别? 微服务架构强调的第一个重点就是业务系统需要彻底的组 ...
随机推荐
- .NET云原生应用实践(五):使用Blazor WebAssembly实现前端页面
本章目标 使用Blazor WebAssembly实现管理"贴纸"页面 集成认证与授权机制 如果你对Blazor WebAssembly的使用不感兴趣,可以跳过本章的阅读.你也可以 ...
- Linux系统压力测试工具(命令行工具)
Linux的命令行压力测试工具在做基准测试时很有用,通过基准测试对了解一个系统所能达到的最大性能指标,这些指标可以作为后续性能比较.优化评估的参考依据. 模拟CPU压力: 可以使用stress命令使C ...
- 【转载】scipy.stats.norm.ppf —— 分位点函数(CDF的逆)(也被用作“标准偏差乘数”)
原文地址: https://www.cnblogs.com/jiangkejie/p/15292260.html scipy.stats.norm.ppf() 分位点函数(CDF的逆)(也被用作&qu ...
- C++面经(持续更新)
一. c,c++区别<九大点> c: 面向过程 c++: 面向对象(封装,继承,多态) 对象:对数据和作用于数据的操作组成的封装实体 类:描叙了一组有相同属性和方法的对象<虚拟> ...
- 国密SSL证书,为政务数据安全保驾护航
随着数字化转型的加速,政务信息化建设已成为提升政府服务效率和质量的关键.近期,国家相关部门发布了<互联网政务应用安全管理规定>,为政务应用的安全管理提供了明确的规范和要求.该规定自2024 ...
- 2个月搞定计算机二级C语言——真题(12)解析
1. 前言 本篇我们讲解2个月搞定计算机二级C语言--真题12 2. 程序填空题 2.1 题目要求 2.2 提供的代码 #include <stdio.h> #define N 3 int ...
- 子/次模 (Submodular)、超模 (Supermodular)和模(Modular)函数
定义 子模 (Submodular).超模 (Supermodular)和模(Modular)函数是组合优化中用到的集合函数概念.函数定义域为某个有限集$\Omega$的幂集$2^\Omega$,值域 ...
- python系统模块之re
正则模块re: 元字符: 字符 描述 . 除换行符外的任意字符 \ 转义字符 [...] 字符集合,匹配任务其中一个 \d 数字:[0-9] \D 非数字:[^\d] \w 单词字符[A-Za-z0- ...
- Ansible 运维自动化
Ansible 概述Ansbile是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,列如持续部署,滚动更新.Ansible 适用于管理企业IT基础设施,从具有少数主机的小规模到数 ...
- windows电脑在线生成ios p12证书工具和生成教程
使用hbuilderx开发ios APP的时候,打包APP提示需要IOS的打包证书 而hbuilderx本身是不能生成证书的,因为生成证书需要在苹果开发者中心生成.而在苹果开发者中心生成证书的时候,提 ...