◆彭永勇 曾 强
基于互联网应用模式的企业统一身份网关技术实践
◆彭永勇 曾 强
(四川中电启明星信息技术有限公司 四川 610225)
针对企业大量的私有云、公用云服务调用乱象、不能统一调用方式、无法对服务监控等多种问题,本文提出了基于互联网模式的企业级统一应用网关模式实践,通过统一服务调用入口、统一服务请求协议、统一监控处理技术,有效提升企业服务管理能力。
安全;可信;服务消费;服务注册;网关
随着企业信息化的不断发展,越来越多的应用在企业中构建和运行,移动应用、企业内部应用、互联网应用,使得后台服务支持的对象,从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。另外随着互联网的不断发展,网关应用必须要连接着企业内外网服务,作为企业应用服务的统一入口,另外微服务架构概念的提出,网关成为了微服务架构的一个标配组件。如果没有网关的存在,那么企业需要解决如下问题:
(1)内外服务隔离;
(2)多方服务的解耦;
(3)服务安全问题;
(4)服务监控问题;
(5)服务限流问题。
基于以上问题,本文提出了基于互联网模式的企业级统一应用网关模式实践,克服了现有企业服务多样化、服务安全性等困难,通过构建一套适应多客户端应用调用场景、支持公用云和私有云服务请求网关。
目前比较传统的网关实现技术主要有基于线程的并发模型和事件驱动的并发模型,虽然也能够实现网关基本功能,但都有各自的问题,首先基于线程的并发模型方式弊端是随着线程(进程)数的上升,操作系统在这些线程(进程)之间的频繁切换,将急剧降低系统的性能,另外基于事件驱动的并发模型要求每一个状态的操作是短暂的并且是非阻塞的,针对状态的管理以及扩展性差,以下对两种模式进行说明。
基于线程的并发模型(Thread-based concurrency)(如图1),为每一个请求分配一个线程或进程。这种模型编程简单,可以将处理一个完整请求的代码编写在一个代码路径中。随着线程(进程)数的上升,操作系统在这些线程(进程)之间的频繁切换,将急剧降低系统的性能(如图2)。
图1 基于线程的并发模型
这种模型中(如图3),每一个请求在系统被表示成一个有限状态机(FSM)。每一个FSM的状态表示请求的一系列的操作。服务器由一组线程/进程(一般是 one per CPU)循环处理各种来自队列的事件(Event)。此方式在状态管理以及横向扩展性显得不足,需要引入第三方组件进行管理,另外出错不好排查(如图4)。
经统计,校园足球研究的第一作者101人,来自47个单位,90%为高等学校,其中体育院校有10所.发文3篇以上的有11个单位(见表5),共发表文献50篇,占发文总量的40.32%.其中上海体院学院发文最多,发表论文11篇,其次为沈阳体育学院,发表论文7篇.由表5可以看出,校园足球的研究主要集中在体育院校和师范大学、综合性大学的体育院系.
图2 该模型下系统性能效果
图3 基于事件驱动的并发模型
图4 该模型下系统性能效果
因此本文提出了第三种基于互联网关模式,能够适应企业级公有云、私有云服务的互联网网关模式。
本设计通过在互联网构建一套网关服务、支持移动应用、WEB应用、合作商应用调用,通过安全加密过后的路由标识,将服务路由至企业内网、外网服务。
保证高可用一般做法是解决单点故障给系统整体带来的影响。在产品设计时,为确保高可用,考虑了如下几点要素:
(1)无状态设计原则:网关层为保证高可用、易于伸缩、快速启动,需要设计成无状态的。用户的状态数据通常使用session对象来封装,网关层要设计成无状态的,也就是说,不能由网关来负责session的维护。那由谁来维护session相关的信息呢?本文是采用cookie+session服务器的方式。
(2)优雅下线原则:当网关发现某一个节点不可用时(例如请求响应时间超过阀值),不是直接断开与此节点的连接,而是先把此节点标记为不可用(后续不在发送请求到此节点),但还会留出一段时间让之前的请求都响应完毕。
(3)当网关监听到有一台新的服务注册上来时,考虑到有些服务启动后,刚开始会有许多初始化的工作,此时服务对请求的响应速度是比较慢的。如果一开始就给这台服务分配太多的压力,有可能导致服务瞬间被压垮。为了避免这种情况,网关层需要考虑支持SlowStart特性。即经过一段时间,逐渐把压力增加到预设的值。
(1)在哪些地点进行拦截处理。
(2)拦截器的处理顺序。
(3)如何在拦截器间传递数据。
(4)支持在线关闭或启动一个拦截器。
(1)自动生成服务的API文档。
(2)自动生成客户端的调用代码。
互联网模式的企业级统一应用网关模式由服务消费者、服务网关、服务生产者三部分组成,其中服务消费者主要负责服务的消费;服务网关提供对服务的安全控制、服务注册管理、服务请求路由管理;服务生产者创建服务、发布服务、在网关服务注册服务。
图5 业务架构
如图5,其核心业务是服务生产者在服务网关发布和注册服务,服务消费者在服务网关查找和绑定服务。
网关服务由图6绿色部分组成,包括运行和运维两部分,运行模块负责接收客户端请求,并且路由到相应的云服务,而运维部分则主要是管理网关服务,包括路由策略配置、运行监控管理,其详细实现原理如图6所示:
图6 实现原理
大致步骤如下:
(1)服务提供商在网关服务注册账号。
(2)登录网关服务后台管理、发布服务、配置权限、收费模式。
(3)服务消费方在网关服务注册账号。
(4)登录网关服务后台管理、绑定需要调用的服务,获取客户端调用代码、调用API文档。
(5)当客户端需要请求服务时、网关服务首先通过身份识别有效性,如果有效,则配置路由配置策略路由到服务后端。
(6)服务后端将请求结果,转至网关服务,再返回到客户端。
本文的重点是通过互联网模式的企业级统一应用网关服务,满足企业公用云、私有云应用环境,通过服务注册、服务绑定、服务消费流程、配合网关服务后台对服务路由配置、监控运行状态,建设一套互联网模式的网关服务。
[1]中国电子技术标准化研究所.IT服务管理标准理解与实施[M].北京:电子工业出版社,2011.
[2]罗东健.大规模存储系统高可靠性关键技术研究[D].华中科技大学,2011.
[3]宋雅丽,唐晓晟.基于OSGI家庭网关和Web Service技术的智能家庭系统[J].计算机应用,2007.