欢迎来到天天文库
浏览记录
ID:27211119
大小:132.56 KB
页数:11页
时间:2018-12-01
《12306ng应用层子系统服务接口规范建议》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、12306ng应用层子系统服务接口规范建议12306ng应用层子系统服务接口是指各应用层服务之间,应用层与服务网关层之间的接口。从目前项目组划分来看,应用层包括业务网关、票池、交易网关、SSO以及恶意流量控制系统。为了能让最大优化网络使用效率,减少堵塞,经过票池组对目前已有的一些高并发项目实践的总结,我们向12306ng系统提出应用层子系统服务接口规范建议。服务定义的原则无状态服务无状态服务是SOA的一个重要原则。使用无状态服务意味着对客户端来说任意两次调用都是不相干的。采用这种原则设计的服务可以有效的减少服务状态管理的成本,提高服务的可扩
2、展性。单向服务(one-way)单向服务模式中,仅由发送者(caller)向接收者(service)发送一条服务调用消息,接收者不向发送者返回任何消息。换句话说,所有服务提供的方法都是无返回值的,同时服务也不向调用者返回任何确认或错误信息。如果一个业务操作需要返回值,那么调用方必须实现一个回调服务(callbackservice)。接受服务计算完成后将调用回调服务将结果通知调用方。单向调用服务有如下优点:l不阻塞调用者当前线程;l便于服务将消息队列化处理l便于广播消息l不依赖编程语言提供的回调模式,减少并发锁的使用l消息的发送者与消息返回值
3、处理者可以不必是同一台服务器,更好的支持负载均衡l便于将消息持久化处理,以利系统备份/恢复服务的提供者应当同时提供服务的实现以及服务回调接口的定义;服务调用者自行实现回调服务。服务调用者在设计服务接口时,可以在调用参数里添加TransactionId来保持服务调用的上下文关系。服务通信协议服务通信协议可以分为数据层与传输层两层协议。我们建议数据层协议与传输层协议松散耦合。即传输层可以传输任意数据格式;数据也可以通过不同传输协议传播。(tcpudp)数据层协议我们提议使用BSON作为统一的数据层协议。BSON的全称是BinaryJSON,它是
4、一种二进制编码的类似JSON的持久化格式。如同JSON一样,BSON支持对象或数组中包含子对象或者数组。另外BSON对JSON支持的数据类型进行了扩展,比如日期类型和二进制类型。相对JSON而言,BSON存储空间更小,解析速度更快,同时还保留了JSON的可扩展性。我们认为比较适合作为服务间调用的标准数据格式。请参考http://bsonspec.org/传输层协议在局域网内,除了常用的TCP协议作为传输层协议外,为了提高系统热备份和读写分离的数据同步的性能,我们还建议使用多播协议(multicast)。由于UDP协议不是一种可靠的协议,目前
5、票池开发组正在对一些可靠多播协议(reliablemulticasttransportprotocol)进行调研。票池子系统内的服务架构我们以票池系统为例说明多播协议在系统中的应用场景。首先解释一下票池子系统的架构模型。票池服务组票池服务组负责管理1..n运行车次的票池。票池服务组采用类似LMAXDisruptor的架构设计,由三种类型服务器组成:l1台Master服务器,负责订购操作并复制信息至slavel1..n台backupslave服务器,负责对系统热备份,当master故障时,backupslave选举其中一台成为master接管
6、工作。每台服务器都已自己独立的eventlog系统来记录日志。日志的形式可以考虑文件系统以采用streamio提高系统速度。另外还可以实现一个数据交换服务将日志转存至ngSQL或其它应用服务中。l0..n台queryslave服务器,负责查询操作,master负责保持将票池数据同步到queryslave上。票池服务集群所有的票池服务组的集合,集合中每个票池服务组管理的运行车次不相同。路由服务负责向用户提供具体运行车次的票池服务的地址,也可以缓存售罄信息。售罄信息可以选择不同的策略,包括整个列车,某个区间,甚至铺位等等。路由服务集群所有路由服
7、务的集合。其中的每台服务器的路由信息都是相等的。票池调度服务负责根据负载均衡策略将运行车次的票池分配到具体的票池服务组中,同时通知路由服务运行车次的票池服务地址。当某个运行车次的票池长时间未被使用时,请求调度服务释放此票池。票池调度服务由一个master和多个slave服务器组成。Master负责执行调度服务并将信息复制到slave中去。当master故障时,任何一个slave服务可以选举为master接管调度操作。票池查询订购请求过程1.客户端随机选择一台路由服务器2.客户端向选定的路由服务发送购票查询信息3.路由服务器返回给客户端所查询
8、的运行车次的票池服务组地址a)如果路由服务器缓存售罄信息并且用户请求的车票已售罄,直接返回客户售罄消息并退出流程b)如果票池服务组支持读写分离,那么路由服务器根据是订购还是查询操
此文档下载收益归作者所有