大数跨境
0
0

百万级网关层设计我们需要知道哪些

百万级网关层设计我们需要知道哪些 二进制跳动
2020-08-16
2
导读:百万级网关层设计实践

服务架构的网关层好比护城墙的性质,主要的作用就是阻拦和过滤掉一些本不能直接进入的请求或者攻击。

一般网关层的作用是:

  1. 请求的鉴权

    .比如发布商品,登录鉴权

  2. 数据完整性的检查

    .数据包定长header+body的变化

  3. 协议的转换

    .JOSN----->HashMap(String,Object)

  4. 路由的转发

    .根据URI转发到不同的业务逻辑层

  5. 服务治理

    .限流、降级、熔断等


网关层的架构以及定位基本都是按如下的架构图设计:


那如果我们需要打造高性能的分布式网关,实现HTTP请求转RPC服务,接口权限教验,反作弊拦截等相关功能,需要击破哪些技术壁垒呢?


关键字                                                                  对应方案

高性能                                                                  无状态设计

鉴权功能                                                               过滤器责任链

路由功能                                                               反作弊设计

简单的反作弊                                                        路由方案设计


整体架构

.基于springboot

.不做业务逻辑处理,维持高性能

.缓存设计

.异步线程设计


自研网关各个击破--跨域


• CORS(Cross-Origin Resources Sharing)解决跨域问题 

• 对HTTP 请求头进行豁免的一个策略

• 建立豁免清单 

• Access-Control-Allow-Origin 

• Access-Control-Allow-Credentials 

• 是否允许cookie跨域 

• Access-Control-Allow-Methods 

• 允许提交请求的方法


自研网关各个击破--Session

• Session 绑定 

• 将 uid hash到固定的节点


• Session 复制

• 优点: 

• 每台机器存储全量的Session

• 做到了高可用

• 缺点:

• 集群同步复杂 

• 适应于小规模网关 

• 数据存储不合理,内存开销大


• Session 共享

• 使用缓存服务Redis,统一存储Session

• 优点: 

• 网关层无状态

• 缓存服务本身高可用

• 缺点: 

• 多一次服务调用IO


• Session客户端缓存

• 优点:

• 简单高性能

• 接入层无状态

• 缺点: 

• 依赖客户端Cookie存储


sessiion生成算法

• Session包含的信息字段,和各个公司业务强相关 

• deviceId、clientType、uid、ts
• AES 加密方案

• 加解密过程都在服务端

• 网关高性能 

• 本地算法 + 远程校验


自研网关各个击破--反作弊

• 业务维度 

    • 爬虫 

    • 恶意攻击 

• 技术解决 -- 黑名单 

    • IP 

    • deviceId 

    • uid 

• 特点 

    • 读多写少

    • 命中率低


自研网关各个击破--路由

1.核心实现URL 对 服务的映射

2. RPC 通过反射实现远程调用


• 协议约定 

• 网关和前端协议Json 

• 网关层RPC调用入参统一Map<String, String> 

• 数据返回统一Result对象{code, data, msg}



















【声明】内容源于网络
0
0
二进制跳动
15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
内容 739
粉丝 0
二进制跳动 15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
总阅读78
粉丝0
内容739