架构设计与重构架构师成长记互联网架构

开放平台openapi技术实现要点

2018-01-02  本文已影响149人  monkey01

前言

开放平台设计系列第一篇主要写了开放平台功能方面的设计,原计划写3篇,一篇介绍功能,一篇介绍架构,一篇介绍使用的技术。写了第一篇功能后,发现架构和技术可以合并写,这样看起来更方便些,所以本篇就把架构和技术合并了。合并起来还有一方面是因为涉及到公司实施细节不能把架构的细节写出来,只能简化的描述下架构,这样架构的概述就太少了没办法撑起一篇文章,在后面技术实现会讲解下各个功能模块的实现方式。

1. 总架构概述

下面直接上架构图来描述下通用版开放平台的架构,这里已经删掉了所有涉及到公司隐私的信息。架构上总体上分为以下几部分:

互联网接入web server(web server):负责互联网外部请求的接入,webserver一般使用nginx负责负载和反代,一般都是将webserver部署在两层防火墙包围的DMZ区用来内外网的安全隔离;

开放平台接入网关(openapi gateway):负责接收互联网接入转发的交易请求,网关是线型集群部署在内网,负责请求的限流、熔断、计费等功能;

开放平台门户(openapi portal):门户主要负责提供给开发者使用的门户页面和服务申请、应用管理等功能。门户也是采用了集群部署的应用服务;

开放平台内管(openapi management):内管主要提供给管理员进行内部服务、应用审核、基本维护使用,也是集群部署的应用服务;

服务注册发现中心(service center):服务注册中心是整个服务化的核心,这里服务发现中心主要实现了服务路由和内部服务注册、发现的功能,这里也是采用了集群部署;

安全服务:安全服务因为是基础服务,所以将所有服务都注册到了service center供所有系统使用;

oauth服务:oauth因为也属于开放平台基础服务,所以这里将oauth所有服务都注册到了service center;

开放平台服务组合(BIM):服务组合对原子基础服务进行组合后再发布到service center,也是一个比较核心的模块,有的公司将服务组合从开放平台中剥离出来单独作为一个服务组合系统。BIM也是采取了线性集群部署的方式。

开放平台内部服务管理(openapi server):内部服务管理主要实现了所有开放平台服务元数据的管理、服务接口的配置、应用元数据管理等。

开放平台架构图.png

2. 服务接入网关

服务网关的实现比较简单,主要有几个关键点,下面介绍下:

3. 服务组合

服务组合是开放平台中比较常见的功能模块,服务组合一般有两类,服务接口顺序、并行组合,自定义逻辑接口组合。

4. oauth

oauth是开放平台一个不可或缺模块,oauth具体有什么功能这里我就不介绍了,可以参考之前转发的一篇关于oauth的文章,这里主要说下oauth的实现方式,如果是实现标准的oauth的3种模式,可以基于spring security和Apache的Shrio这两套框架来实现,但是目前我了解下来还是有很多公司实现的oauth协议其实加了很多自己的定制化需求,如果有很多定制化需求的建议还是自己实现一套,实现难度其实不大,主要就是实现token发放、token校验、token有效期处理、token更换等基础功能,纯自研的话功能肯定没有用框架那么丰富,但是所有代码可控自主性更高。

5. 服务注册管理

服务注册管理的实现其实没什么好说的,用的技术其实就是传统的java web,服务注册管理其实就是对开放平台所有的应用、服务、接口配置等元数据进行统一管理的模块,只要需求功能清晰,按需求实现就可以了。

6. 服务注册发现中心

服务注册发现中心不是简单的服务路由分发、服务注册、服务发现,其实还涉及到服务的可用性管理、服务监控等等内容,这里推荐使用现成的,不要重复造轮子,可以使用zookeeper或者eureka,笔者之前所在的项目分别使用过dubbo+zk的组合和springboot+eureka的组合,两种各有优缺点,这里更加推荐使用后者,目前springcloud有一统微服务江湖的趋势,而且更新越来越快,虽然阿里又对dubbo重新进行维护,但是担心阿里开源的尿性,小东西用用没问题,像服务治理框架这样的还是算了,万一出问题想死的心都有了。

7. 安全

上一篇文章里说过开放平台的核心其实不是开放接口而是如何保证安全,开放平台的安全其实涉及到以下几方面需要考虑的地方:

8. 沙箱

沙箱主要实现的功能就是服务模拟,沙箱实现要注意以下几点:

9. 门户、内管

门户和内管其实没什么好说的其实都是一些portal,只是针对的用户不一样,实现的技术也就是传统的java web技术,如果前端要显示的酷炫一些就使用一些H5的技术。因为在门户和内管中还会涉及到一些监控的功能,监控模块这里就不单独弄一节描述了,其实监控可以借助于一些三方组件来实现,目前主流的实现方案主要是将各个系统的服务接口调用都推送到一个监控平台,由监控平台根据推送过来的数据进行实时数据展示。

总结

本文对于开放平台一些核心内容如何实现做了简要介绍,每部分其实都可以单写一篇文章,开放平台中其实涉及到的技术还是很多的,希望大家慢慢体会。

上一篇下一篇

猜你喜欢

热点阅读