Skip to content

Commit

Permalink
feature: 高性能Polaris网关项目-通用模型-第09节
Browse files Browse the repository at this point in the history
  • Loading branch information
binghe001 committed Sep 29, 2024
1 parent ef8cf0f commit 1147207
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 18 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@
* [《高性能Polaris网关》通用模型-第06节:网关配置规则模型实现类设计](https://articles.zsxq.com/id_fnpiq7jtk9oj.html)
* [《高性能Polaris网关》通用模型-第07节:服务定义与实例模型实现类设计](https://articles.zsxq.com/id_pj75f0kbekoi.html)
* [《高性能Polaris网关》通用模型-第08节:服务配置缓存接口与实现类模型设计](https://articles.zsxq.com/id_c6amcv1qjks8.html)
* [《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口设计](https://articles.zsxq.com/id_uagjqbe799kd.html)
* [《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口与抽象类设计](https://articles.zsxq.com/id_uagjqbe799kd.html)

### 💥 分布式IM即时通讯系统

Expand Down
2 changes: 1 addition & 1 deletion docs/md/all/all.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ title: 冰河指南
* [《高性能Polaris网关》通用模型-第06节:网关配置规则模型实现类设计](https://articles.zsxq.com/id_fnpiq7jtk9oj.html)
* [《高性能Polaris网关》通用模型-第07节:服务定义与实例模型实现类设计](https://articles.zsxq.com/id_pj75f0kbekoi.html)
* [《高性能Polaris网关》通用模型-第08节:服务配置缓存接口与实现类模型设计](https://articles.zsxq.com/id_c6amcv1qjks8.html)
* [《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口设计](https://articles.zsxq.com/id_uagjqbe799kd.html)
* [《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口与抽象类设计](https://articles.zsxq.com/id_uagjqbe799kd.html)

### 💥 分布式IM即时通讯系统

Expand Down
2 changes: 1 addition & 1 deletion docs/md/other/guide-to-reading.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ title: 冰河指南
* [《高性能Polaris网关》通用模型-第06节:网关配置规则模型实现类设计](https://articles.zsxq.com/id_fnpiq7jtk9oj.html)
* [《高性能Polaris网关》通用模型-第07节:服务定义与实例模型实现类设计](https://articles.zsxq.com/id_pj75f0kbekoi.html)
* [《高性能Polaris网关》通用模型-第08节:服务配置缓存接口与实现类模型设计](https://articles.zsxq.com/id_c6amcv1qjks8.html)
* [《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口设计](https://articles.zsxq.com/id_uagjqbe799kd.html)
* [《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口与抽象类设计](https://articles.zsxq.com/id_uagjqbe799kd.html)

### 💥 分布式IM即时通讯系统

Expand Down
32 changes: 17 additions & 15 deletions docs/md/project/gateway/model/2024-09-29-chapter09.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: 第09节:网关上下文属性顶层接口设计
title: 第09节:网关上下文属性顶层接口与抽象类设计
pay: https://articles.zsxq.com/id_uagjqbe799kd.html
---

# 《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口设计
# 《高性能Polaris网关》通用模型-第09节:网关上下文属性顶层接口与抽象类设计

作者:冰河
<br/>星球:[http://m6z.cn/6aeFbs](http://m6z.cn/6aeFbs)
Expand All @@ -14,45 +14,47 @@ pay: https://articles.zsxq.com/id_uagjqbe799kd.html
> 沉淀,成长,突破,帮助他人,成就自我。
* 本章难度:★★☆☆☆
* 本节重点:对高性能Polaris网关的上下文属性的顶层接口进行设计,从全局角度掌握高性能Polaris网关上下文属性顶层接口的设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
* 本节重点:对高性能Polaris网关的上下文属性的顶层接口和抽象类进行设计,从全局角度掌握高性能Polaris网关上下文属性顶层接口和抽象类的设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

**大家好,我是冰河~~**

在网关的整体设计中,上下文可以说是网关的重要组成部分,通过上下文,可以获取到网关在处理请求和响应时的各种状态,也能够获取和透传各种数据。在设计网关的上下文中,为了更好的提升网关的可扩展性。在上下文的整体设计中,单独对上下文的属性进行了详细的设计。

## 一、前言

在前面的文章中,已经对高性能Polaris网关的请求与响应模型的顶层接口和实现进行了设计,对调用链路的顶层接口与抽象类模型进行了设计和实现,随后,又对网关服务的定义与实例模型和服务配置的缓存接口与实现类进行了设计。接下来,从网关上下文的角度,对网关上下文的顶层接口进行设计
在前面的文章中,已经对高性能Polaris网关的请求与响应模型的顶层接口和实现进行了设计,对调用链路的顶层接口与抽象类模型进行了设计和实现,随后,又对网关服务的定义与实例模型和服务配置的缓存接口与实现类进行了设计。接下来,从网关上下文的角度,对网关上下文的顶层接口和抽象类进行设计

## 二、本节诉求

对高性能Polaris网关的上下文属性的顶层接口进行设计,从全局角度掌握高性能Polaris网关上下文属性顶层接口的设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
对高性能Polaris网关的上下文属性的顶层接口和抽象类进行设计,从全局角度掌握高性能Polaris网关上下文属性顶层接口和抽象类的设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

## 三、类结构设计

为了在保证网关高性能的同时,进一步提升网关的可扩展性,对网关的上下文属性进行设计。上下文属性的顶层接口如图9-1所示。
为了在保证网关高性能的同时,进一步提升网关的可扩展性,对网关的上下文属性进行设计。上下文属性的顶层接口和抽象类的类图如图9-1所示。

<div align="center">
<img src="https://binghe.gitcode.host/images/project/gateway/2024-09-29-001.png?raw=true" width="70%">
<br/>
</div>

在网关的属性接口设计上,主要设计了PolarisKey和AttributeKey两个接口,其中,PolarisKey是顶层接口,AttributeKey是PoalrisKey的子接口。两个接口中定义的方法含义如下所示。
在网关的属性接口设计上,主要设计了PolarisKey接口和AttributeKey抽象类,其中,PolarisKey是顶层接口,AttributeKey是实现了PolarisKey的抽象类。两个接口中定义的方法含义如下所示。

**(1)PolarisKey接口**

* cast()方法:将Object类型的对象转换成指定的泛型类型。

**(2)AttributeKey接口**
**(2)AttributeKey抽象类**

* valueOf()方法:根据转入的名称返回AttributeKey对象。
* create(final Class<? super T> valueClass)方法:创建AttributeKey对象。
* getHttpInvoker()方法:获取HttpInvoker对象。
* getRpcInvoker()方法:获取RpcInvoker对象。
* getWebSocketInvoker()方法:获取WebSocketInvoker对象。
* getMatchInstances()方法:获取匹配到的所有服务实例列表。
* getLoadInstance()方法:获取负载均衡后的服务实例。
* getAttachment()方法:获取透传的参数。
* NAMED_ATTRIBUTE常量:存储自定义名称与AttributeKey的映射关系。
* HTTP_INVOKER常量:与HttpInvoker对象对应的AttributeKey属性。
* RPC_INVOKER常量:与RpcInvoker对象对应的AttributeKey属性。
* WEBSOCKET_INVOKER常量:与WebSocketInvoker对象对应的AttributeKey属性。
* MATCH_INSTANCES常量:缓存匹配到的所有服务实例列表,主要用于负载均衡。
* LOAD_INSTANCE常量:通过负载均衡后获取到的服务实例
* ATTACHMENT常量:获取透传的参数。
* create()方法:创建AttributeKey<T>方法。
* getAttributeKey()方法:获取指定名称的AttributeKey对象。

## 四、编码实现

Expand Down

0 comments on commit 1147207

Please sign in to comment.