分类目录归档:技术交流

xxl-job搭建

xxljob包括xxljob-admin xxljob-client

有两种搭建方式,一种是使用tomcat,一种是直接使用jar包搭建。

【tomcat安装方式】

1 cd /opt/ 去官网下载最新的tomcat包

2 tar -zxvf apache-tomcat*****

3 mv apache-tomcat-9.0.0.M27 job-admin 因为一个tomcat一个项目,所以重命名下

cp job-admin -R job

配置jobadmin/conf/server.xml

删除webapps里面的东西,然后创建ROOT目录

cd /etc/init.d/
vim job-admin
chmod +x job-admin
chkconfig –add job-admin
chkconfig job-admin on
chkconfig –list
systemctl start job-admin
cd /opt/job-admin/logs/
tail -500f catalina.out
vim /etc/profile
source /etc/profile
javac

【jar包部署方式】

安装JDK:

yum install java-1.8.0-openjdk* -y
vim /etc/profile
cd /lib/jvm/java-1.8.0
cd jre/
java -version
cd java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64

配置JDK:

#JDK

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

xxljobadmin和xxljobclient两个的jar包下载:

java -jar xxl-job-admin-2.0.2.jar
mkdir jobadmin
mv xxl-job-admin-2.0.2.jar jobadmin/
cd jobadmin/
vim start
mv xxl-job-admin-2.0.2.jar xxl-job-admin.jar
vim stop
chmod +x start stop
sh start
mkdir -p /home/logs
sh start
cd /home/logs/
tail -500f jobadmin.log

启动脚本:

java -jar /opt/jobadmin/xxl-job-admin.jar > /home/logs/jobadmin.log &
echo $! > /var/run/jobadmin.pid

停止脚本:

PID=$(cat /var/run/jobadmin.pid)
kill -9 $PID

创建服务:

cd /lib/systemd/system
vim jobadmin.service
cp jobadmin.service jobclient.service
vim jobclient.service
vim jobadmin.service
service enable jobadmin.service
systemctl enable jobadmin.service
systemctl enable jobclient.service

服务脚本如下:

jobadmin服务脚本

[Unit]
Description=jobadmin
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/opt/jobadmin/start
ExecStop=/opt/jobadmin/stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

jobclient脚本

[Unit]
Description=jobclient
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/opt/jobclient/start
ExecStop=/opt/jobclient/stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

【数据库安装】

wget wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-server
systemctl start mysqld
grep ‘temporary password’ /var/log/mysqld.log
mysql -u root -p
vim /etc/my.cnf
systemctl stop mysqld
rm -rf /etc/my.cnf
vim /etc/my.cnf
systemctl restart mysqld
systemctl status mysqld
journalctl -xe
mkdir -p /www/server/data
systemctl start mysqld
systemctl status mysqld

【指定日志文件路径】

mkdir -p /data/applogs/xxl-job/jobhandler/
mkdir -p /data/applogs/xxl-job/jobhandler/gluesource

【磁盘空间占用大问题处理】

【大量数据库日志问题处理】

处理了一堆.log文件的问题之后,每天数据库还是不断的增大。而且增长速度非常快。还好xxljob的数据库独立开来了。不然就把主业务数据库的服务器给占满了。

删除日志:

执行:/usr/local/mysql/bin/mysql -u root -p

输入密码登录后再执行:reset master;

修改/etc/my.cnf 文件,找到

log-bin=mysql-bin
binlog_format=mixed

再这两行前面加上#,将其注释掉,再执行systemctl restart mysqld 即可。

关于游戏引擎

从开始了有把产品游戏化的思路之后,当然分析了各种游戏化后的好处和各种规划设计。结果在结果了同理念的朋友之后,他们直接把网页产品使用cocos进行了重构开发。了解了cocos2d,cocosjs。从刚开始完全没有概念到研究各个引擎的优缺点。研究到unity。然后一个学长他们的产品用cocosjs开发一套之后,结果后面又用unity重新开发了。然后王者荣耀也是unity开发的。

和长期进行这个游戏开发的学长沟通了下:

关于编程语言学习的一路来

