什么是SOA架构?和RPC框架之间的联系?

SOA(Service OrientedAmbiguity)即 面向服务架构

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

上面是百度百科上关于SOA的详细定义

简单来说:SOA是让项目开发更有效率的组件模型,通过面向服务的方式实现

那么,如何理解面向服务呢,下面举一个通俗的例子:

例如,一个大型项目,分了多个小项目,其中一些小项目需要用到数据库中的数据

此时的项目大体架构可能如下:

在这里插入图片描述

但这种架构可能存在的两个问题:

1.子项目直接访问数据库,有安全性问题

2.数据访问层可能出现代码冗余

上述两个问题,使用SOA架构就可以解决:

提供一个专门访问DB的服务,让其它所有单元都调用这个服务,改进后架构如下

在这里插入图片描述

可以看到SOA架构在这个情景中的两个特点:

1.提供了一个专门访问数据库的服务

2 开发时实现了数据访问控制和代码复用

SOA的关键点之一在于服务,在实现SOA时,常用的服务有:Dubbo,WebService,Dubbox

为了保证这些服务的安全性,它们一般都要遵循RPC

RPC: (Remote Procedure Call) 远程过程调用

RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

例如:A,B项目中都维护了一个<方法,call_id>的映射列表,具体方法在B项目中,A需要调用B项目的一个方法

具体调用过程:

1.A项目查表得到Call_ID,并将参数和这个call_id转化为字节流发送给B项目中,也叫序列化

2.B项目将收到的字节流反序列化为自已能读取的格式,调用相应方法,将返回值返回给A

3.A以同样的方式获取返回值

以上就是RPC框架时方法调用的大致流程

由于A调用B的方法时,仅通过列表发送对应数据给B,并不知道B中方法的具体实现,方法的执行过程在B项目中

所以RPC架构有个最大的特点就是:保证了数据的安全性

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值