工作笔记

docker部署vue项目:

1 下载nginx
2 创建Dockerfile文件
  FROM nginx:latest
  MAINTAINER yang
  COPY dist/ /usr/share/nginx/html/ 
  注意要在本目录下
3 docker build -t mynginx .
4 docker run -d --name monitor -p 9020:80 test-vue-0.0.1
docker 删除容器:docker rm + 容器id
docker 删除镜像:docker rmi + 镜像id

linux上安装nginx步骤:

1 下载对应的nginx版本的gz压缩包 =》 nginx-1.14.2.tar.gz => 解压 tar -zxvf nginx-1.14.2.tar.gz
2 安装对应的环境
     1. gcc && g++
     yum install gcc-c++
     2. pcre
     yum install -y pcre pcre-devel
     3. zlib
     yum install -y zlib zlib-devel
     4. openssl
     yum install -y openssl openssl-devel

3 创建一个nginx安装目录 mkdir nginx
     cd nginx-1.14.2
4    ## 指定文件安装路径 /nginx-1.14.2
    ./configure --prefix=/home/ylb/nginx --with-http_ssl_module -with-http_stub_status_module //ssl https通信
5  make
   make install

6 启动nginx
  修改配置文件 =》 conf/nginx.conf
  sbin => ./nginx -t => 查看是否安装成功
  ./nginx => 启动nginx

  ## 查询配置参数
  ./nginx -V
  ## 对于已安装的nginx需要修改配置参数
  ./configure --prefix=/home/lege/nginx ...配置参数
  ./nginx -s stop => 停止
  ./nginx -s reload

linux下的进程查看相关指令:

top => 查看进程详细信息,占用内存,cpu等信息
netstat -a / ps -ef /ps -ef | grep uid  | lsof -i:1500    => 查看进程
cp -r wenjanming ./其他的目录
rm -r / rm -rf 删除文件或则删除文件夹
set -n '6,10p' 文件名 :查看文件的第6行到第10行
cp 赋值 
mv 移动 / 重命名
scp 远程复制 @root 
chown -R app:app /home/app 将app下的文件所有者改为app的
export PATH=$PATH:/../bin 环境变量
echo 打印

13 linux上启动jar包时指定配置文件:java -Xms502m -Xmx502m -jar --spring.config.location=/配置文件的位置

15 rabbitMq集群部署:

同步集群机器的hosts文件 搭建erlang环境,在启动rabbitmq,再同步erlang.cookie,创建集群,验证在sbin目录下./rabbitmactl cluster_status

1 #echo $HOSTNAME(获取服务器主机名)
#vim /etc/hosts
最后一行添加以下,存在的项则不添加
11.16.204.35 35(IP) 主机名
11.16.204.36 36(IP) 主机名

2 解压erlang包:

tar -zxvf

cd

./configure --prefix=/home/app/erlang --配置环境指定

make --编译

make install --安装(这步之后再erlang下会生成bin目录 => 配置到环境变量中)

export PATH=$PATH:/home/app/erlang/bin

erl --检查是构建erl环境成功

which erl 卸载erlang
sudo rm -rf /usr/bin/erl
sudo rm -rf /usr/lib/erlang

3 启动mq:

tar -xvf

cd

rabbitmq_server-3.7.15/sbin

#./rabbitmq-plugins enable rabbitmq_management --开启集群
–rabbitmq-plugins enable rabbitmq_federation 启动插件开启多活模式
–rabbitmq-plugins enable rabbitmq_federation_management
#./rabbitmq-server –detached --启动mq集群
#./rabbitmqctl add_user admin HF@csmq --添加用户
#./rabbitmqctl set_user_tags admin administrator --赋administrtor角色
#./rabbitmqctl set_permissions –p / admin “.” “.” “.*” 添加权限(使admin用户对虚拟主机“/” 具有所有权限)

以上操作集群机器同步操作

安装完成后,配置集群

4 同步.erlang.cookie(在安装用户的根目录下)
#scp /root/.erlang.cookie root@11.16.204.36:/root

5 切换到被同步的服务器上,停止rabbitmq服务
#cd /app/redis/rabbitmq_server-3.7.15/sbin
#./rabbitmqctl stop
#./rabbitmq-server –detached
#./rabbitmqctl stop_app --停止对外服务,但是不停止进程
#./rabbitmqctl join_cluster rabbit@主机名(同步的主机名)
#./rabbitmqctl start_app

#./rabbitmqctl cluster_status --查看集群是否配置完成