对于语言真的有种学不动的感觉了,哈哈。刚开始玩c c++,刚开始学习,没办法,各种的算法也得整个一两年吧。

然后mfc编程,各种API,各种界面,然后底层驱动编程破解写dnf外挂,同时学了易语言。

然后业务需求,.net有必须接触了,javascript必须接触了,css div前端的东西必须接触了。前端会了,可爱的后端可爱的.cs文件必须也得会不是。网站的程序是.net写的。

配套的一个工具确是C#写的。那么winform也必须学上不是。

这个都接触了,mssql数据得会不是,mssqlserver的各种查询,各种存储过程,各种触发器,数据库的各种加密和破解也得都不得不会了不是。

奶奶的业务需求windows服务器搞一大波,linux服务器又来蹂躏不是。shell语言偶尔得写起来了不是,各种环境搭建刚开始一脸懵逼到各种姿势搭建和优化不是。

整完这些来一个php程序,php程序得整不是,mysql得整不是。mysql优化得整不是。得整漏洞不是,得考虑安全的整个系统的构架不是。学php就学php,还来各种框架不是,thinkphp,laravel。越来越狠的业务,redis不是也得整上了。

js你牛逼,一个工程是nodejs,nodejs你得整上一波不是。

好了整完之后,还要了解一路飙飞的各种js深坑不是。好了,前端框架,你们react牛逼咯,angulajs也牛逼咯,可是一路飙飞的vuejs顶到我们gayhub的顶部,各种项目重构,单页应用的效率简直让人着迷。越来越负责构架,那么很多东西变成了学习这些语言的思想和有空就打开IDE写写这些代码玩体验体验。

好了接触这几个鸟东西,TypeScript你不得学吗。好了好了,python你爷爷听说很牛,你们牛逼就好,哈哈。

然后要主导的项目又转了大方向。奶奶的后端用高效率的go语言写的,数据库mssql,前台用cocos写的,cocos里面又分很多种,cocosjs啥啥啥,我勒个乖乖。

同步调度和异步调度

简单来说有的东西是不允许同时修改的。是要按流程一步一步执行下去的。

但是其实现在重点讲下异步调度,因为很多比如某些api采集,他们是完全独立的。但是因为需要轮询,之前是把所有的采集接口的操作都放在同一个函数里面。然后由shell脚本进行轮询调度。结果除了很多次的幺蛾子。比如其中一个出错,那么所有的采集都凉凉,除非要做好比较完美的出错处理,还有采集接口的状态判断的操作才可能不导致一个凉凉,全部凉凉的事情的发生。所以分开单独调度比较好。那么如果十几个接口的轮询采集和调度都使用shell,那么开启和关闭,还有测试调试每个接口的采集状态什么的时候那么就有的操蛋了。

之前也用过xxljob这个产品,不过不得不说java的产品的比较吃资源一点。以前在成本比较不允许的情况下一个,相当于一个定时器每个月4H4G的配置还经常有点吃力还是有点无语的。后面可以忽略不计的时候才能说,东西好用就可以了。不然以前至少有十次以上因为日志满了导致的问题吧。 因为自己不熟悉java,而xxljob的管理者每次都没有完美处理这个问题导致了有点害怕xxljob,不然那个东西倒是挺出名挺好用的。

运维管理之jumpserver

管理多年的服务器,做多了一个人顶一个技术部门的事情。所有的东西也都在自己一个人手里。一两千万的业务可能就几台服务器就够了。专业一点,业务大点,随便都是十几二十台服务器。以前什么excel记录服务器信息,什么专门文件夹管理服务器信息什么的。管的倒是不算吃力,但是现在ubuntu , centos,windows,ubuntu多个系统。一个人在多台电脑,多个操作系统之间进行作业。那么这种管理信息的方式的弊端立马就出来了。

很多东西都不是难不难的问题,可能价值极高,但是只是一句话。以前都不知道这种东西,这两年接触了,但是一直都没用上。甚至之前一直还想自己开发一个小系统专门存放管理服务器信息的。刚好有朋友咨询他们被黑的事情。也提到他们用jumpserver运维。也借这个契机用用了。

首先就是先安装了。买了广州的服务器,然后git clone到服务器上,总结一点就是实在是慢。