中间件技术在大型门户网站的应用

2018-02-25 02:39董勤
电子技术与软件工程 2018年7期
关键词:门户网站应用

董勤

摘要 为解决某汽车门户网站新老业务模式不断变化,老系统的数据格式和新需求不匹配,老系统没有对外的通用访问接口,不断产生信息孤岛,以及用户不断增长导致系统性能无法满足需要等问题,本文首先对门户的资讯、评测、车型、经销商门店、客服等功能模块进行分析,找出原因,接着通过采用消息中间件和数据缓存中间件技术有针对性地对相关问题模块进行改造、重构,最终通过严格测试,并成功上线运行。模块重构工作历时6个月,于2017年9月成功上线,改造后的门户网站提高了经销商店铺访问流量和转化率,最终达到了技术效果和经济效益双丰收。

【关键词】中间件技术 应用 数据访问 门户网站

1 引言

中间件技术伴随着互联网爆炸式发展也一直在高速发展中,一直没有固定的精确的定义,维基百科对它的基本解释是为软件应用提供操作系统之外的胶水服务,它既不是操作系统本身,也不是数据库系统,更不是应用系统,而是处在这三者中间的服务提供者,起到应用与系统、应用与数据库、应用与应用之间的桥梁作用。垂直门户网站某汽车网f下称汽车网)由于业务发展迅速,新老业务模式不断变化,每一年均需要顺应市场需求,针对不同的业务类型开发各种新的功能模块。许多老的应用系统依然有效而表现形式和应用方式已经发生较大变化,老系统的数据格式和新需求不匹配,老系统没有对外的通用访问接口,成为一个个独立的信息孤岛。同时,随着市场影响力的增强,用户规模不断扩大,系统的访问压力与日俱增,有时会发生页面卡顿,白页等现象。为了解决这些问题,2017年公司领导开会讨论决定立项对平台的资讯、评测、车型、经销商门店、客服等老模块进行应用集成和性能优化的重构工作。纵向上改造老的信息系统,发挥它们的价值;横向上整合不同业务部门的信息系统,让有价值的信息在不同业务部门之间共享。

汽车网面临的问题也是业界普遍存在的问题,大型公司如IBM、Oracle、Microsoft等巨頭有商用解决方案,如WebService套件、Portal套件、MQ套件以及各种数据库解决方案。通常这些中间件的确能解决一些问题,但是由于互联网业务场景各不相同,因此这些通用套件也不能完全精准解决各个问题,另外,商业中间件实施起来费用昂贵,性价比有待考量。

汽车网最终根据本身问题特征,为自己量身定制了一套解决方案,采用开源的消息中间件、数据中间件、以及独创的数据缓存技术,既解决了问题,又节约了资金,具有很好的性价比。

2 关键技术分析

2.1 用消息中间件打通信息孤岛并提高时效性

在汽车网中,有一个非常重要的功能模块一一经销商门店,它肩负着企业商业转化的重要使命。用户访问网站,享受免费的最新汽车信息,玩车攻略,汽车报价对比等等,顺便访问一下经销商门店页面,如果刚好有需要进行购车、保养、购买零配件等服务,他会在线报名下单,填写自己的名字、手机号、想要购买的产品或服务;这个信息被称之为销售线索。每条销售线索需要在不同的业务系统中流转,首先网站报名后台需要第一时间知道这个信息,并且给客户发送确认短信,告诉他将会在24小时内得到服务;其次销售线索会进入到直销车模块、团购车模块和平行进口车模块,由不同的业务部门对他进行回访处理;最后销售线索还会传送给对应的经销商门店系统,能提供相应服务的经销商会再次对他进行回访,确认购买内容。

由于网站是一步一步发展起来的,各种应用系统如资讯服务系统、报名模块、经销商系统、直销车系统、团购车系统、客服系统都是各自在不同历史时期独立建设起来的;他们之间不可能用同一个数据库,即使用了数据库性能也无法满足要求,因此形成了一个个独立的信息孤岛。但用户报名的数据是珍贵的潜在销售线索,如果报名的时候在各大系统都插入,则用户等待时间太长,导致用户体验糟糕而降低网站信誉,因此只能插入一个系统,而其它有需要的系统在另外的时间再来获取,但这样造成时间滞后,客户服务质量无法得到可靠保证。

消息中间件的推送特性既能起到信息孤岛之间的桥梁作用,又具有优秀的时效性。经过反复选型,在Kafka、MetaQ、ActiveMQ、ZeroMQ等多种可选项中,本次改造采用开源的RocketMQ消息队列技术,既有优异的性能,又有顶级的Apache开源社区作为后续技术保障。具体实施的时候,用户在一处填写的报名信息除了插入后台DB之外,同时发布到消息队列中去,不同业务部门前来订阅这个消息,团购部门、直销车部门、平行进口车部门、经销商网店系统以及客服系统均可根据自己的需要选择需要订阅的报名线索。当用户报名的时候,这些部门都能在第一时间得到资料,第一时间回访客户,改善了客户体验,提高了商业运作的效率,同时提高了销售线索的转化率,从而增强了汽车网的市场竞争力。

2.2 采用内存数据中间件解决性能问题

