4. 基础数据结构

本章将讲解基础数据结构的实现。众所周知,程序=数据结构+算法。数据结构为算法提供服务,算法围绕数据结构操作。因此,掌握数据结构并用代码实现是至关重要的。

阅读更多

基于Telegraf+Influxdb+Prometheus+Grafana的服务器看板部署概览

0. 方案比较

由于被监控唯一端口暴露,所以需要基于 push 的方案。

0.1 Prometheus

Prometheus 中有一个 Pushgateway 组件,大致流程为被监控节点实现脚本将数据推送到 Pushgateway,Prometheus 从 Pushgateway pull 数据:

img

优点

  1. 开源框架成熟;
  2. PromQL 支持复杂的查询和分析。

缺点

  1. 多个节点汇总到 Pushgateway,如果它挂了就全完了;
  2. Prometheus 拉取状态只针对 Pushgateway,无法对所有目标有效;
  3. Pushgateway 会持久化数据,如果监控下线,Prometheus 会拉取到旧的数据,因此需要手动清理 Pushgateway 不要的数据。

0.2 InfluxDB+Telegraf

在被监控节点上设置 Telegraf 代理,将数据 push 到 InfluxDB 的 API。

优点

  1. Telegraf 轻量级,易于部署;

缺点

  1. 与 Pushgateway 相比,Telegraf 可能会有轻微延迟。
  2. 可能不如 Prometheus 灵活度高。
  3. Influxdb 查询效率低。

3. Telegraf+Influxdb+Prometheus

使用 Telegraf 获取并推送数据到 Prometheus 。使用 Influxdb 做可持久化存储。

优点

  1. 继承了前两者的优点。
  2. 使用 Prometheus 查询,效率高。

1. 监控节点部署 InfluxDB

  1. 新建文件夹 /data/influxdb
  2. 执行 docker run -d --name=influxdb -p 8086:8086 -v /data/influxdb:/root/.influxdb2 influxdb:1.8-alpine
  3. 部署的是1.8 版本,不用可视化。
  4. docker exec -it influxdb /bin/bash 进入容器, influx 启动 Influxdb 命令行交互。
  5. CREATE DATABASE mydb; CREATE DATABASE telegraf; 创建数据库

2. 监控节点部署 Prometheus

  1. 创建 /data/prometheus/prometheus.yml

  2. 执行 docker run -d -p 9090:9090 -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name=prometheus prom/prometheus:v2.47.2 --enable-feature=remote-write-receiver --config.file=/etc/prometheus/prometheus.yml --query.max-concurrency=10 --storage.tsdb.retention.time=6d

    (–web.enable-remote-write-receiver/–enable-feature=remote-write-receiver)

3. 被监控节点部署 telegraf

  1. wget https://dl.influxdata.com/telegraf/releases/telegraf-1.28.3_linux_amd64.tar.gz

  2. tar xf telegraf-1.28.3_linux_amd64.tar.gz

  3. vim ~/.bashrc 添加 export TELEGRAF_PATH=/data/telegraf/telegraf-1.28.3/usr/binsource ~/.bashrc

  4. $TELEGRAF_PATH/telegraf version 查看版本
  5. 编写 telegraf.conf 文件,样例
  6. /data/telegraf/telegraf-1.28.3/usr/bin/telegraf --config /data/telegraf/telegraf.conf 启动服务

4. 监控节点部署 Grafana

  1. 建立存储目录 mkdir /data/grafana & chmod 777 -R /data/grafana
  2. 执行 docker run -d -p 3000:3000 --name=grafana -v /data/grafana:/var/lib/grafana grafana/grafana:main

  3. 进入登录界面,输入初始密码 admin/admin 登录。

  4. 建立 Grafana 和 Prometheus 的连接
  5. 建立看板

Day1 模拟,枚举,递归,贪心,分治,二分三分

0.简介

本文介绍竞赛中最基本的算法:模拟,枚举,递归,贪心,分治,二分/三分。

其中,模拟和枚举是最基本的。它甚至可以说不是一个算法,而是考察选手的思维逻辑能力和代码实现能力。所以对于这一部分,本文不做讲解。读者可以从各大OJ寻找模拟题进行训练。值得注意的是,模拟题虽然只考察语法,但是它的实现难度未必简单。如著名的斗地主、猪国杀等等。

接下来我们介绍后面的四个基础算法。

阅读更多