api gateway我爱编程

网关gateway选型

2018-05-06  本文已影响106人  haishuiaa

1. 需求分析

​ 无论是单体应用,SOA和微服务框架下,网关的存在是很必要。网关作为一个内网开发的入口。一些公共服务的建设,可以在网关层处理。

我们的网关需要满足的功能:

2. 需求设计

[图片上传失败...(image-6d9ec1-1525610508767)]3. 实现demo

3.1. 第一版本

第一版本,使用nodejs代码自研实现,满足跨域请求,路由转发和请求鉴权,其他功能未完成。

实现思路:代码层实现路由的转发,通过消息的解析再封装实现,鉴权使用jwt实现。自研的确定是所有的需求都需要开发,目前阶段不能快速完成迭代,响应需求慢。

3.2. 第二版本

选择开源组件kong作为前后端的网关

3.2.1. 安装

使用docker安装

3.2.2. 使用

3.2.3. 多服务版本分流(适用于金丝雀发布)

3.3. 第三版本

​ 使用spring cloud实现gateway,鉴于现有开发人员技能,建议使用Kong+spring cloud实现网关,包括自定义过滤等功能。

3.3.1. 注册中心

spring cloud的网关需要配合注册中心使用,网关自动发现服务,这里介绍两个网关:consul和eureka,建议使用consul,支持跨语言

3.3..1.1. Eureka

注册中心需要有服务端和客户端,eureka注册中心使用spring boot代码开发启动即可

3.3.1.2. consul

3.3.2. 网关

3.3.2.1. Eureka实现gateway

​ 网关也需要注册到eureka服务端,来发现服务。网关使用spring zuul实现,屏蔽eureka和consul底层,属于通用用法

[图片上传失败...(image-2943fc-1525610508767)]

[图片上传失败...(image-f2b459-1525610508767)]

[图片上传失败...(image-e50653-1525610508767)]

访问127.0.0.1:8888/eureka-client/test/greeting

[图片上传失败...(image-6cac4-1525610508767)]

3.3.2.2. consul实现gateway

[图片上传失败...(image-3c617d-1525610508767)]

[图片上传失败...(image-87857c-1525610508767)]

[图片上传失败...(image-9bbbed-1525610508767)]

访问http://127.0.0.1:8888/test/greeting

[图片上传失败...(image-e383b8-1525610508767)]

上一篇 下一篇

猜你喜欢

热点阅读