Janus API Gateway

为什么80%的码农都做不了架构师?>>>   hot3.png

介绍

        最近一段时间一直在寻找合适的API Gateway,先后折腾过Kong,Orange、ABTestingGateway,外加各种nginx+lua扩展的简易API Gateway,前几天听到了janus,一个用golang编写的简单gateway系统。那就再探索一番。

        官方地址:janus

特性

没有依赖问题 - 单二进制的编译包
REST API - 完全程序化访问内部结构,可以轻松地从系统中管理API用户,密钥和API配置
速率限制 - 轻松地限制您的API用户的速率限制,速率限制是细粒度的,可以在每个密钥的基础上应用
CORS过滤器 - 为您的API启用cors,甚至启用特定端点
API版本控制 - API版本可以在特定时间和日期轻松设置和弃用
多个身份验证协议 - 开箱即用,我们支持JWT,OAuth 2.0和基本身份验证访问方法
热配置重新加载 - 无需重新启动过程
正常关闭 - 正常关闭http连接

        ps:上面是官方说的特性,第一条就不爽,竟然依赖mongodb,果断差评。其次,没有配置文件,而是通过加载环境变量来加载配置。最后,文档少的可怜,几乎没有。

安装

    mongodb安装

        添加repo

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

        安装mongodb

yum clean all
yum makecache
yum install mongodb-org-server mongodb-org-shell mongodb-org-tools -y
/etc/init.d/mongod start

    janus部署

        下载二进制包

cd /opt/programs/janus
wget 'https://github-cloud.s3.amazonaws.com/releases/63067788/1e5ea24c-0259-11e7-8b63-0fcbe6642db1.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20170313%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20170313T065646Z&X-Amz-Expires=300&X-Amz-Signature=ac0572693aac1089bef53d2d5dde1969c9f87681d39b98f8c7fe5d4e1dc79abc&X-Amz-SignedHeaders=host&actor_id=12913767&response-content-disposition=attachment%3B%20filename%3Dlinux_amd64.tar.gz&response-content-type=application%2Foctet-stream'

        设置启动文件

cd /opt/programs/janus
cat > config
export DATABASE_DSN="mongodb://172.31.68.244:27017/janus"
export SECRET="123456"
export ADMIN_USERNAME="admin"
export ADMIN_PASSWORD="admin"
cd /opt/programs/janus
./janus
EOF
chmod 755 config

        启动janus

配置janus

    获取token

http  --json POST http://172.31.68.244:8080/login username=admin password=admin

            ps:http是httpie软件包里面的命令,一个pyhton写的客户端,返回json格式的数据,看起来可读性更高一些,pip install httpie即可

    api.json

{
    "name": "My First Proxy",
    "slug": "my_first_proxy",
    "active": true,
    "allowed_ips": [],
    "domain": "",
    "proxy": {
        "check_host_against_uptime_tests": false,
        "enable_load_balancing": false,
        "listen_path": "/guol/*g",
        "methods": [
            "GET"
        ],
        "preserve_host_header": false,
        "strip_listen_path": true,
        "append_listen_path": false,
        "target_list": [],
        "target_url": "https://my.oschina.net/guol/blog"
    },
    "rate_limit": {
        "enabled": true,
        "limit": "10-S"
    },
    "use_basic_auth": false,
    "use_oauth2": false,
    "use_compression": true,
    "cors_meta": {
        "domains": [
            "*"
        ],
        "enabled": true,
        "exposed_headers": [
            "X-Debug-Token",
            "X-Debug-Token-Link"
        ],
        "methods": [
            "GET",
            "POST",
            "PUT",
            "PATCH",
            "DELETE"
        ],
        "request_headers": [
            "Origin",
            "Authorization",
            "Content-Type"
        ]
    }
}

    创建api

http  POST http://172.31.68.244:8080/apis "Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0ODk0MDA1NDMsImlhdCI6MTQ4OTM5Njk0MywiaWQiOiJhZG1pbiJ9.9_XlLUpGL7cGfc2M-03xkh79_ESaLCtSLH-HEPB5_K0" "Content-Type: application/json" < /opt/programs/janus/api.json

Janus API Gateway_第1张图片

测试

http  http://172.31.68.244:8080/guol/blog

Janus API Gateway_第2张图片

 

转载于:https://my.oschina.net/guol/blog/857759

你可能感兴趣的:(Janus API Gateway)