做网站用什么语言比较简单,柳城 wordpress,商丘网吧什么时候恢复营业,wordpress附件上传FTP5. 安装Kafka
5.1 基础架构
为方便扩展#xff0c;并提高吞吐量#xff0c;一个topic分为多个partition配合分区的设计#xff0c;提出消费者组的概念#xff0c;组内每个消费者并行消费为提高可用性#xff0c;为每个partition增加若干副本#xff0c;类似NameNode HA…5. 安装Kafka
5.1 基础架构
为方便扩展并提高吞吐量一个topic分为多个partition配合分区的设计提出消费者组的概念组内每个消费者并行消费为提高可用性为每个partition增加若干副本类似NameNode HA
5.2 安装步骤
解压kafka文件改为缩略名进入kafka/config文件修改配置文件 myid和brokerID对应connectkafka日志存放地址
#broker的全局唯一编号不能重复只能是数字。
broker.id0#broker对外暴露的IP和端口 每个节点单独配置
advertised.listenersPLAINTEXT://hadoop102:9092
#kafka运行日志(数据)存放的路径路径不需要提前创建kafka自动帮你创建可以配置多个磁盘路径路径与路径之间可以用分隔
log.dirs/opt/module/kafka/datas
#配置连接Zookeeper集群地址在zk根目录下创建/kafka方便管理
zookeeper.connecthadoop102:2181,hadoop103:2181,hadoop104:2181/kafka配置kafka环境变量
#KAFKA_HOME
export KAFKA_HOME/opt/module/kafka
export PATH$PATH:$KAFKA_HOME/bin向不存在的主题发送数据时kafka会自己创建该主题是单副本和单分区的主题。测试kafka能否正常运行 发送消息bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first消费消息bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first 编写一键启停脚本
#! /bin/bashcase $1 in
start){for i in hadoop102 hadoop103 hadoop104doecho --------启动 $i Kafka-------ssh $i /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.propertiesdone
};;
stop){for i in hadoop102 hadoop103 hadoop104doecho --------停止 $i Kafka-------ssh $i /opt/module/kafka/bin/kafka-server-stop.sh done
};;
esac6. 安装flume
6.1 概述
使用flume很方便架构方面source, channelsink不是分布式的没有高可用。但是如果结合kafka channel之后还是不错的。
6.2 安装步骤
解压flume安装包并改名修改conf/log4j文件修改LOG_DIR路径改为/opt/module/flume/log让日志同时打印在控制台添加参数
# 引入控制台输出方便学习查看日志Root levelINFOAppenderRef refLogFile /AppenderRef refConsole //Root6.3 选择source、channel、sink
官网地址flume.apache.org, 可以通过官网查找对应的配置参数。
source: taildir source 日志文件地址filegroups.f1偏移量文件地址positionFile channelKafka Channel kafka.topic主题名字默认为flume-channel建议修改为topic_logparseAsFlumeEvent : 修改为false, 不转换成flume事件格式 sinkkafka sink, 由于kafka channel是channel和sink一体的实际上不需要配置sink。
#定义组件
a1.sources r1
a1.channels c1#配置source
a1.sources.r1.type TAILDIR
a1.sources.r1.filegroups f1
a1.sources.r1.filegroups.f1 /opt/module/applog/log/app.*
a1.sources.r1.positionFile /opt/module/flume/taildir_position.json#配置channel
a1.channels.c1.type org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers hadoop102:9092,hadoop103:9092
a1.channels.c1.kafka.topic topic_log
a1.channels.c1.parseAsFlumeEvent false#组装
a1.sources.r1.channels c1编写Flume启停脚本 nohup ... : 表示进程不会随着窗口的关闭而消失即后台运行或者挂起了。/dev/null 将控制台打印信息放到黑洞中日志可以在flume/log目录下查看即可。21: 将正确输出流和错误输出流合并ps -ef : 打印进程状态ef表示父子关系
#!/bin/bashcase $1 in
start){echo --------启动 hadoop102 采集flume-------ssh hadoop102 nohup /opt/module/flume/bin/flume-ng agent -n a1 -c /opt/module/flume/conf/ -f /opt/module/flume/job/file_to_kafka.conf /dev/null 21
};;
stop){echo --------停止 hadoop102 采集flume-------ssh hadoop102 ps -ef | grep file_to_kafka | grep -v grep |awk {print \$2} | xargs -n1 kill -9
};;
esac7. 电商业务流程
7.1 用户购物流程
首页 三级分类索引全文检索营销活动 商品详情 购物车SSO单点登录浏览器token保存下单结算第三方支付 售后管理 评价退货退款物流服务客户服务库存服务
7.2 电商常识
sku商品库存量基本单位产品统一编号。spu: 商品名称聚合最小单位易于复用、检索。UV人次不管是否重复PV人数同一个人只算一次
7.3 电商系统表结构
活动相关表主键为aciivity_id 活动信息表活动规则表活动商品关联表 平台相关表就是搜索商品后出现的属性 平台属性表一级索引平台属性值表二级索引营销坑位表营销渠道表字典表用于替换解释某些字段 分类相关表 一级分类表二级分类表三级分类表 用户表 用户信息表用户地址表 订单相关表 订单表订单明细表退单表订单明细活动关联表订单明细优惠券关联表订单状态流水表省份表/地区表品牌表购物车表评价表 优惠券相关表 优惠券信息表优惠券范围表优惠券领用表 支付相关表 支付表退款表
MySQL安装
下载MySQL安装包去除CentOS系统中自带的mariadb依赖安装libaio切换为root用户su root修改/etc/my.cnf文件降低密码级别获取临时密码进入MySQL命令行设置MySQL密码开放权限, 让外部主机也能访问mysql默认只能本机访问并刷新flush privileges修改外界访问密码也为000000
#!/bin/bash
set -x
[ $(whoami) root ] || exit 1
[ $(ls *.rpm | wc -l) 7 ] || exit 1
test -f mysql-community-client-8.0.31-1.el7.x86_64.rpm \
test -f mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm \
test -f mysql-community-common-8.0.31-1.el7.x86_64.rpm \
test -f mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm \
test -f mysql-community-libs-8.0.31-1.el7.x86_64.rpm \
test -f mysql-community-libs-compat-8.0.31-1.el7.x86_64.rpm \
test -f mysql-community-server-8.0.31-1.el7.x86_64.rpm || exit 1# 卸载MySQL
systemctl stop mysql mysqld 2/dev/null
rpm -qa | grep -i mysql\|mariadb | xargs -n1 rpm -e --nodeps 2/dev/null
rm -rf /var/lib/mysql /var/log/mysqld.log /usr/lib64/mysql /etc/my.cnf /usr/my.cnfset -e
# 安装并启动MySQL
yum install -y *.rpm /dev/null 21
systemctl start mysqld#更改密码级别并重启MySQL
sed -i /\[mysqld\]/avalidate_password.length4\nvalidate_password.policy0 /etc/my.cnf
systemctl restart mysqld# 更改MySQL配置
tpass$(cat /var/log/mysqld.log | grep temporary password | awk {print $NF}) # NF为awk切分时的列的个数$NF为最后一列
cat EOF | mysql -uroot -p${tpass} --connect-expired-password /dev/null 21
set password000000;
update mysql.user set host% where userroot;
alter user root% identified with mysql_native_password by 000000;
flush privileges;
EOF