DJI(大疆创新)http api服务网关

DJI(大疆创新)http服务网关系统是用于对http服务进行治理的系统,支撑微服务的落地和开放平台open api的接入。支持跨多机房的服务路由,通过该系统可以对调用方进行身份认证、服务授权&鉴权、服务流控、服务降级、调用度量数据统计分析、服务依赖视图等。

整个系统架构如下图,分为三大部分:api网关、网关控制台、度量数据采集分析(这个未在图中体现)。

 

1.api服务网关

api服务网关是一个java web应用,域名:apigw.xxx.com。api服务网关类似企业应用集成中的ESB,为服务调用提供一个统一的访问点,支持服务流控和服务异常情况下的fail-fast。

服务网关实现可采用的技术和组件:

A)mule、camel、servicemix/JBI等中间件

B)nginx+lua脚本、OpenResty

C)spring integration

考虑到代码的维护性和开发技能,没有使用这些技术。

 为了提高性能和并发,全程采用异步方式,上图中的拦截器(过滤器)、servlet(包括servlet异步io)http client均为异步。

2.网关控制台

 网关控制台是一个java web应用,域名apiadmin.xxx.com。提供domain管理、应用管理、服务授权、服务监控、统计和度量数据展示、查看服务全局视图等功能。 

 

服务消费者和服务提供者都要在网关控制台进行应用注册,控制台为每个应用分配应用id(appId唯一)和应用密钥(appSecret)。注册时需要提供的信息:应用名称、应用描述、应用负责人、负责人手机&邮箱。

 

3.服务注册

http服务可用任意语言实现,如ruby、php、java。服务提供者要向服务网关注册其提供的http服务。

服务注册接口urlhttp://apigw.xxx.com/registry/services,http方法PUT

服务提供者启动后,调用该接口将其服务注册到服务注册中心,服务注册请求http bodyjson字符串,格式如下:

{“appId”:”${appId}”,

“httpServices”: {“endpoint”:[“http://${ip}:${port}?urlPrefixPattern=/xxx”,…],

services”:[ {“resourceName”:”${resourceName}”,

                        “version”:”${version}”

urls”:[{“name”:”${name}”,”url”:”/xxx/xxx”,”method”:”GET”,

”serverTimeout”:${ms}},…

]

},…

  ]

}

}

说明:appId为服务提供者的应用id

endpointhttp服务地址,urlPrefixPattern是可选的,为url前缀模式,对java应用,就是servlet url pattern的前缀匹配模式字符串,urlPrefixPattern/开头,例如/api

endpoint示例["http://58.1.1.1:8080","http://59.2.61.34?urlPrefixPattern=/api"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值