微信指令系统的研发与应用

2018-03-27 05:04俞凌峰
中国传媒科技 2018年2期
关键词:内存指令服务器

文/俞凌峰

1.微信指令系统的背景与现状

随着新媒体的异军突起,微信已经越来越成为人们依赖的社交软件,腾讯公司推出的微信订阅号、服务号等也被越来越多的企业所采用。对媒体人而言,最常见的就是通过订阅号每天更新发布新闻,随着订阅号的增多,问题也慢慢出现。一是发布渠道单一。现代人关注的不仅仅是一个公众号,如果仅通过官方的发布,而不主动推送到人们眼前,很多人不会主动去寻找推送的微信;二是转发数低。转发数低就不能通过以点带面的方式形成传播的扩散,无法有效提高阅读量与点赞数。

基于这两点问题,可以通过采用单位员工集中转发的方式来提高微信图文消息的转发数与阅读量,但如何发送需要转发的微信消息(以下简称指令),并统计转发的指令成了一个问题。为了解决这个问题,萧报技术中心打算利用微信提供的公众平台开发工具SDK,设计一套系统来完成指令的推送与统计等问题。

运行至今,共计发出微信指令约700余条,审核通过数17000余条,有效地提高了微信的转发数与阅读量,也调动了员工的转发积极性。另外,此系统也引起了行业同行的兴趣,我们将之复制并进行了一定的推广。

系统后台首页图

微信端截图

2.系统需求与分析

通过调研,系统的流程:首先建立一个微信服务号——“萧报转发”,让单位的员工都关注这个服务号(需要有一道审核机制以排除非本单位人员),通过后台系统推送消息给用户,用户接收到消息后转发指令到朋友圈并截图,然后通过服务号上传截图,审核通过后系统将推送一条审核通过的消息给用户,并且系统需要对此做一个记录,以方便统计。

通过分析,判断转发系统需要实现以下几个模块:

用户管理:实现用户的关注申请以及审核。

指令管理:实现指令的编辑、推送、审核。超时的指令不能审核通过。

部门管理:实现部门的建立以及用户的分组。

统计分析:通过不同的方式,对用户的完成数进行统计,奖优罚劣。

权限设计:设计好权限的职责范围,将部分权限发放给二级管理员进行管理。

系统选型上,手机端采用微信提供的weui框架,后台通过目前比较成熟的Tomcat+Java+Bootstrap+Mysql搭配组合,完成后台系统的UI以及逻辑和数据库开发,服务器环境采用安全稳定的阿里云环境,实现云端部署。

3.系统开发与实现

3.1 数据库的开发与连接池设计

通过对数据库的分析,建立ER模型,把表拆分为in_customer表(用户表)、in_datastatistic表(数据统计表),in_department表(部门分类表)、task表(任务表)等七张表,其中,特别需要注意的是:由于微信的昵称现在引入了emoji表情,原先的存储引擎utf8已经不能满足新类型的字符串,因此,数据库以及表都需要将存储引擎改为utf8mb4引擎,这个新的引擎支持emoji表情的存储,适用范围更广泛。

其次,因为本套系统的指令发出以后,短时间内可能会接到较多的连接请求,为了提高并发量,采用了数据库连接池的设计方法,有助于提高对于数据库连接的效率和连接数量。

3.2 MVC分层开发与优化

程序的逻辑代码层采用java语言开发,采用面向对象的设计方法进行类的拆分与设计,严格遵循了MVC的分层设计思想,主要的代码逻辑处理流程为:view层→servlet层(service)→数据库访问层→数据库连接池→数据库。通过分层以后,代码结构耦合性降低,复用性更高。

对于数据的访问层,将对数据的增删改查统一封装在DbDao层,方便对数据库进行常用操作进行统一管理,同时有助于对数据安全性的检查,提高系统的安全性。

为了以后很好地进行复制与扩展,将系统的数据库连接配置文件、微信配置文件,以及系统配置项文件进行了提取整合,当有新的项目需要复制时,直接进行对应的修改即可,可重复性大大提高。

实际使用过程中,对tomcat的生产环境进行优化调整,经实际测试,发现默认的java虚拟机jvm分配的内存不能满足实际生产环境的需要,系统有时候由于jvm设置的内存大小只有256M,有时候内存溢出会引起死机等问题。经调整到2G以后,生产环境下内存使用率能够满足我们的实际需要。

优化后的JVM内存使用率图

3.3 微信配置以及access_token定期刷新

由于是在微信的接口上进行开发,因此,必须遵循微信服务平台的一些约定。微信和阿里云服务器的通信过程如下图所示:

微信客户端与系统通信流程图

在微信平台网页端需要对接入的网站进行一些基本的配置,通过设置微信服务器转发消息到阿里云平台,并设置相应的服务器地址以及Token。

公众平台开发配置图

由于Access Token有效期只有7200秒,而每天调用获取的次数只有2000次,所以,需要将Access Token进行缓存,保证不触发超过最大调用次数。另外,在微信公众平台中,绝大多数高级接口都需要Access Token授权才能进行调用,开发者需要使用中控服务器统一进行缓存与更新,以避免各自刷新而混乱。本系统中,Access Token我们采用缓存的方式进行存储,避免由于单天转发数量过大而引起Access Token调用次数达到上限。

4.制度配套

为了更好地调动广大员工的积极性进行微信转发,报社专门制定了相关制度,要求员工每月至少转发5条微信,作为考核的基本要求。如果员工超额完成,根据转发数量排行,每个月进行数量统计,前八名员工将获得奖励。制度出台后,员工的转发积极性大大提高,每月都有员工满额完成转发任务,同时微信主编对平台的信赖度也越来越高,经常性要求转发一些本部门重要的微信,以提高阅读量。

5.效果与展望

目前系统的使用率较高,每天平均转发5条以上的微信,从系统投入使用至今共计发出700余条,转发量达到17000余条。根据阅读量计算,平均比以前提高将近20%的微信阅读量,有效地提高了微信的传播效果。

根据目前的使用效果,我们还将持续地对系统进行优化,听取更多使用人员的反馈建议,对用户体验做进一步的提升。同时,更加关注系统的安全性与稳定性,在此基础上加入更多的功能,适当时机下我们考虑将之开放到更大的范围,将更多的人纳入到转发系统中来,通过奖励或者采取系统积分等办法鼓励他们转发,从而进一步提升微信的转发量。

猜你喜欢
内存指令服务器
服务器组功能的使用
《单一形状固定循环指令G90车外圆仿真》教案设计
通信控制服务器(CCS)维护终端的设计与实现
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
PowerTCP Server Tool
“春夏秋冬”的内存
计算机网络安全服务器入侵与防御
内存搭配DDR4、DDR3L还是DDR3?
中断与跳转操作对指令串的影响
一种基于滑窗的余度指令判别算法