优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。
连载第四十四期
《现场定制:定制第三方接口接入》
▽
# 第三方接口接入
通过定制 provider 来对接第三方接口,有 2 种调用方案:
1.直接调用第三方接口 url,但这里会有跨域的问题,需要第三方接口开放跨域访问
2.将第三方接口注册到优维的 api_gateway,这样不会有跨域的问题,同时还提供了:
- 后端 api 不需要直接暴露给浏览器,避免安全问题
- 名字服务路由能力,避免单点和 hardcode ip
- 当前登录用户传递
# api_gateway 配置
首先,这要说明下部署架构,如下图所示:
api_gateway 提供了统一的转发请求服务(如果是集群部署,则在对外服务的逻辑机器上,一般有 2 台或 3 台)
cd /usr/local/easyops/api_gateway/
vim conf/conf.default.yaml
你将能看到如下配置:
gateway:
services:
- name: cmdb.* # 匹配 uri 的前缀
addr_type: ens # ens|direct, direct 表示不走 ens 解析,直接配置目标地址,不填时默认为 ens
service_name: logic.cmdb.resource
hostname: cmdb_resource.easyops-only.com
default_policy: allow # allow|deny
conf.default.yaml 为默认配置,如果需要现场修改,请在 conf.yaml(如果没有,则新建)做个性化修改,实际配置将会合并两者
vim conf/conf.yaml
将如下内容添加到 conf.yaml 里面
gateway:
services:
# 添加如下配置,将匹配浏览器调用的 uri:/api/gateway/your-api-prefix.xxx/aa/bb/
- name: your-api-prefix.* # 匹配 uri 的前缀
addr_type: ens
service_name: logic.your-api-service-name
hostname: your-api-host-name
default_policy: allow # allow|deny
随后注册 service_name:
/usr/local/easyops/ens_client/tools/register_service.py logic.your-api-service-name api-port api-ip
可注册多个实例,注册多个则在调用时候为轮询策略
[root@monitor_10_0_5_10 api_gateway]# /usr/local/easyops/ens_client/tools/register_service.py logic.your-api-service-name 8000 192.168.100.89
try register service(logic.your-api-service-name, 8000) at (127.0.0.1:9100)
register service(logic.your-api-service-name, 8000) success!
[root@monitor_10_0_5_10 api_gateway]# /usr/local/easyops/ens_client/tools/get_all_service.py logic.your-api-service-name
23377279359414395 192.168.100.89 8000
如果想查看当前注册的所有名字服务,请在浏览器手动输入
http://your-easyops-console-host/admin/ens 查看列表
有疑问加站长微信联系(非本文作者)