叶 梓
(安徽四创电子股份有限公司,安徽 合肥 230031)
随着北斗三号的全球组网,北斗位置、时间以及通信可以作为基础功可以作用在各个行业。北斗运营服务平台作为提供北斗服务的一个基础性平台,可以将北斗定位服务、通信服务以及一系列增值服务提供给政府、企业以及个人,从而提高北斗应用的社会效益以及经济效益。然而随着北斗服务的开展,平台功能会不断升级,用户数量也会不断增长,而传统的单体软件架构将无法应对这种变化。微服务作为一个新型的软件服务架构,其灵活性、高效性以及扩展性的特性可以用于北斗运营服务平台中,实现服务过程中的动态升级和动态扩容。
北斗运营服务平台依据《JT/T 808-2011 道路运输车辆卫星定位系统终端通讯协议及数据交换》以及《JT/T 809-2011 道路运输车辆卫星定位系统数据交换》、《JT/T 905.4-2014 出租汽车服务管理信息系统 第4部分:数据交换与共享》等交通行业标准要求,研制部标协议转换网关,构建数据实时传输链路,实现车载终端动态位置数据采集和接入;依据北斗相关协议接入北斗卫星地面总站信息服务专线数据以及北斗指挥机相关北斗数据。平台定位为SaaS层平台,聚焦于为开发者提供一站式的位置数据管理能力。开发者将自身业务系统与北斗运营平台集成,用于扩展提升位置数据管理能力,可采用设备直连的方案,也可以按照服务使用的方案,为用户提供终端接入以及平台服务,同时按照终端数量以及服务的类型进行收费。
1.1 设备直连方案
1.2
图1 设备直连方案
1.3 服务直接使用方案
图2 服务直接使用方案
平台按照分层的设计思想进行建设,主要分为接入层、存储层、支撑层、应用层以及平台层。
(1)接入层。接入层通过设备接口程序,接入执法终端、北斗用户机、北斗车载终端、信服专线、船载终端等设备数据。接入层收到设备数据后,通过协议解析,封装成序列化协议后将其投入消息队列中。其中接入数据按照类型可以分为位置(location)、报警(alarm)、状态(status)以及报文(message)四种类型。
(2)存储层。存储层可以将消息队列中的消息按照需求进行存储。存储层按照接入数据的使用频率,将其分为热数据、温数据以及冷数据。其中热数据包括实时位置、实时报警、实时状态等;温数据包括一周内的位置、报警、报文数据以及通过流式计算得到的统计数据等;冷数据包括一个月外的位置、报警、报文数据以及不常用的历史数据等。在存储策略方面,冷数据采用MongoDB进行存储,温数据采用Elasticsearch进行存储以及二次分析,热数据采用Redis等内存数据库进行存储。
(3)支撑层。采用微服务设计理念,在运行过程中,可以动态地对服务进行横向扩展以及纵向扩展。主要服务包括服务网关、通信服务、查询服务、推送服务、报警计算服务、系统监控服务、数据存储服务、统计分析服务、基础信息管理服务、用户权限服务、流计算处理服务等。
(4)应用层。将支撑层中的微服务进行一系列组合完成API功能接口,包括位置监控、实时通信、历史查询、公共信息服务、应急指挥、报警分析、交通流量分析预测以及辅助决策等相关业务功能。
(5)平台层。应用开发北斗运营服务平台、海洋渔业监管平台、出租车监管平台等行业应用平台,为位置监管及应急通信提供强有力的信息化支撑。
图3 系统分层设计
2.1 微服务网关设计
微服务网关作为服务的惟一入口,将各类微服务进行整合。在北斗运营服务平台中,微服务网关的功能包括权限控制、服务流量监控、服务限流以及服务熔断。其中权限控制利用Token令牌技术,保证服务访问的无状态性;服务流量监控将外部访问进行记录并利用时序数据库进行存储,对服务流量实行实时监控;服务限流采用令牌桶技术,对同一时间段的访问次数进行限制;服务熔断利用断路器技术对失败一定次数的服务进行熔断,保证关键服务的可用性。
图4 微服务网关设计
2.2 位置查询微服务设计
由于位置数据接入量大的特点,在通过路线、区域进行位置查询的时候,需要利用Geohash算法提高位置数据的查询效率。
Geohash算法就是将经纬度编码,将二维字段变成一维字段,给地址位置分区的一种算法。其原理是基于区域划分的思想,划分区域的次数越多,区域越多,位置就越精确,然后通过将经纬度编码,给地理位置分区。在查询过程中,利用数据库索引,进行模糊字段右匹配,可以快速查询出我们所需要的位置点。
图5 Geohash算法编码
图6 利用Geohash算法进行路线查车
2.3 北斗通信微服务设计
北斗通信具有容量和频度的限制。北斗运营服务平台允许将多个北斗终端接入,通过TCP/IP协议接入设备接口服务,纳入统一管理。北斗通信微服务则可以对接入的北斗终端通信资源进行统一管理,形成北斗通信信道资源池。其中可以用户发送北斗短报文时可以通过平台指定发送终端,也可以默认发送终端,当默认发送终端时可以自动选择有频度的发送终端进行报文发送。同时服务将用户所有消息纳入队列进行统一管理,允许对消息进行分级,可以提升报文的发送等级。实现系统内北斗终端的信道复用,突破了在应急情况下对北斗终端通信频度的限制。
2.4 报警微服务设计
报警微服务的设主要是生成平台报警,主要包括围栏报警、异常聚集报警、偏移路线报警等。
这里首先需要开发报警规则引擎,指定相应的报警规则,如围栏报警引擎中需要指定报警时间段、出区域是否报警、进区域是否报警等规则。然后通过Spark或者Storm等实时流计算引擎,利用消息队列中的位置信息或者状态信息,通过报警规则引擎的计算,产生相应的报警,然后再投入消息队列,进行下一步的操作。
本文提出一种基于微服务的北斗运营服务平台架构,详细分析了平台总体架构的分层设计模式以及服务网关、海量位置查询、北斗通信、报警规则等核心微服务模块的设计思想,从根本上实现了系统横向和纵横的扩展性问题,避免传统单体应用框架在扩展性方面的弊病。未来随着人工智能的发展,可以将人工智能算法应用于北斗大数据中,从而对北斗运营服务平台进行完善。