微服务中的网关

Posted alangur

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务中的网关相关的知识,希望对你有一定的参考价值。

什么是网关

  简单点说网关是一个Api服务器,是系统的唯一入口。为每个客户端提供一个定制的Restful API。同时它还需要具有一些业务之外的责任:鉴权。静态响应等处理。

为什么需要gateway

  我们知道我们要进入一个服务本身,并不是一件容易的事情。服务本身有自己的通讯协议,这种协议往往不能很好的兼容各个客户端的需求,所以我们只能寻找一种公共协议:http。所以网关的概念就诞生了。如图:

  技术图片

gateway的作用

  所以网关的最主要在作用就是路由的转发 。但是 在我们平时的使用过程中,直接请求http 协议的 api 会存在很多问题。例如:安全问题,流量问题  等等。所以gateway 还需要做一些额外的 事情来保证我们的流程是安全的、可靠的。

使用网关

  现在已经出现了很多网关的产品:比如 Ocelot ,zuul ,Spring Cloud Gateway,kong 等等

  今天我们要 介绍的网关就是  kong

kong 在docker中的部署

创建一个kong的网络

  docker network create kong-net

创建数据库 pgsql  

docker run -d --name kong-database --network=kong-net  -p 5432:5432  -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong"  -e "POSTGRES_PASSWORD=qwe123QWE"  postgres:9.6

 数据迁移  

docker run --rm       --network=kong-net       -e "KONG_DATABASE=postgres"       -e "KONG_PG_HOST=kong-database"       -e "KONG_PG_PASSWORD=qwe123QWE"       -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"       kong:latest kong migrations bootstrap

启动kong  

docker run -d --name kong 
   --network=kong-net
  -e "KONG_DATABASE=postgres"
  -e "KONG_PG_HOST=kong-database"
  -e "KONG_PG_PASSWORD=qwe123QWE"
  -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"
  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout"
  -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout"
  -e "KONG_PROXY_ERROR_LOG=/dev/stderr"
  -e "KONG_ADMIN_ERROR_LOG=/dev/stderr"
  -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl"
  -p 8000:8000
  -p 8443:8443
  -p 8001:8001
  -p 8444:8444
  kong

浏览器输入:http:kongip:8001,会出现json字符,表示成功

安装konga

数据迁移

docker run --network=kong-net --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:qwe123QWE@kong-database:5432/konga

启动konga

docker run 
-p 1337:1337
--network kong-net
--name konga
-e "NODE_ENV=production"
-e "DB_ADAPTER=postgres"
-e "DB_URI=postgresql://kong:qwe123QWE@kong-database:5432/konga"
pantsel/konga

创建链接的Admin URL地址可以使用kong创建的网络。例如:http://kong:8001

 如图:

技术图片

 然后可以自行编辑自己的 serevices 与service对应的route  访问:http:kongip:8000/路由  就可以访问你的  api啦

最后安利一波

ketchup 是一个微服务框架  它集成了网关kong,通过简单的配置,可以自行注册到kong的网关中,大大减少了开发的时间。

源码地址:https://github.com/simple-gr/ketchup

操作文档  请见:https://github.com/simple-gr/ketchup/wiki/%E7%BD%91%E5%85%B3

qq 交流群:592407137

 

以上是关于微服务中的网关的主要内容,如果未能解决你的问题,请参考以下文章

微服务中的网关

SpringCloud微服务安全网关安全 3-1 概述

API网关在微服务架构中的应用

JHipster - 如何在 Eclipse 中仅调试微服务架构中的一个网关(或微服务)?

微服务中的网关

谈谈微服务设计中的API网关模式