2020-06-11

微服务中的网关

微服务中的网关


什么是网关

  简单点说网关是一个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创建的网络。例如 src="https://img2020.cnblogs.com/blog/816287/202006/816287-20200610120559425-71997252.png" alt="" loading="lazy">

 然后可以自行编辑自己的 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

 


No comments:

Post a Comment