Other

Linux命令行配置RIAD5

环境准备: 系统: redhat6.9 硬盘:300G*3 SAS MegaCli是一款管理维护硬件RAID软件,可以用来查看raid信息等 安装MegaCli rpm -ivh Lib_Utils-1.00-09.noarch.rpm rpm -ivh MegaCli-8.02.21-1.noarch.rpm 新硬盘加入服务器前确认 加入新硬盘,并查看硬盘状态 查看硬盘信息 Adapter#0 -----raid卡控制器编号 Enclosure Device ID: 32 -----外壳设备ID,也就是raid卡的ID号 Slot Number: 4 ------磁盘槽位号 PD Type: SAS ------磁盘类型 Raw Size: 279.396 GB [0x22ecb25c Sectors] ------大小 Firmware state: Online, Spun Up ------磁盘状态 创建RAID5,由32:2、32:3、32:4三块磁盘组成 查看硬盘状态 格式化/dev/sdb。并挂载至/opt/app

浅谈Kafka2.8+在Windows下的搭建与使用

前言:  周末空闲时间无意找到了一套个性化推荐的源码,整体项目运用了SSH,HDFS,Flume,Hive,Kafka,Spark,Scala等。运行时,本来通过spark计算业务埋点数据时,却发现本地没有Kafka。因为我一直也没使用过Kafka,所以也作为新人,浅谈以下Kafka的环境安装与分别在PHP,Scala中的使用。  对比: 1. 横向,相比其他中间件。  关于kafka与其他消息中间件的比较,网上很多的博主,不管是从运行原理还是中间件架构都有很详细的介绍。因为我平时用Rabbit居多,在没有看别人介绍前。Rabbi比Kafka于PHP开发更友好。因为kafka除了PHP的composer依赖包常年不更新外,kafka在windows下的PHP扩展需要自己编译。从这一点上看Rabbit就更适合业务性的消息队列,更别说他还有事务等对消息消费的高保障。kafka在数据增量方面更具优势,所以多数在大数据和推荐系统中都有运用。 2. 纵向,相比其他版本。  如标题所见,这里主要是2.8+与之前版本的对比。因为在2.8以前,kafka安装前需要安装zookeeper。这里只是一小个区别,其他的新特性具体参考kafka官方文档,因为我看到网上关于kafka的安装文章,别人都会安装zookeeper,所以这里就特别说明以下,以及后面启动时与其他人博客的不同。 安装: 1. 下载  下载地址可以在浏览器搜索kafka官网自行下载,见上图。 2. 配置  下载完后目录结构如下,进入config, 主要对zookeeper.properties和server.properties进行分布节点,服务端口,日志存放目录等等的设置,前期也是什么不用管保持默认配置进行启动。  3. 启动  也不知道是不是从2.8开始,bin目录下多了一个windows。所以在windows下启动进入到改目录,运行如下命令执行bat文件。注意启动的时候先zookeeper后kafka,停止的时候先kafka后zookeeper。 (1). zookeeper启动 zookeeper-server-start.bat ..\..\config\zookeeper.properties & (2).kafka启动 kafka-server-start.bat ..\..\config\server.properties & (3). 其他命令 查看所有topics kafka-topics.bat --list --zookeeper localhost:2181 新增topics kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test  Kafka存储机制: topic中partition存储分布 partiton中文件存储方式 partiton中segment文件存储结构 在partition中通过offset查找message  图形化工具:  前期可以借助图形化工具快速具象的查看kafka的消息数据,也能便于理解其基本操作流程。以下推荐一块桌面端工具——offsetexplorer,可以在网上搜索下载,当然web控制台也不错,比如kafka manager。

订阅图书分享--Linux命令行圣经

