201 微服务-服务发布和引用

发布服务指服务端发布一个可供客户端调用的服务。

引用服务指客户端调用服务端提供的服务。

目前常用的方式有REST API和RPC两种。

REST

定义

REST指的的是一组架构约束条件和原则,它有以下几个特点:

  • 无状态。从客户端到服务端的每个请求,都必须包含服务端理解请求所必须的所有信息,服务端节点与客户端节点之间不存在强关联。这一点非常契合微服务的特性。
  • 资源。任何事物都可以被抽象为资源,通过URI获取资源的唯一标识。
  • PUT/POST/GET/DELETE。通过以上四个方法操作资源,可以简单对应到CRUD上。不过PUT与POST存在一些区别,POST可以更新或者创建资源,是非幂等的。PUT用于向指定URI传送更新资源,是幂等的。

实现

REST通常采用HTTP/HTTPS方式通信,序列化方式采用JSON。

RPC

定义

RPC全称Remote Procedure Call,远程过程调用,是一种通信协议。该协议允许一台计算机上的程序远程调用另一台计算机的程序。

例如,A,B两个应用分别部署在两台服务器上,A应用可以通过RPC协议调用B应用中定义的某个方法函数,并得到返回结果。

实现

在Java中,RPC可以基于Socket + 动态代理实现,参考例子: https://m.toutiaocdn.com/i6662851070147953166/?iid=64551540091&app=news_article&timestamp=1551399792&group_id=6662851070147953166&wxshare_count=2&pbid=6663211399970784776

REST与RPC的对比

  REST RPC
耦合性 松耦合 强耦合
消息类型 JSON/XML 二进制数据
协议类型 HTTP TCP
性能 比RPC差 比REST高
对外开放 直接可开放 需要转换REST
上篇201 微服务-服务调用
下篇502 Maven-外部依赖