//启动服务
sudo rabbitmq-server start
//关闭服务
sudo rabbitmq-server stop
//重启rabbitmq
sudo rabbitmq-server restart
//后台启动
sudo rabbitmq-server –detached
//关闭整个节点,包括应用
sudo rabbitmqctl stop
//仅关闭应用
sudo rabbitmqctl stop_app
//启动应用
sudo rabbitmqctl start_app
//查看所有安装了的插件
sudo rabbitmq-plugins list
//启动管理模块插件
sudo rabbitmq-plugins enable rabbitmq_management
//关闭插件
sudo rabbitmq-plugins disable rabbitmq_management
//查看所有用户(默认用户名和密码均为:guest)
sudo rabbitmqctl list_users
//添加用户并设置密码
sudo rabbitmqctl add_user username userpass
//设置用户权限
sudo rabbitmqctl set_user_tags username tagname
//修改用户密码
sudo rabbitmqctl change_password username newuserpass

0407号生产文件内容替换
vi filename
esc + shift+ :
:%s/9020/8001/g enter => 9010替换为8001

生产问题解决步骤:
终端浏览器在访问nginx时,可以访问到vue前台的页面,但是数据由于使用websocket通讯,
直接在vue中使用websocket链接后台服务无法连接,此时需要使用nginx中间层代替
显示连接后台失败
DCL@72mon

解决方案,在nginx中继续添加一层路由,vue前台页面的调用走nginx,nginx继续调用后台数据完成数据推送

0408号笔记:

服务部署完以后,验证接口以及内部机器的联通性,首先需要一个工具测试调用接口。使用curl命令执行:
curl -H “Connnection-Type:application/json” -H “Data_Type:msg” -X POST --data ‘{“channel_id”:“POS”,“device_id”:“0050000000”,“mer_code”:“9029302390”,“mer_name”:“测试商户”,
“org_channel”:“银联”,“org_name”:“测试商户”,“push_template”:“01”,“req_channel”:“21321”}’ http://11.16.204.37:7010/horn/pushmsg

jar包内部配置文件变更,直接在linux上修改后重新打jar包
unzip xxx.jar
jar cvf0M ccc.jar ./ =>将当前目录下的所有文件打成可执行的jar包

0425号笔记:用JAVA如何实现每天1亿条记录的数据存储,数据库方面怎么设计?

一天秒数:606024=86,400秒

每天写入数据量:100,000,000条

平均每秒写入数据量:100,000,000/86,400=1157.5条

峰值每秒估算写入数:1157.5*10=11575条

因此建议从以下几个层面处理

1、数据库服务器磁盘采用高速SSD磁盘

2、数据库采用2个节点的集群方式部署,每个集群节点3台服务器,1主2备,主数据库为写数据库,备数据库为读数据,采用读写分离,单集群节点内主备库数据实时同步,集群节点主库数据实时同步

3、数据表设计采用分区、分表方式设计表结构

4、数据写入采用单事务批量写入的方法新增数据

5、在关键字段建立索引,提高查询效率

6、第一次查询后将数据缓存到radis中,方便下次查询

0428号微服务之间的调用feign组件(ribbon,hystrix)的关联关系:

在Spring Cloud中使用Feign进行微服务调用分为两层:Ribbon的调用及Hystrix的调用。所以Feign的超时时间就是Ribbon和Hystrix超时时间的结合,而如果不启用Hystrix则Ribbon的超时时间就是Feign的超时时间配置,Feign自身的配置会被覆盖。
而如果开启了Hystrix,那么Ribbon的超时时间配置与Hystrix的超时时间配置则存在依赖关系,因为涉及到Ribbon的重试机制,所以一般情况下都是Ribbon的超时时间小于Hystrix的超时时间,否则会出现以下错误
在Ribbon超时但Hystrix没有超时的情况下,Ribbon便会采取重试机制;而重试期间如果时间超过了Hystrix的超时配置则会立即被熔断(fallback)

设置feign的配置,默认启动feign,重试次数为5
设置ribbon的配置,默认启动ribbon,重试次数为1

0521号redis5.0.7版本安装,需要安装yum -y install gcc-c++环境
步骤一:解压 tar -zxvf —
2: cd redis5.0.7 /
3: make
4: make PREFIX=/安装路径