汽车网有很多老的系统应用层直接连接db进行增删改查操作,系统的整体性能无法满足日益增长的需求,因此增加了内存数据中间件作为数据访问层。在DBMS中,数据是以元组的形式存储,但是可以通过巧妙的处理映射到内存对象,以键值对方式存储,如一条记录对应一个内存键值对。汽车网数据中间层中以[表名:字段名:主键值]组合作为键,新建一个map为对应值;这个map内部的每一个子key对应元组的每一个字段,同时每一个子value对应该字段的值。具体实施中采用了10台大内存linux服务器,合计640G内存,专门来做基于redis3.0 cluster的分布式数据缓存层,分为20个节点,每个节点有主从实例。服务端对客户端传来的键进行散列、定位到节点;如果有新节点加入或者老节点删除,集群会根据一致性hash算法自动更新集群结构:经常需要访问的数据如最近2年的经销商新闻数据、最近2年的车型问答数据被装入redis中,实现冷数据热数据分离。业务层直接从缓存访问数据,无需连接DB;极大节约DB连接和查询开销。经过对比,在当前的业务模式下,老的mysql db -秒钟最多能处理1K次请求,增加数据访问层之后,查询速度立刻上升了10倍,接近1万次/秒。由于大部分业务还达不到这么大的量级,业务的伸缩性因而得到了有效的保障。如果将来有新的业务需要缓存,还可以无缝透明的往集群中添加节点,一致性哈希算法能自动将新节点分配到集群中,并且会将一部分键值对分配进来存储;这些为系统的扩展性提供了有力保证。另外由于数据访问层的加入,客户端的许多业务经过一定的改造,将不会接受sql语句直接查询db,对sql入侵也是一种根本性的防范,安全性得到有力的保障。

由于采取了redis集群作为数据中问件,业务导致的一些数据变化甚至是DB内主动发生的变化无法及时更新到缓存,从而导致业务层读取到过期数据的可能。为了解决这个问题,消息队列中问件被再次采用以实现数据状态变化通知,令缓存及时更新。当前端业务主动改变db数据的时候,如涉及到插入或者更新操作,将对应的key作为消息发布到消息队列,同时有专门的进程订阅该消息,从而进一步将redis内对应key的value值进行更新,或者将此key值设置为过期。当前端业务查询到过期数据时便再次从db内查询出最新的数值同时同步到redis中。

3 实施中的独创工作

汽车网重构过程中,内存数据中问件技术被大范围使用,在具体实施的过程中,发现其索引功能尚处于空白状态,这里介绍一个独创的设计:类redis的纯内存数据库,姑且命名为Qdis,除了基本的key-value存储功能之外,最大的创新之处是允许它和传统的DBMS -样支持对查询条件自动建索引。以车型数据库为例,传统的DBMS存储方式是元组式,如(id,品牌,车系,车型,颜色,年份,发动机型号);存入Qdis的方式是以”表名:主键字段名:主键ID”为key, value为一个map,这个map的每一个子key是该元组的字段,如品牌,子value为对应的值如Benz。假设在数据库内对年份字段做了索引,很容通过SQL查出年份为2015款benz E300的纪录。在Qdis中,根据用户设置可对年份这个子key做自动索引,索引本身是树形结构,”年份”放在有序set中保证唯一性,每个索引对应一个list,里而放对应的车型主键(可能多个):如年份这个字段建好索引后,各年份对应的车型主键将分别被存放在一个个list中;以后只要查询2015年的车子,则这个list中的车型主键立刻就有了。重要的是,这一切都在内存内发生,而且Qdis提供一键自动化建索引脚本,还可根据数据变化自动更新。这么做的优点是:Qdis离内存数据库又迈出了实际性的一步。让复杂查询变得更加快速容易。

4 结论

(1)采用消息队列RocketMQ之后,既充分利用了历史遗留系统,同时还实现了跨部门的协同工作,提高了工作效率,缩短了用户等待时问,改善了用户体验,增强了用户的商业转化率。

(2)采用基于内存的数据中问件之后,极大提升了数据访问速度,性能提升了一个数量级,消除了卡顿白页等历史问题,同时搜索引擎的连通率也得到成倍增长,进而增强了市场影响力。

(3)施工时独创的内存自动建索引的技术让数据中问件不再难用,既保证系统性能,又提升了工程师们的开发效率。半年多的线上稳定运行证明,中问件技术极大改善了互联网应用的服务品质,得到了用户的充分肯定。

参考文献

[1]罗宏俊,冯瑞,基于Web技术进行移动应用开发和中间件的研究[J].计算机系统应用,2017

[2]肖建军,基于中间件技术的水文信息处理系统的开发与应用[J].北方工业大学,2017.

[3]葛东遥.消息中间件管理和监控系统的设计与实现[J].北京交通大学,2017.

[4]谭江山.基于中间件技术的钉钉与现有OA系统集成探讨[J].电子制作,2017 (06).

[5]王慕所.面向組件的通信中间件技术研究[J].浙江大学,2017.

[6]薛皓.基于分布式数据库中间件的混合类型数据管理研究[J].东华大学,2017.

猜你喜欢
门户网站应用
多媒体技术在小学语文教学中的应用研究
谈政府门户网站的全方位
中国省级教育门户网站排行榜等
中国省级教育门户网站排行榜等
中国省级教育门户网站排行榜