FastD 最佳實踐三: 構建API網關

構建完成 API 服務,配置中心以後,架構圖大體以下:sql

咱們爲什麼須要網關

引用 別人 的一句話:數據庫

咱們老是聽到編排這個詞,因此我喜歡這張幻燈片 – 它展現了一個樂隊,而後有個指揮家,下面一堆人(微型服務)演奏本身的樂器。這個指揮家(API網關)能夠以某種方式來協調咱們的架構如何處理請求。ubuntu

咱們須要將業務或服務放置在網關背後,由網關統一處理請求入口,自己由多個入口的處理變成了一個入口,由網關進行統一調度。api

有一個很nice的事情,就是API網關讓咱們的客戶端不用再須要知道和關心模塊的地址(address)了。網關負責來搞這些事情,你只須要知道網關就行了。你能夠去改變實現並且還能夠改變API接口。不過一般來講,你改變接口後,會增長客戶端出問題的風險。架構

還有不少有趣的功能,有興趣的朋友能夠參考:curl

  1. 微服務與API 網關(上): 爲何須要API網關?微服務

  2. 微服務與API 網關(下): Kong能爲咱們作什麼?post

構建

因爲本人使用 ubuntu 虛擬機,因此此處只介紹 ubuntu 下的安裝,其餘安裝方式可參考: kong installationui

安裝 postgresql
sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.6

安裝 postgresql 完成後,初始化數據庫:lua

su postgres
psql
CREATE USER kong; CREATE DATABASE kong OWNER kong;

ctrl + D 退出

安裝 kong
$ sudo apt-get update
$ sudo apt-get install openssl libpcre3 procps perl
$ sudo dpkg -i kong-0.10.3.*.deb
$ kong start

# Kong is running
$ curl 127.0.0.1:8001

這個過程可能會出現: [postgres error] FATAL: password authentication failed for user "kong"

查看 pgsql 配置文件所在位置,由於我是 apt-get install 的,所以,存儲位置在 /etc/postgresql/9.6/

修改 /etc/postgresql/9.6/main/pg_hba.conf 文件,找到IPv4 配置項,約92行,修改

host    all             all             127.0.0.1/32            md5

=>

host    all             all             127.0.0.1/32            trust

從新啓動便可。

$ sudo kong start

整合 FastD API

1. 添加 API 到網關
curl -i -X POST \
  http://127.0.0.1:8001/apis/ \
  --data 'name=example-fastd' \
  --data 'hosts=fastd.com' \
  --data 'upstream_url=http://127.0.0.1:9527'

添加 API Server 到網關,成果會返回 201 狀態嗎表示建立成功 (Created)

2. 檢查 API 狀態

獲取列表: http://127.0.0.1:8001/apis/

發起請求.

curl -i -X GET \
  --url http://127.0.0.1:8000/ \
  --header 'Host: fastd.com'

此時此刻你會發現已經成功使用 kong 對其進行代理,至此以外,已經完成了基本的網關接入。最終架構圖以下:

圖片描述

插件

kong 提供的插件很是豐富,由於也是基於 lua 的,所以你可使用 openresty 對其進行擴展,開發更加貼近業務的應用。

插件文檔: 點擊

更多可看 kong 官方文檔。

相關文章
相關標籤/搜索