cron表达式:
“30 * * * * ?” 每半分钟触发任务
“30 10 * * * ?” 每小时的10分30秒触发任务
“30 10 1 * * ?” 每天1点10分30秒触发任务
“30 10 1 20 * ?” 每月20号1点10分30秒触发任务
“30 10 1 20 10 ? *” 每年10月20号1点10分30秒触发任务
“30 10 1 20 10 ? 2011” 2011年10月20号1点10分30秒触发任务
“30 10 1 ? 10 * 2011” 2011年10月每天1点10分30秒触发任务
“30 10 1 ? 10 SUN 2011” 2011年10月每周日1点10分30秒触发任务
“15,30,45 * * * * ?” 每15秒,30秒,45秒时触发任务
“15-45 * * * * ?” 15到45秒内,每秒都触发任务
“15/5 * * * * ?” 每分钟的每15秒开始触发,每隔5秒触发一次
“15-30/5 * * * * ?” 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
“0 0/3 * * * ?” 每小时的第0分0秒开始,每三分钟触发一次
“0 15 10 ? * MON-FRI” 星期一到星期五的10点15分0秒触发任务
“0 15 10 L * ?” 每个月最后一天的10点15分0秒触发任务
“0 15 10 LW * ?” 每个月最后一个工作日的10点15分0秒触发任务
“0 15 10 ? * 5L” 每个月最后一个星期四的10点15分0秒触发任务
“0 15 10 ? * 5#3” 每个月第三周的星期四的10点15分0秒触发任务

0518号:
远程复制:scp /本机文件 root@106.13.63.114:/目标地址 => 目标系统id
打包:tar -cvf jdk.tar /文件 => 解压缩:tar -xvf jdk.tar =>打成tar包
tar -zxvf jdk.tar.gz
jar cvf hello.jar hello =>解压缩:jar xvf hello.jar 解压hello.jar至当前目录 =>打成jar包

linux下anzhuangjdk环境变量 vi /etc/profile => 在文件末尾添加
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_181
export CLASSPATH= : C L A S S P A T H : :CLASSPATH: :CLASSPATH:JAVA_HOME/lib/
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
验证:java -version / java / javac

查看版本号:cat /proc/version

0521号安装rabbitmq环境需要提前安装erlang

#yum search libtool
#yum search libtool-ltdl-devel
#yum install libtool
#yum install libtool-ltdl-devel
#yum install gcc-c++
#yum install erlang-doc

#tar –zxvf opt_src_22.0.tar.gz
#cd opt_src_22.0
#./configure --prefix=/app/redis/erlang
#make
#make install
b) 增加环境变量
#cd
#vim /etc/profile
最后一行添加
export ERLANG_HOME=/app/redis/erlang
export PATH= P A T H : PATH: PATH:ERLANG_HOME/bin
保存退出
#. .bash_profile
c) 验证erlang环境
#erl
打印版本信息
两次Ctrl+c退出
5.rabbitmq安装 密码:HF@csmq
a) 35和36分别安装
#cd
#tar –xvf rabbitmq-server-generic-unix-3.7.15.tar
#cd rabbitmq_server-3.7.15/sbin
#./rabbitmq-plugins enable rabbitmq_management
#./rabbitmq-server –detached
#./rabbitmqctl add_user admin HF@csmq
#./rabbitmqctl set_user_tags admin administrator
#./rabbitmqctl set_permissions –p / admin “.” “.” “.*”
b) 安装完成后,配置集群
切换到11.16.204.36服务器,停rabbitmq服务
#cd /app/redis/rabbitmq_server-3.7.15/sbin
#./rabbitmqctl stop
切换到11.16.204.35服务器,将11.16.204.35上的.erlang.cookie覆盖11.16.204.36上的.erlang.cookie;
如果不能使用scp命令则需要将11.16.204.35的/app/redis目录.erlang.cookie下载到部署机,然后上传到11.16.204.36的/app/redis目录
#cd
#scp /app/redis/.erlang.cookie redis@11.16.204.36:/app/redis/
切换到11.16.204.36服务器,启动rabbitmq服务
#cd rabbitmq_server-3.7.15/sbin
#./rabbitmq-server –detached
#./rabbitmqctl stop_app
#./rabbitmqctl join_cluster rabbit@主机名(11.16.204.35的主机名)
#./rabbitmqctl start_app
c) 验证rabbitmq集群配置
#./rabbitmqctl cluster_status
登陆rabbitmq管理台,查看配置状态,登陆用户admin/HF@csmq
http://11.16.204.35:15672、http://11.16.204.36:15672

0521号任务跑批:

Quartz => 调度器 Scheduler => {任务实例 job(jobDetail),触发器 trigger,(包括SimpleTrigger和CronTrigger)}
重要参数
Job中有:
JobDetail:在创建时指定绑定的job实例,

