kafka基础知识
Kafka概述定义 Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。 Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event StreamingPlatform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 消息队列目前企业中比较常见的消息队列产品主要有 Kafka、ActiveMQ 、RabbitMQ 、RocketMQ 等。 在大数据场景主要采用 Kafka 作为消息队列。在 JavaEE 开发中主要采用 ActiveMQ、RabbitMQ、RocketMQ。 传统消息队列的应用场景传统的消息队列的主要应用场景包括:缓存消峰、解耦和异步通信。 消息队列的两种模式消息队列的两种模式 区别: 点对点消费 -> 消息只能发布到一个主题, 消费完成就删除消息,且只有一个消费者 发布订阅模式 ->...
混沌工程和故障演练
前言微服务架构场景中,应用系统复杂切分散。长期运行时,局部出现故障时不可避免的。如果发生故障时不能进行有效反应,系统的可用性将极大地降低。 什么是故障演练 故障演练是指模拟生产环境中可能出现的故障,测试系统或应用在面对故障时的反应和响应能力。 故障演练可以模拟各种故障情况(网络故障、数据库故障、服务过载,CPU或内存异常等)。 什么是混沌工程 混沌工程是稳定性方面的工程学科,英文叫作 Chaos Engineering,是由网飞公司最先提出的,因为最开始混沌工程被叫作 Chaos Monkey, 就像一只猴子在系统中捣乱一样,以至于到现在每次出现混沌工程都会提及一只捣乱的猴子的比喻。但是稳定性测试却不是网飞独创的,在混沌工程之前,就 已经有很多关于稳定性方面的研究了。随着测试系统的业务逻辑越来越复杂,交付团队不断地通过细化测试、增加发布环节以及各种流程管控,来保障的系统 的稳定性,但是的系统还是会出现各式各样的故障,混沌工程就是本着提早暴露系统脆弱环节的理念,以提高系统的稳定性为目的而出现的。 为什么需要故障演练故障演练是微服务架构下非常重要的实践,用以测试系统或应用在面对故...
记录k3s的升级过程(v1.21.7+k3s1 -> v1.24.3+k3s1)
参考官网链接: https://docs.rancher.cn/docs/k3s/upgrades/_index/ 注:如果要对server/master节点升级,绝对不要在流量高峰场景下进行 如果不希望清理所有容器及网络组件,不要轻易使用k3s-killall.sh脚本 官方文档描述升级过程为高可用模式,但最好还是在流量低峰期进行升级 否则可能会导致部署单元多个pod都部署在同一节点, 然后进行了pod转移, 如下 k8s在1.22版本新增了安全sysctlc参数net.ipv4.ip_unprivileged_port_start, 且需要将内核版本升级至4.4以上: https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/#enabling-unsafe-sysctls 我的sysctl配置 1234567891011121314151617181920# 将桥接的IPV4流量传递到iptables的链, Disable the swap...cat > /etc/sysc...
使用AlertManager进行告警管理
rancher官方文档 一个不错的Prometheus中文网站 Prometheus典型的告警规则1234567891011121314151617181920groups: - name: wechat-rule-group rules: - alert: wechat-rule annotations: summary: |- ==========begin=========== [报警名称]:{{ $labels.alertname }} [报警实例]:{{ $labels.instance }} [报警命名空间]:{{ $labels.namespace }} [报警pod]:{{ $labels.pod }} [报警阈值]:{...
nvm的安装及使用
NVM是一个非常方便的node包管理工具,可以实现在NodeJS 各个不同版本之间自由的进行切换。下面,介绍用root权限安装NVM工具。到2021年7月,nvm的最新版本为v0.39.1。 Linux安装nvmgithub地址:https://github.com/nvm-sh/nvm 1.下载包12cd /usr/localwget --no-check-certificate https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz 2.解压包1tar -xvf v0.39.1.tar.gz 在这里拿到文件的安装目录,放哪里无所谓 3.配置bashrc文件 export NVM_DIR="/usr/local/nvm-0.39.1" 改成自己的目录 123456#编辑文件vim ~/.bashrcexport NVM_DIR="/usr/local/nvm-0.39.1"[ -s "$NVM_DIR/nv...
maven私服nexus3.x环境配置
安装123456789101112131415mkdir -p /usr/local/nexus3/nexus-datachown -R 200 /usr/local/nexus3/nexus-datadocker run -d \--privileged=true \--name=nexus3 \-u root \-p 5000:5000 \-p 8081:8081 \-v /usr/local/nexus3/nexus-data:/nexus-data \-e INSTALL4J_ADD_VM_PARAMS="-Xms512M -Xmx512M -XX:MaxDirectMemorySize=2048M" \docker.io/sonatype/nexus3登录仓库页面:http://ip:8081默认账号admin,初始密码则存在容器中的/nexus-data/admin.password文件中。 有默认的这几个仓库: maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar mave...
SpringBoot整合Kafka多数据源
配置文件12345678910spring.kafka.wh.bootstrap-servers=192.168.1.130:9092,192.168.1.130:9093spring.kafka.wh.consumer.group-id=kafka_demospring.kafka.wh.consumer.enable-auto-commit=falsespring.kafka.es.consumer.auto-offset-reset=latestspring.kafka.es.bootstrap-servers=192.168.1.130:9094spring.kafka.es.consumer.group-id=kafka_demospring.kafka.es.consumer.enable-auto-commit=falsespring.kafka.es.consumer.auto-offset-reset=latestlog-topic-name=test KafkaWhConfig12345678910111213141516171819202122232425...
SpringBoot整合mysql多数据源
配置文件1234567891011121314151617181920212223242526272829#database1spring.datasource.wh.type=com.zaxxer.hikari.HikariDataSourcespring.datasource.wh.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.wh.jdbcUrl=jdbc:mysql://192.168.1.130:3306/wh?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8&useSSL=false&useUnicode=true&characterEncoding=UTF-8spring.datasource.wh.username=rootspring.datasource.wh.password=rootspring.datasource.wh.minimum-idle=1spring.datasourc...
转载:nf_conntrack: table full, dropping packet
netfilter/conntrack 相关内核参数往往是用 Linux 服务器的互联网小公司业务量上去之后遇到的第 3 个 “新手怪”。(第 1 位:进程可用的 FD 不足,第 2 位:IP 临时端口不足 + TIME_WAIT 状态的连接过多导致无法建立新连接) 很多人以为 Linux 经过这么多年优化,默认参数应该 “足够好”,其实不是。默认参数面向 “通用” 服务器,不适用于连接数和访问量比较多的场景。 症状服务器负载正常,但请求大量超时,服务器/应用访问日志看不到相关请求记录。 在 dmesg 或 /var/log/messages 看到大量以下记录: 1kernel: nf_conntrack: table full, dropping packet. 原因服务器访问量大,内核 netfilter 模块 conntrack 相关参数配置不合理,导致 IP 包被丢掉,连接无法建立。 详细nf_conntrack 模块在 kernel 2.6.15(2006-01-03 发布)被引入,支持 IPv4 和 IPv6,取代只支持 IPv4 的 ip_con...
关于k8s的资源分配/限制
相关概念引自kubesphere - requests与limits 简介为了实现 K8s 集群中资源的有效调度和充分利用, K8s 采用requests和limits两种限制类型来对资源进行容器粒度的分配。每一个容器都可以独立地设定相应的requests和limits。这 2 个参数是通过每个容器 containerSpec 的 resources 字段进行设置的。一般来说,在调度的时候requests比较重要,在运行时limits比较重要。 一些本地临时存储的配置 **注: ** 当容器申请内存超过limits时会被oomkill,并根据重启策略进行重启。而cpu超过limit则是限流,但不会被kill 由于CPU资源是可压缩的,进程无论如何也不可能突破上限,因此设置起来比较容易。对于Memory这种不可压缩资源来说,它的Limit设置就是一个问题了,如果设置得小了,当进程在业务繁忙期试图请求超过Limit限制的Memory时,此进程就会被Kubernetes杀掉 1234567891011121314# requests: 可以使用requests来设置各容器需...
