美文网首页
通信:远程过程调用(RPI)

通信:远程过程调用(RPI)

作者: scheshan | 来源:发表于2018-08-28 10:10 被阅读0次

背景

你已经使用了微服务架构。服务需要处理来自应用客户端的请求。将来,服务有时必须协作起来处理这些请求。他们必须采用一种内部通信协议。

限制

解决方案

使用RPI来进行内部服务通信。客户端采用以请求 / 回复为基础的协议请求其他服务。

示例

有一些RPI技术的例子:

微服务示例程序里的RegistrationServiceProxy是用Scala语言写的一个例子,它用Spring框架的RestTemplate发起REST请求。

@Component
class RegistrationServiceProxy @Autowired()(restTemplate: RestTemplate) extends RegistrationService {

  @Value("${user_registration_url}")
  var userRegistrationUrl: String = _

  @HystrixCommand(commandProperties=Array(new HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds", value="800")))
  override def registerUser(emailAddress: String, password: String): Either[RegistrationError, String] = {
    try {
      val response = restTemplate.postForEntity(userRegistrationUrl,
        RegistrationBackendRequest(emailAddress, password),
        classOf[RegistrationBackendResponse])
      response.getStatusCode match {
        case HttpStatus.OK =>
          Right(response.getBody.id)
      }
    } catch {
      case e: HttpClientErrorException if e.getStatusCode == HttpStatus.CONFLICT =>
        Left(DuplicateRegistrationError)
    }
  }
}

user_registration_url的值通过外部配置提供

结果

这个模式有以下优势:

  • 简单,也被大家熟悉
  • 请求 / 回复机制很简单
  • 由于没有中间件,系统更简单

这个模式有以下弊端:

  • 通常仅仅支持请求 / 回复机制,而不支持其他交互模式,比如通知,请求 / 异步响应,发布 / 订阅,发布 / 异步响应
  • 由于客户端和服务在交互过程中必须可用,因此降低了整体可用性

这个模式有以下问题:

  • 客户端必须发现服务实例的地址

相关模式

相关文章

  • 通信:远程过程调用(RPI)

    背景 你已经使用了微服务架构。服务需要处理来自应用客户端的请求。将来,服务有时必须协作起来处理这些请求。他们必须采...

  • 详解RPC远程调用和消息队列MQ的区别

    PC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信...

  • Dubbo

    架构技术 RPC: Remote Procedure Call 远程过程调用解决进程之间的通信方式, Dubbo ...

  • 分布式实现: dubbo+zookeeper

    分布式 Dubbo + Zookeeper + SpringBoot RPC: 指远程过程调用, 是一种进程间通信...

  • 如何从0到1设计一个类Dubbo的RPC框架

    RPC和RPC框架 1.RPC(Remote Procedure Call) 即远程过程调用, 主要解决远程通信间...

  • RPC框架底层原理

    1.RPC框架的概念 RPC (Remote Procedure Call) - 远程过程调用,通过网络通信调用不...

  • 分布式相关名词

    RPC RPC (Remote Procedure Call),远程过程调用。是一种进程间通信技术,允许程序像调用...

  • 2019-01-26Yar实现RPC

    用Yar扩展实现RPC RPC (Remote Procedure Call),远程过程调用。是一种进程间通信技术...

  • 技术缩写收录

    rpc(remote procedure call)远程过程调用 。两个项目之间通过网络通信的标准,google实...

  • Hadoop RPC 工作机制

    网络通信模块是分布式系统的底层基础,支撑上层分布式环境下复杂的进程间通信。远程过程调用(RPC,Remote Pr...

网友评论

      本文标题:通信:远程过程调用(RPI)

      本文链接:https://www.haomeiwen.com/subject/pletwftx.html