共享单车服务器及客户端设计和实现.doc
文本预览下载声明
共享单车服务器及客户端设计和实现
摘 要:为了改善共享单车机械锁密码不安全、电子锁成本高的不足,设计并实现了基于蓝牙控制的共享单车系统。单车车锁采用蓝牙与Android客户端通信,客户端App请求云服务器获得对车锁的开关控制,将用户信息、单车信息上传至云服务器,云服务器将信息持久化到数据库中。针对手机的高并发访问量,云服务器搭载Nginx,实现负载均衡和反向代理。测试结果表明,该共享单车系统成本低、安全性高,通过该系统,用户可以请求云服务器实现对单车车锁的控制。
关键词:共享单车;云服务器;Android;蓝牙
中图分类号:TP311 文献标识码:A 文章编号:2095-1302(2018)02-00-04
0 引 言
共享单车是中国互联网创新的应用实践,解决了“最后一公里”的问题,缓解了交通拥堵,真正实现了绿色出行,利国利民[1]。目前,共享单车机械车锁的密码由用户通过App获取,密码不可改变,安全性低;电子车锁需要连接云服务器,安全性高,但是硬件设计复杂、成本较高、耗电量高。针对以上问题,本文提出了基于蓝牙控制的共享单车系统设计方案。通过Android手机匹配单车蓝牙车锁,请求云服务器获取“钥匙”,实现对车锁的开关控制。同时,云服务器将用户和单车的信息持久化到数据库中。
1 系统总体设计
系统由Android客户端、网页后台管理中心、云服务器和蓝牙单车车锁组成。系统框架如图1所示。
云服务器是整个系统的调控计算平台[2],为管理人员与手机App提供服务,响应用户与管理人员的操作。手机App发送HTTP请求到云服务器,解析云服务器返回的JSON数据,下发蓝牙控制信息,经车锁蓝牙MCU处理后,最终达到控制车锁开闭的功能。蓝牙车锁也可通过串口向蓝牙模块输出蓝牙信息,手机App响应蓝牙信息,最终实现手机App与硬件控制部分的双向通信。
用户在注册登录成功后,进入用车界面;打开手机蓝牙,匹配车锁蓝牙,App后台将用户信息和车锁信息上传到云端服务器;用户点击开始用车,云服务器接收到请求后,记录用户信息和车锁信息,并返回“钥匙”给App,通过蓝牙与车锁通信打开车锁。当车锁关闭后,蓝牙将已锁状态发送给App,App界面结束用车,若中途断开蓝牙,则结束用车后用车界面无法进行操作。手机端用车的业务流程如图2所示。
2 云服务器的设计与实现
2.1 云服务器架构
云服务器架构图如图3所示。
本文采用阿里云作为云计算中心,提供简单高效、处理能力可弹性伸缩的计算服务。阿里云上搭载Nginx、Tomcat、Redis和MySQL,Nginx 作为反向代理,将 App 端或者浏览器端的请求根据权重分配给两台Tomcat,Redis作为两台Tomcat的共享session数据服务器,缓存已验证的用户信息。
Tomcat1的IP地址为90,Tomcat2的IP地址为11,在90的云服务器上搭载Nginx,配置Nginx,具体的配置如下[3]:
worker_processes 2;
events {
worker_connections 1024;}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
//配置被代理的服务器
upstream live_node {
server 90:8080;
server 11:8080;}
server {
//配置访问域名及监听80端口
listen 80;
server_name 90;
//指定被代理目标
location / {
proxy_pass http://live_node;}
//配置错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;}
}
}
当有请求时,通过Nginx将请求进行转发[4],保证一个入口?⑺?有请求转发到Tomcat1或Tomcat2,同时减轻这两台Tomcat的负载压力。将Tomcat1和Tomcat2的session缓存到Redis中[5],确保访问的是同一个session,配置Tomcat conf目录下的context.xml。
Valve className=“com.orangefunction.tomcat.
redissessins.RedisSessionHand
显示全部