JobExecutionContext: JobExecutionContext中包含了Quartz运行时的环境以及Job本身的详细数据信息
Schedule调度执行一个Job的时候,就会将JobExecutionContext传递给该Job的execute()中,Job就可以通过JobExecutionContext对象获取信息

JobDataMap: JobDataMap实现了JDK的Map接口,可以以Key-Value的形式存储数据。
JobDetail、Trigger都可以使用JobDataMap来设置一些参数或信息,

trigger:
SimpleTrigger可以实现在一个指定时间段内执行一次作业任务或一个时间段内多次执行作业任务

CronTrigger功能非常强大,是基于日历的作业调度,而SimpleTrigger是精准指定间隔,所以相比SimpleTrigger,CroTrigger更加常用

当并发执行多个job实例时,需要引入JobFactory
在注入的时候,需要使用就是说jobinstance没有被spring代理到,需要在JobFactory中使用AutowireCapableBeanFactory 进行手动注入

@Component
public class JobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;

@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
    //调用父类的方法
    Object jobInstance = super.createJobInstance(bundle);
    //进行注入
    capableBeanFactory.autowireBean(jobInstance);
    return jobInstance;
}

}

0524号:数据库挂了,linux上磁盘满载,需要清理
df -hl:查看磁盘空间
du -h /目录 查看指定目录所占磁盘空间大小(连带改目录文件下的所有文件)
du -sh /目录 只查看改目录大小

0528号vue笔记

页面赋值时使用this全局变量,会造成二次赋值将之前的值覆盖
解决方案:定义一个局部对象,将对象的初始属性赋空,然后再进行转换

eg: let object = {
name:’’,
address:’’
}

使用数组在进行属性值变更的时候,会造成页面无法刷新,
需要使用vue提供的全局的方法set去动态的赋值刷新
eg: this.$set(arr,index,object);

0529 feign动态路由配置:

  1. FeignClient 中不要写url, 使用 @RequestLine修饰方法

  2. 调用地方必须引入 FeignClientConfiguration, 必须有Decoder, Encoder

  3. 调用类必须以构建函数(Constructor) 的方式注入 FeignClient 类

  4. 传入URL作为参数;

@FeignClient(name = “xxxxClient”)
public interface XxxFeignClient {

@RequestLine("POST")
ResponseDto notifySomething(URI baseUri, ApproveNotifyDto notifyDto);

@RequestLine("GET")
ResponseDto getSomething(URI baseUri, XxxDto xxxDto);

}

@Slf4j
@Component
@Import(FeignClientsConfiguration.class)
public class CallerService {

private XxxFeignClient xxxFeignClient;

@Autowired
public CallerService(Decoder decoder, Encoder encoder) {
    xxxFeignClient = Feign.builder()
            //.client(client)
            .encoder(encoder)
            .decoder(decoder)
            .target(Target.EmptyTarget.create(XxxFeignClient.class));
}

public ResponseDto notifySomething(String url, XxxxDto dto) throws URISyntaxException {
    return xxxFeignClient.notifySomething(new URI(url), dto);
}


public String test() throws URISyntaxException {
    String url = "http://localhost:9104/";
    return xxxFeignClient.getSomething(new URI(url));

}

0606linux用户操作:
新增用户(root权限下):useradd -d /app/datats -m datats =>指定目录下用户
密码:passwd datats
输入密码:

0608号rabbitmq的镜像队列:
Virtual host: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
all:表示在集群中所有的节点上进行镜像
exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params:ha-mode模式需要用到的参数
ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级

然后,只要新增一个名称符合queuename.*的队列,则其它节点上会有这个队列的镜像队列,在其它节点上执行命令

rabbitmqctl list_queues -p helloworld pid slave_pids

如下结果

rabbit@rabbit-b.2.9867.0 [rabbit@rabbit-a.3.4719.0, rabbit@rabbit-c.2.6826.0]

0610rabbitmq的多活模式集群配置:
106.13.148.11 <=> 106.13.63.114

1> 启动俩台服务器的mq,并且在./rabbitmq-plugins 命令下启动federation插件
./rabbitmq-plugins enable rabbitmq_federation 启动插件开启多活模式
./rabbitmq-plugins enable rabbitmq_federation_management

2> 界面UI操作实现frderation模式下的多活集群模式
在106.13.148.11上配置federation upsream ui => amqp://admin:123456@106.13.63.114:5672 =>此时148.11成为下游服务器,63.114成为上游服务器

3> 配置federation插件对应的交换机和队列(federation实现多个中心的数据同步可以依据交换机和队列俩种模式实现)
配置好federation upstream之后,可以给upstream配置对应的policy策略(策略中可以选择对应的交换机和队列匹配)

4> 需要注意的是在148.11上配置好对应的交换机和队列之后,在上游服务器63.114上也需要配置对应的交换机和队列,用于federation的参数绑定
初步的验证结果是:向上游服务器63.114上的指定交换机上发送数据到队列之后,数据会同步到下游服务器队列中
但是向下游服务器的指定交换机上发送数据时不会同步数据到上游的交换机

