微服务网关方案调研

综述

经调研,使用Spring Cloud Zuul解决方案的占多数,已经能满足绝大多数公司需求。但除了一些超级公司外,比如阿里,京东,他们是自己撸的一套网关。此外,点评直接采用的nginx负载均衡前置网关,而没用第七层网关,原因据说是七层网关会影响性能,但由于对其架构不甚了解,所以也不得而知。

一 各企业网关调研

1 京东: tomcat sevelet ,基于netty自研

京东商API网关实践

目前大部分服务位于tomcat,但由于tomcat只能同步,所以正在向netty一步步迁移

clipboard.png

2 苏宁: netty

clipboard.png

3 点融:基于zuul定制

基于框架:https://github.com/venus-boot...,saluki is a microservice framework rely on grpc-java,可能是结合Spring cloud的东西做了一些定制化开发,加入比如rpc的一些东西。

saluki gateway是以zuul、saluki、oauth2为基础构建的网关系统,主要功能如下

  1. api限流,利用令牌桶机制进行限流操作
  2. 授权,oauth2进行api的授权
  3. 协议转化,将http的请求转化为grpc的服务请求

saluki框架在Spring Cloud基础上进行了进一步封装,提供了对rpc的支持、用户权限等等

4 美团点评

貌似没有第七层网关,只有nginx+lua,基于tengine定制

clipboard.png

咨询过美团的童鞋,他说网关会增加机器负担,而且有可能成为系统瓶颈。因此将统一的鉴权、日志都打成统一的jar包,让各个微服务自己去做,但具体系统的具体结构不得而知,可能存在一定的合理性,对于日活上亿体量的系统,或许网关确实有可能成为瓶颈,因为加入统一网关意味着机器数量增加一倍,

5 携程:zuul

基于zuul的一套API网关
clipboard.png

6 megaease

还有megaease这家公司,是IT骨灰级程序员兼网红陈皓所创建,他认为一个好的gateway需要具备如下关键技术

  1. 高性能。必须使用高性能的技术,而且需要高性能的语言(比如他所推崇的go)
  2. 抗流量。集群技术
  3. 业务逻辑。要能够支持简单的业务逻辑
  4. 服务化。可以不停机的修改管理配置

所以,他们自己用go开发了一套easegateway
产品说明:http://megaease.com/docs/gate...

其架构说明图如下
clipboard.png

二 常用网关方案

网关(API Gateway)技术选型

  1. zuul
  2. kong
  3. nginx+lua(nginx+openresty )
  4. 自己撸:难度大

网关(API Gateway)的设计要素

  1. 限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则。
  2. 缓存:数据缓存。
  3. 日志:日志记录。
  4. 监控:记录请求响应数据,api耗时分析,性能监控。
  5. 鉴权:权限身份认证。
  6. 灰度:线上灰度部署,可以减小风险。
  7. 路由:路由是API网关很核心的模块功能,此模块实现根据请求,锁定目标微服务并将请求进行转发。

三 基于Zuul的网关设计

Spring Cloud生态中,标准配置是基于Zuul的网关,而且,已经有多加大型互联网公司是基于Zuul来实现,比如携程、点融,所以,我们不妨用Zuul网关来首先搭建网关,已经能满足大部分企业的需求了

四 探索,阿里无线: ACCS网关方案

阿里粑粑当然财大气粗,自己撸一个呗

clipboard.png

clipboard.png

clipboard.png
在线集群用于实时消息,而离线集群用于诸如营销信息推广等允许很高延时等的的请求

clipboard.png
以及两个优化点

clipboard.png

  1. 用ECDH机密代替RSA。带来加密效率的巨大提升,以及SPDY协议
  2. 用类似tcp-fast-open的技术,在握手时直接带数据包

大杂烩
所学甚杂

教育皆祸害,[链接]

2k 声望
221 粉丝
0 条评论
推荐阅读
人工智能/大数据就业前景及优劣势分析
总述 职位少,要求高,人工智能落地困难,决定了就业可能会是一个大问题 全国范围内的人工智能的职位是183 而Java是10000+ (因lagou并不展示总数,因此该数据从请求分析而来) 因此岗位数量与Java大概是60倍的差距...

方老司1阅读 5.6k

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go33阅读 2.4k评论 1

封面图
计算机网络连环炮40问
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬14阅读 1.7k

万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...

JavaGuide8阅读 1.6k

封面图
花了半个小时基于 ChatGPT 搭建了一个微信机器人
相信大家最近被 ChatGPT 刷屏了,其实在差不多一个月前就火过一次,不会那会好像只在程序员的圈子里面火起来了,并没有被大众认知到,不知道最近是因为什么又火起来了,而且这次搞的人尽皆知。

Java极客技术12阅读 3.1k评论 3

封面图
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.2k

如何选择适合你的微服务 API 网关:对比 Kong、APISIX、Tyk、Apigee 和其他网关
API 网关并非一个新兴的概念,在十几年前就已经存在了,它的作用主要是作为流量的入口,统一的处理和业务相关的请求,让请求更加安全、快速和准确的得到处理。它有以下传统的功能:

API7_技术团队8阅读 8.6k评论 2

教育皆祸害,[链接]

2k 声望
221 粉丝
宣传栏