豆瓣评分9.0,时隔6年,“Linux命令行圣经”新版终于来了! 有好书上市的 图灵教育 2022-04-13 16:20 收录于话题 #linux2个 #shell脚本编程1个  2016年初上市,这本《Linux命令行与shell脚本编程大全(第3版)》很快得到读者的喜爱。转眼间,6 年过去了,在技术发展迅速的今天,它仍然被读者称为“圣经”,在 Linux 学习者心中占有重要地位。  历经多年,无论是美亚还是豆瓣,都可以看到读者对它的认可。这本书涵盖几乎所有常用的 shell 命令,无论是入门 Linux 还是作为工具书都极力推荐。      几经耕耘 最新版即将出炉  虽然取之精华,但是不少读者反馈部分内容已经略显时代痕迹。通过我们不断跟外方出版社积极沟通,最终拿到了它的最新版版权。经过译者和编辑老师,加班加点地耕耘,目前这本书已经颇具规模。   (暂定封面,以最终出版为准) 这期间收到很多读者的催更,目前这本书还在精心编辑中,接近尾声。为了让迫不及待得读者一睹为快,我们决定 4月13日 起,提前连载这本书。  连载形式: 每周更新三章内容,连续更新,随买随看,超前内容体验。 连载权益: 专属社群打卡学习、提前解锁电子书阅读权益、获取本书电子版、成为首批收到本书的用户。  另外,在此过程中,大家都很关注勘误的问题。书中有任何勘误您都可以反馈给我们,编辑老师会在出版之前修正这些勘误,勘误贡献多的人还会获得图灵颁发的特别奖励。  如果你正在学习 Linux 命令行,那这本巨著一定不要错过。   更合理的编排 更全面的内容  新版将引领你从 Linux 命令行基础到更为复杂的主题(比如编写自己的 shell 脚本)。全书更合理的设置,内容一共分为四部分,每部分都基于之前的内容。通过从头到尾的阅读,可以实现 Linux 学习的连续。  第一部分  假定你已经拥有了可用的 Linux 系统,或者正设法获取 Linux 系统。  第1章描述了构成整个 Linux 系统的各个部分,说明了 shell 是如何融入其中的。在介绍过 Linux 系统的基础知识之后,这一部分相继探讨了:

mysql-数据库创建实例

Province (省份信息表) 字段 类型/长度 空 主键 外键 默认值 约束 说明 ID Number 否 是 否 无 唯一性 主键,使用序列填充 NAME Varchar2(64) 否 否 否 无 唯一性 省份名称 Municipality Numbre 是 否 否 1 1 或 0

Archlinux中virtualbox使用usb

安装拓展功能 根据virtualbox版本选择对应的拓展包。 https://download.virtualbox.org/virtualbox/6.1.32/Oracle_VM_VirtualBox_Extension_Pack-6.1.32.vbox-extpack 安装增强功能 将用户添加到vboxusers sudo usermod -G vboxusers xxx 在设置中选择使用的usb 勾选,确定

redis主从同步原理---原生以及 基于binlog的主从同步不

1. 背景 上半年我们使用RocksDB做存储引擎,实施了Redis数据实时落地的项目,实现了在兼容redis协议的前提下,管理超出内存大小的数据集。 在主从同步方面,我们沿用了Redis原有的方案,该方案在实际运营中应对不良的网络状况显得很无力,因此我们在数据落地的基础上,为Redis开发了一套新的主从同步机制。 2. Redis原生同步方式 主从数据同步分一般两步走:同步已有的全量数据,和同步增量数据。同步的全量数据必须是master数据集的point-in-time的快照;增量数据则从快照完成的瞬间算起。如图(一), 图 (一) Redis原生主从同步机制 slave给master发送sync命令请求同步数据,master收到sync命令后,将内存数据镜像(point-in-time)保存为dump.rdb文件,同时将新进来的写请求保存到client-buffer中;master首先将生成的内存镜像文件dump.rdb同步给slave(全量数据同步),完成后,将client-buffer中累积的写请求同步slave(增量数据同步)。这个机制足够简单,但是在实际运营中会遇到一些问题: slave一旦同master断开,重连后如果不能做psync(实际运营中psync基本没有成功过),就要同步master的全量数据 实际运营中一般会做多实例部署,一台Z3服务器部署20 - 40 不等的实例数,一旦网络闪断,导致几十个master实例同时fork做bgsave,场面感人; 通常结果就是内存不够,做bgsave的进程被kill掉 如果同步全量数据时,master实例上写请求量大,使client-buffer占用内存超限,master会主动断开和slave的连接,这样之前的全量数据就白做了 这里的根本矛盾是Redis本身定位和我们的要求有偏差。Redis所有操作都是基于内存, 数据存在内存,用于断开重连的backlog保存在内存,主从同步时的增量数据保存在内存,可每台服务器内存就那么多,能存储的数据量是有限的;而我们在更多场景下,要求Redis在提供足够性能的前提下,存储尽量多的数据。我们需要在性能和数据量,以及可运营性之间做折中。 3. 基于binlog的数据主从同步 前面已经提到,我们已经实现Redis数据实时落地到RocksDB中。 这里进一步,我们将数据的修改记录以一定的格式(binlog)落入RocksDB中,并实现基于binlog的主从数据同步。 3.1 落地binlog 我们对Redis每种具有写语义的命令定义一种binlog,注意是一种,而不是一条。 总共定义了16中binlog, 如图(二):图 (二) 十六种binlog类型 所有类型binlog都需要满足两个条件, 原因后面展开: 每条binlog需要记录它所修改的数据存储于RocksDB中的key 一条binlog修改的数据不能对应RocksDB中多对key/value 3.2 基于binlog的主从同步 前面提到过,主从数据同步分两步,全量数据同步和增量数据同步。master收到一个新的slave的同步请求时,master给RocksDB做个快照,快照中数据分两部分,Redis的数据集和写数据时生成的binlog。master把快照中数据集发给slave即实现全量数据同步;master记录快照中最大的binlog序列号MaxSeq, 把序列号从MaxSeq+1开始的binlog逐条发给slave即可实现增量数据同步。流程很简单,如下图: 图 (三) 基于binlog的主从数据同步 3.3 主从连接断开处理 我们已经知道Redis主从同步机制要求slave断开重连master后,同步(psync绝大多数情况下不管用)master的全量数据。这个机制的问题上面已经提过。 如何解决呢? 很直观,如果slave重连后,能够从断开的位置开始,继续同步master数据,这是最好的。 为了实现这一点,我们以master的视角将slave的同步过程划分为四个状态,图(四)描绘了四个状态之间的转换图: REPL_PASTE,master和slave做全量同步 REPL_RESUME,slave全量同步时与master断开后重连 REPL_FOLLOW,slave和master做增量同步 REPL_OUTSYNC,master无法找到slave所需要的binlog 图(四) slave同步状态转换图 具体看下每个状态下slave和master断开后重连,如何做续传的: case 1: 正在做全量同步的slave断开与master连接,重连后的续传 一个空slave实例连上master开始做全量数据同步, slave处于REPL_PASTE状态。 master创建snapshot 1,如下图, 图(五) 空的slave实例连上master同步全量数据

