day15--统计分析
day15--统计分析
谷粒学院功能简介及系统架构 https://www.cnblogs.com/coderD/p/14506161.html
day01--MybatisPlus的使用 https://www.cnblogs.com/coderD/p/14506180.html
day02--环境搭建与讲师管理接口开发 https://www.cnblogs.com/coderD/p/14506295.html
day03--项目前端相关基础知识 https://www.cnblogs.com/coderD/p/14506446.html
day04--项目前端相关基础知识(二) https://www.cnblogs.com/coderD/p/14506481.html
day05--讲师管理模块前端开发 https://www.cnblogs.com/coderD/p/14506505.html
day06--讲师管理模块前端开发 https://www.cnblogs.com/coderD/p/14506540.html
day07--课程发布-添加课程信息 https://www.cnblogs.com/coderD/p/14506574.html
day08--课程发布-添加课程信息 https://www.cnblogs.com/coderD/p/14506609.html
day09--课程列表和整合阿里云视频点播 https://www.cnblogs.com/coderD/p/14506636.html
day10--微服务调用 https://www.cnblogs.com/coderD/p/14506649.html
day11--首页数据显示和添加Redis缓冲 https://www.cnblogs.com/coderD/p/14506655.html
day12--首页登录和注册 https://www.cnblogs.com/coderD/p/14506657.html
day13--微信扫码登陆 https://www.cnblogs.com/coderD/p/14506670.html
day14--首页课程和名师功能 https://www.cnblogs.com/coderD/p/14506677.html
day15--统计分析 https://www.cnblogs.com/coderD/p/14506685.html
day16--权限管理 https://www.cnblogs.com/coderD/p/14506689.html
day17--权限管理和配置服务 https://www.cnblogs.com/coderD/p/14506701.html
1、ECharts
1.1、简介
ECharts是百度的一个项目,后来百度把Echart捐给apache,用于图表展示,提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
官方网站:https://echarts.baidu.com/
1.2、基本使用
入门参考:官网->文档->教程->5分钟上手ECharts
(1)创建html页面:柱图.html
(2)引入ECharts
<!-- 引入 ECharts 文件 -->
<script src="echarts.min.js"></script>
(3)定义图表区域
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
(4)渲染图表
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
1.3、折线图
实例参考:官网->实例->官方实例 https://echarts.baidu.com/examples/
折线图.html
<script>
var myChart = echarts.init(document.getElementById('main'));
var option = {
//x轴是类目轴(离散数据),必须通过data设置类目数据
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
//y轴是数据轴(连续数据)
yAxis: {
type: 'value'
},
//系列列表。每个系列通过 type 决定自己的图表类型
series: [{
//系列中的数据内容数组
data: [820, 932, 901, 934, 1290, 1330, 1320],
//折线图
type: 'line'
}]
};
myChart.setOption(option);
</script>
2、Canal介绍
2.1、应用场景
在前面的统计分析功能中,我们采取了服务调用获取统计数据,这样耦合度高,效率相对较低,目前我采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与登录人数,我们只需把会员表同步到统计库中,实现本地统计就可以了,这样效率更高,耦合度更低,Canal就是一个很好的数据库同步工具。canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL。
2.2、Canal环境搭建
canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能
开启mysql服务: service mysql start
(1)检查binlog功能是否有开启
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
1 row in set (0.00 sec)
(2)如果显示状态为OFF表示该功能未开启,开启binlog功能
1,修改 mysql 的配置文件 my.cnf
vi /etc/my.cnf
追加内容:
log-bin=mysql-bin #binlog文件名
binlog_format=ROW #选择row模式
server_id=1 #mysql实例id,不能和canal的slaveId重复
2,重启 mysql:
service mysql restart
3,登录 mysql 客户端,查看 log_bin 变量
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON|
+---------------+-------+
1 row in set (0.00 sec)
————————————————
如果显示状态为ON表示该功能已开启
(3)在mysql里面添加以下的相关用户和权限
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
GRANT SHOW VIEW, SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
3、下载安装Canal服务
下载地址:
https://github.com/alibaba/canal/releases
(1)下载之后,放到目录中,解压文件
cd /usr/local/canal
canal.deployer-1.1.4.tar.gz
tar zxvf canal.deployer-1.1.4.tar.gz
(2)修改配置文件
vi conf/example/instance.properties
#需要改成自己的数据库信息
canal.instance.master.address=192.168.44.132:3306
#需要改成自己的数据库用户名与密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
#需要改成同步的数据库表规则,例如只是同步一下表
#canal.instance.filter.regex=.*\\..*
canal.instance.filter.regex=guli_ucenter.ucenter_member
注:
mysql 数据解析关注的表,Perl正则表达式.
多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\)
常见例子:
1. 所有表:.* or .*\\..*
2. canal schema下所有表: canal\\..*
3. canal下的以canal打头的表:canal\\.canal.*
4. canal schema下的一张表:canal.test1
5. 多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)
注意:此过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取tableName进行过滤)
(3)进入bin目录下启动
sh bin/startup.sh