# 《高性能Polaris网关》通用模型-第01节:请求与响应模型的顶层接口设计

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本节重点:对高性能Polaris网关的顶层数据模型接口进行设计,主要涵盖请求Polaris网关与Polaris网关响应结果的顶层模型接口,从全局角度掌握高性能Polaris网关接收请求与响应结果的核心数据模型。重点掌握通用交互模型的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

大家好,我是冰河~~

数据交互模型是数据在网络中传输的重要基础模型,无论是我们之前带着大家完成的《手写高性能RPC (opens new window)》、《分布式Seckill秒杀系统 (opens new window)》、《分布式IM即时通讯系统 (opens new window)》、《高并发设计模式 (opens new window)》,还是最近完结的《高性能通用熔断组件 (opens new window)》,都是对数据的交互模型进行了深入分析和设计。可以这么说,设计好数据模型,不仅对数据在网络中传输起着至关重要的作用,同时还规范了数据在客户端与服务端和服务端各系统之间的数据交互规范。

# 一、前言

高性能Polaris网关具备良好性能的重要原因之一就是对数据的交互模型进行了精心的设计和实现,与以往的项目不同的是,高性能Polaris网关从数据交互模型层面就是面向接口编程。一方面在不影响网关性能的前提下,尽最大程度满足网关的可扩展性与灵活性。

# 二、本节诉求

对高性能Polaris网关的顶层数据模型接口进行设计,主要涵盖请求Polaris网关与Polaris网关响应结果的顶层模型接口,从全局角度掌握高性能Polaris网关接收请求与响应结果的核心数据模型。重点掌握通用交互模型的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

# 三、请求响应模型梳理

在总体架构篇章的《第01节:高性能Polaris网关总体方案目标与架构设计 (opens new window)》中,我们提到过,网关会从队列缓冲区中获取如下数据。

  • 获取request、response和上下文关键属性
  • 获取服务资源、服务资源实例、网关规则、配置参数等

将获取到的数据封装到请求的上下文中,随后执行核心逻辑。这里非常重要的一点就是request和response,也就是请求和响应。请求和响应是网关需要具备的最基础的能力,接收客户端请求、转发请求到后端服务、接收后端服务的响应结果,将结果响应给客户端。在整个数据交互的过程中,需要对请求与响应的数据模型进行设计,以满足高性能Polaris网关兼具性能和扩展性的需求。

对于请求数据模型来说,高性能Polaris网关主要支持HTTP请求、RPC请求和WebSocket请求,由于每种请求的协议不同,涉及到的核心参数不同,例如,HTTP请求要考虑请求主机、请求路径、请求头、请求体、查询参数、表单参数、Cookie等等,RPC请求要考虑服务注册地址、调用哪个接口的哪个方法、参数类型和参数值、调用方法是否需要超时、超时时间是多少、方法的版本号等等。所以,对于请求来说,每种不同协议的请求需要我们单独定义对应的接口来规范这些请求的行为。

与请求相比的话,响应的数据模型就简单的多了,无论是使用哪种协议请求网关,都可以将响应的结果数据封装成统一的数据模型,统一数据模型为了兼容响应各种协议的数据,可以包含:响应头、扩展响应头、状态码、响应对象、响应内容等等信息。

# 四、顶层接口设计

对数据模型的顶层接口设计主要包括对请求数据模型的顶层接口设计和对响应数据模型的顶层接口设计。

# 4.1 请求模型顶层接口设计

请求模型顶层接口设计如图1-1所示。


# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码