Redis - 什么是跳表?(图解)

跳表是什么   跳表结合了链表和二分查找的思想 由原始链表和一些通过“跳跃”生成的链表组成 第0层是原始链表,越上层“跳跃”的越高,元素越少 上层链表是下层链表的子序列 查找时从顶层向下,不断缩小搜索范围   跳表的作用   跳表的操作  

CentOS7.9 Nginx采坑记录,IPv4 forwarding is disabled. Networking will not work....

docker 使用Nginx做负载的时候,由于自己是个新手,第一次接触docker以及nginx,踩了一个坑,在此记录下。 1、安装docker 2、安装nginx 3、宿主机与容器nginx配置文件挂载 4、配置负载均衡 upstream ytest { #后端目标服务器 server 192.168.182.132:8500; server 192.168.182.131:8500; } server { #前端接受流量入口 listen 80; server_name localhost; location / { proxy_pass http://ytest; } } 问题就发生在这块,目标两个服务器也是虚拟机,里面安装了consul,但是怎么试,都不起作用,后来我多次删除、创建容器,终于提示错误了 然后我进入容器里面,访问了外网,发现确实不好用。 接下来开始一顿操作..... 5、安装vim(如果已安装直接执行6) yum -y install vim* 6、修改宿主机配置 #如果vim提示找不到,则执行上安装vim vim /etc/sysctl.conf #配置转发 net.ipv4.ip_forward=1 #重启服务,让配置生效 systemctl restart network #查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功 sysctl net.ipv4.ip_forward #重启docker服务 service docker restart 至此需要的操作就完事了,再次进入容器,访问下外网,例如百度啥的,应该就好用了。也访问了负载后端服务器,都可以访问。然后通过浏览器访问nginx负载地址,已经好用了。

mysql 如何查看SQL语句执行的时间

查看执行时间步骤: 1.如果已经执行了SQL语句,那么可以输入show profiles查看; //profiles 是执行sql语句的记录表,里面有duration(持续时间)代表执行时间 2.如何看不到:则show variables; 查看profiling变量是否为on(也就是开启)状态;查看是否打开了profiles功能,默认是关闭的 3.如果是off, 则执行命令 set profiling=1; 4.执行SQL语句; 5.show profiles -- 就可以查询到sql语句的执行时间。  

ubuntu docker pull 失败 Error response from daemon: Get https://registry-1.docker.io/v2/

问题: ubuntu@VM-3-4-ubuntu:~$ docker pull tensorflow/tensorflow:2.3.4-gpuError response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)  方案1 ---最后生效了,因为用的腾讯云的服务器,之前添加的都没用,直到添加了腾讯云镜像地址。。。 修改/etc/docker/daemon.json文件,并重启docker服务 { registry-mirrors: [https://registry.docker-cn.com,http://hub-mirror.c.163.com,https://mirror.ccs.tencentyun.com] }  ubuntu@VM-3-4-ubuntu:/etc/docker$ docker info Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.8.1-docker) scan: Docker Scan (Docker Inc., v0.17.0) Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.