  name: 新增的federation联合插件的上游名称,这个可以随便取名。
  uri:上游federation联合rabbitmq的地址,上游是指订阅的服务器节点,它的定义方式有4种:
       1.amqp://server-name
       非SSL方式直接连接到上游服务器,不需要验证,如amqp://192.168.0.105
       2.amqp://user:password@server-name/my-vhost
       通过用户名和密码的非SSL方式连接到服务器,并且指定相应的virtual host,需要注意的是如果使用默认的virtual host /,那么IP地址后面什么都不需要写,如amqp://admin:admin@192.168.0.105,如果写成了amqp://admin:admin@192.168.0.105/,那么将会无法进行连接启动。
       3.amqps://user:password@server-name?cacertfile=/path/to/cacert.pem&certfile=/path/to/cert.pem&keyfile=/path/to/key.pem&verify=verify_peer
       通过用户名和密码+证书的方式进行SSL连接。
       4.amqps://server-name?cacertfile=/path/to/cacert.pem&certfile=/path/to/cert.pem&keyfile=/path/to/key.pem&verify=verify_peer&fail_if_no_peer_cert=true&auth_mechanism=external
       不使用用户名和密码,但需要证书的方式进行SSL连接。
   prefect count:一次性从上游rabbitmq服务器预期数据的最大数量,默认是1000。
   reconnect delay:网络连接失败后下次重连的等待时间,默认是5秒。
   Acknowledgement Mode:消息确认方式,on-confirm、on-publish和no-ack。含义分布如下:
        1.on-confirm
         默认的确认方式,它需要下游消费者进行消息确认后才删除,是最可靠的消息处理方式。不管是网络错误还是消息节点失败都不会丢失消息。这种方式处理最慢。
         2.on-publish
         上游节点将消息发送给下游节点后消息就进行确认了,这种情况在网络错误时可以进行重发,但是在消息节点失败时会丢失消息。
        3.no-ack
       不需要确认就可以进行消息删除。这种方式最不安全对于消息来说,但是却是最快的。
   Trust User-ID:是否信任从上游服务器传来的用户id,默认是yes,设置成no,将会清空从上游服务器传来的user id信息。 
   接下来是专门提供给federation exchange交换器的参数:
   Exchange:定义上游服务器的联合的exchange名称,默认情况下的取名与联合的exchange名称相同。
   max hops:消息在被放弃或者说被消费前消息可以传递的最大的联合federation 连接长度,默认是1,一般情况连接长度等于联合的节点数量-1。
   Expires:上游服务器节点保持节点信息的最长时间,单位毫秒,默认的是永久保存。
   Message TTL:在上游节点中消息未被传递时可以保存的时长,单位毫秒,默认是永久保存。
   HA Policy:检查一个联合exchange的上游queue中的x-ha-policy,用于确认该queue是否是一个HA的queue,默认是none表示不是一个HA的queue。

0610号关于云喇叭上线nginx的配置文件问题
设置参数配置
location /pushZlbz007{
proxy_pass https://open.smart4s.com/Api/Service/Device/Speaker/Mode/Transfer/PSBC/horn;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
}

location /api/ {
   # 配置跨域请求的转发访问
   add_header Acess-Controller-Allow-Origin *; 
   proxy_set_header X-Real_Ip $remote_addr;
   proxy_set_header X-Forwared-for $proxy_add_x_forwarded_for;
       # proxy_pass http://10.100.0.227:9090;
   proxy_redirect off;
    }

proxy_set_header Host :Host设置为 h t t p h o s t 时 , 则 不 改 变 请 求 头 的 值 H o s t 设 置 为 http_host时,则不改变请求头的值 Host设置为 httphostHostproxy_host时,则会重新设置请求头为proxy_pass对应的的Host信息

更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名

百度云密码:1qaz@WSX3edc$RFV => 0618

0704号linux上安装mysql => http://java.isture.com/db/mysql/CentosMySQL安装.html
rpm -qa | grep mysql

下载mysql源 / 删除
yum install mysql / yum remove mysql

下载mysql的repo 源(MySQL 5.7)
wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm

安装mysql57-community-release-el7-9.noarch.rpm包
sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm

安装MySQL
sudo yum install mysql-server

检查是否安装成功
rpm -qa |grep mysql

去/usr/libexec/目录下:

mysql -u root => 登陆用户

update user set host = ‘%’ WHERE user = ‘root’ //设置远程链接

grant all on . To ‘root’@’%’ //赋权限

alter user ‘root’ identified by ‘123456’; //重置root密码

flush privileges //刷新配置生效

在/var/lib/mysql下执行

service mysqld start //启动数据库 root / 123456

redis密码:5tgb^YHN

0706号数据同步平台代码复查注意点:

psbc-datasync-provider

1 在接收数据时,依据传送过来的数据以及内部的配置决定是否对消息进行广播模式的传播
if(“1”.equals(bean.getMsgType)){

}

ps -aux | grep 应用名称 => 查找进程
ps auxw | head -1;ps auxw |sort -rn -k4 | head -10 =>查找占用内存前40的进程

0709 PG12 数据库版本特性:

我有机会用到的pg12的新特性①支持 SQL/JSON path 特性②支持 Generated Columns 特性,这个检查下又没人用到。
还有就是cte(with语句)和分区性能的优化,这个要重新测试下性能

0710arabbitmq镜像队列的添加:^a : 表示匹配所有a开头的队列或则交换机

0714 linux下文件脚本的操作

1、加最高权限

chmod 775 文件名

2、加可执行权限

chmod +x 文件名

3 更改文件所属用户

chown datata:datats(用户) 文件目录

数据同步平台压测结果:930/tps

在4核8G内存的服务器上显示cpu使用率,60左右,数据库8核16G显示cpu使用率在 13% 左右

内存:provider:

106.13.63.114 上各中间件的密码 mq admin/123456 redis redis/5tgb^YHN mysql root/123456

0721号

1 关于rabitmq的链接模式channel和connection模式的变化
2 关于vue中子组件父组件的引用,传值ref,:tableData等

登录数据库:psql -U user_name -d database_name -h serverhost -p port -W password / -a -f init.sql => 执行sql文件

退出pg连接:\q

查看所有数据库:\l

切换数据库:\c database_name

查看当前数据库所有表:\d

执行sql(必须加;):select * from xxx ;

0804号

1 在使用vue中的组件进行父子组件传值的时候,当父组件的数据传入子组件之后,会因为子组件事先进行了刷新,没有带上父组件中传的数据
此时需要使用nextTick方法进行画图方法的init

在数据变化后要执行的某个操作,而这个操作需要使用随数据改变而改变的DOM结构的时候,这个操作都应该放进Vue.nextTick()的回调函数中。

vue 异步执行 DOM 更新。只要观察到数据变化,Vue 将开启一个队列,
并缓冲在同一事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发,
只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作上非常重要。
然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。
Vue 在内部尝试对异步队列使用原生的 Promise.then 和MessageChannel,如果执行环境不支持,会采用 setTimeout(fn, 0)代替。

augular安装步骤:

npm install -g @angular/cli
npm install gulp -g

//重置安装node0-sass
cnpm uninstall --save node-sass
cnpm install --save node-sass

gulp serve:dist

0817 Sofaboot组件:

SOFARPC rpc-sofa-boot-starter
SOFATracer tracer-sofa-boot-starter
SOFALookout lookout-sofa-boot-starter

SOFABoot 扩展组件

健康检查 healthcheck-sofa-boot-starter
模块化隔离 isle-sofa-boot-starter
类隔离 sofa-ark-springboot-starter
测试扩展 test-sofa-boot-starter

SOFABoot中的模块化开发,支持并行的模块启动,每个模块启动就是一个jar
当一个SOFABoot应用启动的时候,会生成一个Root ApplicationContext,它可以被各个模块的ApplicationContext识别到

0820 filebeat+kafka+es实现的监控配置

filebeat中的filebeat.yml实现的配置信息要素

filebeat.prospectors #用于定义数据原型,检测日志或是发现日志

