在互联网+的推动下,对外开放服务俨然已经成为了企业加速实现互联网化转型的重要手段。在企业开放服务的道路上,技术与业务的实现已标准化:首先需实现其自身架构服务化,并在此基础上统一服务的开放协议接口、提供服务开放后的业务及数据安全性保障、保障服务开放后面临的大数据高并发的业务支撑,最后对服务的使用情况提供全面的监控与计量。所有这些由开放带来的“复杂性”问题都可以由一套开放平台来解决,而网关作为开放平台中最重要的组件,其设计的好坏就显得尤为重要了。
企业级服务网关应具备的基本功能如下:
1. 协议转换与适配,在企业自身服务化建设过程中,可能由于开发团队、开发周期、业务需求等方面的影响而采用不同的服务调用协议,如HTTP、Web Service(WSDL、SOAP等)、RPC(Remote Procedure Call Protocol,远程过程调用协议)等。协议上的复杂性与多样性势必会增加开发者的开发成本和开发难度。服务网关应具有协议转换及适配功能,通过该功能就可以将注册进平台中的服务进行统一处理,主流的方案是将现有协议统一转换成面向移动RestFul接口形式对外开放。这样在用户进行服务请求时便不再需要考虑服务后端真正的接口实现情况,只需向服务网关发送一条简单的RestFul请求就可以了,这大大提升了开发者开发应用程序的便利性。同时该功能使原有服务接口在不做或只需做少量改动的情况下实现快速对外开放,并使原有接口很好的支持移动应用,协助企业固有业务的移动端拓展。当然,协议转换不仅仅包扩请求过程的协议转换,还包括应答结果的协议转换,例如XML与JSON返回结果的双向转换等,也是非常重要,开发者可以通过选择返回结果的数据类型以与开发者应用实现更良好的适配效果。
2. 安全保障,互联网是一个大而复杂的网络环境,企业在将自身业务能力与数据以服务形式对外开放的过程中存在巨大机遇,同时也带来了大量的安全隐患,例如开放后的业务更容易受到攻击、只想对部分人开放的数据要防止数据泄露与窃取、服务要有可见性设定防止没有权限用户的调用等等。在构建服务时网关的处理API请求过程中应加入请求权限控制,权限控制的实现方式一般采用互联网化的权限认证协议如OAuth2.0、OAuth等。安全控制等级也分为IP等级、服务等级和资源等级。举例来讲,一个普通的RestFul请求发送到服务网关后,服务网关首先会解析请求来源IP,从IP等级上做安全控制,验证为合法IP后会读取请求自带的访问令牌(Access token,通常有OAuth2.0获取),通过验证令牌的合法性来完成服务等级的访问控制,前两项验证都通过后再将该服务下有权限的资源列表与请求资源做比对验证,只有所有验证条件都通过的情况下请求才会继续进行。当然,由于业务对外开放所需安全性保障力度的不同,验证过程又存在一定的复杂性与性能损耗,大多数服务网关的安全性验证都作为可选(或按等级可选)配置来供用户使用。
3. 监控与计量,企业将自身业务对外开放并不意味着只是简单的将原有业务服务化并放在网络中供用户使用,企业大多关心自身业务开放后的用户使用情况和市场的反馈结果。这就需要服务网关具备监控与计量能力,每一次服务网关接收到请求后都要将请求来源、服务对象、请求资源、请求状态等信息记录下来,并在开放平台的控制台中做统计分析与报表展示,这样企业便能够根据实时的API使用情况分析报表做出更准确的市场判断,有助于企业指导API市场运营。
4. 性能调优,在无服务网关的开放平台中,企业各业务线的服务相对分散,用户在调用时直接访问服务后台本身,性能瓶颈主要集中在各服务自身的后台服务实现中。在使用了服务网关后,所有请求都由网关接收,并在做出相应逻辑处理之后转发给对应的真实后台。这一过程势必带来两个方面的性能问题,一是在客户端与后台服务端之间增加了一堵“墙”之后,客户端向服务端发送请求时受这堵“墙”的影响请求的时间会有所增长。怎样将这堵“墙”做的“簿”就是优化的关键了,开源的服务网关产品KONG的做法是服务网关本身只提供基本的路由功能,所有包括安全、统计、认证等逻辑处理功能都以可配置插件的形式提供给有需要的用户,当然路由功能及所有逻辑处理模块都有相应的优化方案,这里不做详细讨论。二是将原有的分散的服务集中、对外统一入口之后,也为网关带来了高访问量、高并发、大数据量的问题,而这类问题的性能优化通常会采用分布式负载均衡或集群的方式来提高负载能力。针对网关跨数据中心访问的情况,一般需要通过云的方式来建议保障。
服务网关在有效帮助企业实现对外开放的同时也面临着如性能等一些问题的挑战。市场上各类产品也有很多,从今年5月份刚刚开源的KONG到支持百亿级并发的淘宝开放平台,这些产品都可称为服务网关的标杆,相信在这些标杆的指引下服务网关这类产品的发展会越发成熟。