Polardb是阿里云研发的一种关系型数据库,与mysql完全兼容,而性能又是其6倍,具有高吞吐,低延迟等特性;本测试通过模拟控制智能家居开关的终端场景,来体验polardb的性能;
本测试通过模拟控制智能家居开关的终端场景,来体验polardb的性能;
1、环境搭建
1.1polardb配置
首先需要购买polardb,按照处理器和内存的性能不同,价格也不同,最低的配置为2核4G的polar.mysql.x2.medium规格,包月价格560RMB;
购买以后,就可以通过连接https://polardb.console.aliyun.com/,进入polardb控制台进行相关的配置;选择一个地域节点[如华东1],创建一个实例,然后选择一个集群列表,创建一个集群。创建好后,可以看到数据库类型为POLARDB(MySQL5.6),付费类型和到期时间分别为包月和一个月的长度;在创建时配置好初始账号和密码就可以使用了;在集群页面,鼠标点击右侧的管理连接,进入集群信息页面,可以看到公网联接的地址,是用户账号名开始的连接,后面是mysql常用的端口号3306,记录下这个后面连接用的到;
集群连接地址(公网):mypolardb.mysql.polardb.rds.aliyuncs.com:3306,这里我的账号配置为mypolardb,所以这里以mypolardb开头;
在上面的白名单列表中,点击后面的笔状修改按钮,将我们用来连接数据库的ecs服务器地址添加到里面;这里我的服务器地址为47.94.219.162.
1.2ECS服务器配置:
由于需要在web页面上进行结果测试,先安装nginx服务器,使用以下命令行进行安装:
sudoapt-getinstallnginx
安装好后,在浏览器中输入ECS的地址[这里测试的是:47.94.219.162],可以看到nginx的欢迎界面,表示安装成功;
由于后面需要用php脚本程序开发,所以还需要安装php,在console窗口输入以下命令安装:
sudoapt-getinstallphp*
安装好后,输入下面的命令修改nginx的配置:
sudovi/etc/nginx/sites-available/default
将文件中的下面四段打开:
location~\.php${
includesnippets/fastcgi-php.conf;
fastcgi_passunix:/run/php/php7.0-fpm.sock;
}
保存退出,然后重启nginx:
servicenginxrestart
进入/var/www/html目录,创建一个php文件,测试是否php安装成功:
viphpinfo.php
《?phpphpinfo();》
在浏览器访问这个文件,如果可以看到相关的php信息,则表明php安装成功;
进入域名控制台,选择要解析的域名,点击解析连接,添加一条A记录,主机记录起一个容易记住的名字,比如:polardb,记录值选择ECS的ip地址,比如:47.94.219.162,然后创建完成后,等待5分钟,在浏览器访问一下新的域名,比如polardb.xunyun17.xyz,如果同样能看到nginx的欢迎界面,表示域名解析成功;
由于本智能家居场景使用mysql开发体验,所以还需要在ubuntu里,安装mysql,运行下面的命令进行安装:
sudoaptinstallmysql-client
安装完mysql后,建立一个shell脚本,测试是否可以连接到polardb上:
vip.sh
mysql-hmypolardb.mysql.polardb.rds.aliyuncs.com--user=mypolardb--password=mypolardb
。/p.sh
如果运行完脚本后,可以看到mysql的提示信息,和mysql大于号提示符,表示可以连接成功;
2、开发
首先搭建创建一个数据库和一张表用来保存客厅和设备当前信息:
。/p.sh
createdatabaseketing;
useketing;
CREATETABLEstatus(devnameVARCHAR(20),valueint(4),changetimeDATETIME);
insertintostatus(devname,value,changetime)values
(‘TV0001’,0,NOW()),
(‘LAMP01’,1,NOW()),
(‘CURN01’,1,NOW());
然后通过mysql的c语言api接口,编写一段程序,来读取status设备表中的设备状态:
querylampdevice
sprintf(str_cmd,“selectvaluefromstatuswheredevname=‘LAMP01’”);
//printf(“\n%s\n.”,str_cmd);
no_res=0;
if(mysql_query(conn,str_cmd))
{
printf(“《《《《《《《\n”);
exit(1);
}
res=mysql_use_result(conn);
if(no_res==0){
while((row=mysql_fetch_row(res))!=NULL)
{
//printf(“%s\n”,row[0]);
if(selno==17)printf(“%s”,row[0]);
elseprintf(“%s\t%s\t%s”,row[0],row[1],row[2]);
}
}
mysql_free_result(res);
sprintf(str_cmd,“selectvaluefromstatuswheredevname=‘CURN01’”);
//printf(“\n%s\n.”,str_cmd);
no_res=0;
下一步,就是用php脚本调用这段代码查询设备状态,并且显示在网页上:查询结果在
使用以下php代码实现:
if(!empty($_REQUEST[‘arguments’])){
exec(‘。/mysqlv’.$_REQUEST[‘arguments’]。‘LAMP031’,$result);
//print_r($result);<