  • input_type: log #指定数据的输入类型,默认为log,另外还可以指定stdin
    paths: #自定需要监控的日志文件路径;可以是完整的日志路径也可以是模糊的匹配格式
    • /var/log/messages #指定系统日志位置
      fields: #定义日志来源,可以添加自定义字段,其实就是定义Kafka消息队列的topic主题名称,如果kafka消息队列中没有该名称,会自动生成
      log_topic: test
      paths: #与上述一样定义需要监控的日志文件路径,不够这次是定义apache-web服务的日志
    • /etc/httpd/logs/*
      fields: #定义日志来源,生成kafka消息队列topic主题
      log_topic: webapache
      processors: #这个地方需要注意,此配置是将日志输出格式过滤掉,一般情况下,一些无用的日志字段我们可以删除,只看关键性的信息
  • drop_fields:
    fields: [“beat”, “input_type”, “source”, “offset”,]
    name: “192.168.37.134” #设置filebeat收集日志中对应的主机名称,,如果设置为空,这使用该机器的主机名称,这里这是本地IP,便于区分多台主机的日志信息
    output.kafka: #多种输出类型,可支持想kafka,logstash,elasticsearch输出日志信,在这里是将日志信息输出到Kafka中,
    enabled: true 启动该模块
    hosts: [“192.168.37.134:9092”, “192.168.37.135:9092”, “192.168.37.136:9092”] #指定输出数据到kafka集群上,地址与端口号想对应
    version: “0.10”
    topic: ‘%{[fields][log_topic]}’ #指定要发送数据到kafka集群的哪个topic,与上述的"fields: log_topic:"相对应,这是6.x的配置
    partition.round_robin: #开启kafka的partition分区
    reachable_only: true
    worker: 2
    required_acks: 1
    compression: gzip #压缩格式
    max_message_bytes: 10000000 #压缩格式字节大小
    logging.level: debug #日志类型为debug

0824号:kafka的安装需要注册中心zookeeper

1 解压zookeeper-3.4.13.tar.gz

tar -zxvf zoopeeker-3.4.13.tar.gz

2 进入解压包的conf目录下,修改zoo.sample.cfg文件名为zoo.cfg

mv zoo.sample.cfg zoo.cfg

3 vim zoo.cfg

修改 dataDir=/自己定义的文件目录

集群配置的话需要新增节点的ip加端口

server.1 = ip+port
server.2 = ip+port
server.3 = ip+port

然后到自己的定义的文件目录下新建myid文件,在里面修改内容为 1

cd /自己定义的文件目录

vim myid

i 1/2/3(三台机器分别填写1,2,3) esc : wq 保存退出

4 启动zookeeper

进入解压的文件的bin目录

./zkServer.sh start => 启动zookeeper

./zkServer.sh stop => 停止zookeeper

客户端登陆zookeeper进行节点的增删改查

./zkCli.sh -timeout 500 -server 127.0.0.1:2181

查询节点:ls /brokers/ids

删除节点:delete /brokers/ids/1

创建: create /node1

集群配置的情况就是多台节点按上述步骤依次修改即可

Kafka的安装配置

1 解压进入目录
tar -xzf kafka_2.11-2.0.0.tgz
cd kafka_2.11-2.0.0

2 进入config中修改server.config

修改:
broker.id = 1
delete.topic.enable=false
auto.create.topic.enable=true
group.initial.rebalance.delay.ms=0

listeners=PLAINTEXT://ip:9092

zookeeper.connect=单机或则集群zookeeper地址

zookeeper.connnection.timeout.ms=6000

3 启动kafka

./kafka-server-start.sh config/server.properties

4 创建topic

./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

5 验证topic是否已经创建

./kafka-topics.sh -list -zookeeper localhost:2181

elasticsearch安装部署

1 解压包 tar -zxvf elasticsearch-6.8.5.tar.gz

2 进入对应的解压文件目录,修改配置文件

cd /conf

vim elasticsearch.yml

path.data: /自定义目录
path.logs: /自定义目录

可配置密码修改:
xpack.security.enable: true
xpack.security.transport.ssl.enable: true

重置密码:./bin/elasticsearch-setup-passwords interactive 自定义密码

启动 进入对应的bin目录下:

./elasticsearch -d => 后台启动

0903kafka学习日志:

因为每条消息都被append到该partition中,是顺序写磁盘,因此效率非常高(经验证,顺序写磁盘效率比随机写内存还要高,这是Kafka高吞吐率的一个很重要的保证)

0907 EventBus消息生产订阅模式

public class EventBusCenter {

private static final EventBus eventBus = new EventBus();

private EventBusCenter() {

}

public static EventBus getInstance() {
    return eventBus;
}

public static void register(Object obj) {
    eventBus.register(obj);
}

public static void unregister(Object obj) {
    eventBus.unregister(obj);
}

public static void post(Object obj) {
    eventBus.post(obj);
}

}
//注册ReceiveNewKeyEvent事件
//热key探测回调关注热key事件
EventBusCenter.register(new ReceiveNewKeySubscribe());

/**

  • 监听有新key推送事件

  • @author wuweifeng wrote on 2020-02-21

  • @version 1.0
    */
    public class ReceiveNewKeySubscribe {

    private ReceiveNewKeyListener receiveNewKeyListener = new DefaultNewKeyListener();

    @Subscribe
    public void newKeyComing(ReceiveNewKeyEvent event) {
    //当发送ReceiveNewKeyEvent事件执行是,监听程序会在这里进行相关的逻辑执行

      HotKeyModel hotKeyModel = event.getModel();
        if (hotKeyModel == null) {
            return;
        }
        //收到新key推送
        if (receiveNewKeyListener != null) {
            receiveNewKeyListener.newKey(hotKeyModel);
        }
    }
}
//发送ReceiveNewKeyEvent事件
EventBusCenter.getInstance().post(new ReceiveNewKeyEvent(model));

CopyOnWriteArrayList  用于读多写少的容易

//按照hash算法选择worker的集群中的具体哪一个节点信息
public static Channel chooseChannel(String key) {
        if (StrUtil.isEmpty(key) || WORKER_HOLDER.size() == 0) {
            return null;
        }
        INT INDEX = MATH.ABS(KEY.HASHCODE() % WORKER_HOLDER.SIZE());

        return WORKER_HOLDER.get(index).channel;
}

  public static int abs(int a) {
        return (a < 0) ? -a : a;
    }

0925号 es的基本数据类型:

字符串常用类型:text类型会分词 keyword类型不会分词

0927 关于redis的地址绑定

所以:综上,如果绑定到0.0.0.0那么所有机器上的地址都可以访问服务,如果绑定到特定的ip那么只能是特定的ip能够到达redis服务
IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。
在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
0.0.0.0是一个特殊的IP地址,指的是本机的全部IP地址。如果一个应用绑定了0.0.0.0上的某个端口,意味着只要是发往这个端口的请求,不管是来自哪个IP地址,都会由这个应用处理。一般服务器都是多网卡的

-------------------分享几个优秀的vue模板---------------------------

http://cgq666.gitee.io/admin-vue/#/goods/offindex

https://panjiachen.github.io/vue-element-admin/#/dashboard

http://101ycy.com:6001/sysAcl

https://lin-xin.gitee.io/example/work/#/form

http://demo.open.renren.io/renren-fast/#/sys-log

12.2号 vue2.x升级vue3.0

第一步,安装 vue-cli:

npm install -g @vue/cli
注意以下命令是错误的!

npm install -g vue
npm install -g vue-cli

安装成功后,我们即可使用 vue 命令,测试方法:

$ vue -V
@vue/cli 4.3.1

第二步,初始化 vue 项目:

vue create vue-next-test 可能会出现

vue : 无法加载文件 C:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅

方案: 1 关闭编辑器,以管理员方式运行试试

   2、在终端执行:get-ExecutionPolicy,显示Restricted(表示状态是禁止的)
   3、在终端执行:set-ExecutionPolicy RemoteSigned
   4、在终端执行:get-ExecutionPolicy,显示RemoteSigned 表示可执行

windows下rocketmq的安装:

确保配置rocketmq的环境变量之后开始执行以下命令启动mq

进入 D:\java\rocketmq\rocketmq-all-4.3.0-bin-release\bin 下 执行

start mqnamesrv.cmd 启动服务

start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=ture

nohup sh bin/mqnamesrv &

nohup sh bin/mqbroker -n 106.13.108.254:9876 -c ./conf/broker.conf autoCreateTopicEnable=ture &

nohup sh bin/mqbroker -n 106.13.108.254:9876 autoCreateTopicEnable=ture &

./mqbroker -n 106.13.108.254:9876 autoCreateTopicEnable=ture &

nohup sh ./bin/mqbroker -c ./conf/broker.conf &

手动创建rocketmq的主题

./mqadmin updateTopic -n 106.13.108.254:9876 -b 106.13.108.254:10911 -t TopicTest

rocketmq-console打包 视图

mvn clean package -Dmaven.test.skip=true

java -jar rocketmq-console-ng-1.0.0.jar --server.port=7010 --rocketmq.config.namesrvAddr=106.13.108.254:9876

–server.port=7010 --rocketmq.config.namesrvAddr=127.0.0.1:9876

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值