目录

关注的前沿技术

云计算和容器平台

Nix和NixOS

Nix 是一个声明式的软件包管理器,用户需要通过某些配置声明好期望的环境状态,而 Nix 负责达成这个目标。

简单解释下什么是「声明式配置」,它是指用户只需要声明好自己想要的结果——比如说希望将 i3 桌面替换成 sway 桌面,Nix 就会帮用户达成这个目标。 用户不需要关心底层细节(比如说 sway 需要安装哪些软件包,哪些 i3 相关的软件包需要卸载掉,哪些系统配置或环境变量需要针对 sway 做调整、如果使用了 Nvidia 显卡 Sway 参数要做什么调整才能正常运行等等),Nix 会自动帮用户处理这些细节(当然这有个前提,就是 sway 跟 i3 相关的 nix 包设计良好)。

而基于 Nix 包管理器构建的 Linux 发行版 NixOS,可以简单用 OS as Code 来形容,它通过声明式的 Nix 配置文件来描述整个操作系统的状态。NixOS 使用声明式配置来管理整个系统环境,可以直接用 Git 管理这些配置,只要你的配置文件不丢,系统就可以随时还原到任一历史状态,NixOS 甚至默认将所有旧版本都加入到了启动项,确保系统滚挂了也能随时回退。所以 Nix 也被认为是最稳定的包管理方式。

DebOps

DebOps 是一套免费的开源工具集,使用 Ansible 来自动化服务器配置、配置管理、应用程序部署等。可帮助您在 Debian 和 Ubuntu 环境中构建和管理 IT 基础架构,有助于简化基础设施管理并减少人为错误的工具。

DebOps 具有以下特点:

---
- name: Configure system with DebOps
  hosts: all
  become: yes
 
  vars:
    # 定义变量(可根据需要调整)
    target_hostname: "my-server"
    new_username: "opsuser"
    new_password: "{{ vault_opsuser_password }}"  # 建议用 Ansible Vault 加密
    bonding_iface: "bond0"
    bonding_slaves: ["eth0", "eth1"]
    static_routes:
      - { network: "10.0.0.0/8", gateway: "192.168.1.1" }
    ulimits:
      nofile: 65536
 
  tasks:
    # 1. 主机名设定和永久生效
    - name: Set hostname
      ansible.builtin.hostname:
        name: "{{ target_hostname }}"
 
    # 2. en_US.utf-8字符集配置
    - name: Configure locale
      debops.locale:
        locale: "en_US.UTF-8"
        default_locale: "en_US.UTF-8"
 
    # 3. 修复apt源为国内镜像(以清华源为例)
    - name: Configure APT mirrors
      debops.apt_repository:
        - name: "tsinghua"
          uri: "https://mirrors.tuna.tsinghua.edu.cn/ubuntu/"
          distribution: "{{ ansible_distribution_release }}"
          components: ["main", "restricted", "universe", "multiverse"]
          state: "present"
          file: "tsinghua"
 
    # 4. 安装基础软件
    - name: Install common tools
      debops.apt:
        name: ["ncdu", "nmon", "fio", "htop", "git", "curl"]
        state: present
 
    # 5. 时区和时间同步(Asia/Shanghai)
    - name: Configure timezone
      debops.timezone:
        timezone: "Asia/Shanghai"
      notify: Restart cron
 
    - name: Enable NTP sync
      debops.timesync:
        ntp_enabled: true
        ntp_servers: ["ntp.aliyun.com"]
 
    # 6. 单用户模式密码重置(需手动干预)
    # 注:此操作需在物理机通过GRUB操作,Ansible无法直接实现
 
    # 7. 禁用SELinux(Debian默认无SELinux,此步骤针对衍生系统)
    - name: Disable SELinux
      debops.selinux:
        state: "disabled"
      when: ansible_selinux.status != "disabled"
 
    # 8. 用户密码策略加强
    - name: Configure password policy
      debops.pam:
        password:
          minlen: 12
          difok: 5
          remember: 5
 
    # 9. 添加普通用户并赋予sudo权限
    - name: Create user with sudo
      debops.users:
        user_list:
          - name: "{{ new_username }}"
            password: "{{ new_password }}"
            groups: ["sudo"]
            shell: "/bin/bash"
 
    # 10. SSH强加密配置
    - name: Secure SSH configuration
      debops.ssh:
        sshd_config:
          KexAlgorithms: "curve25519-sha256,ecdh-sha2-nistp521"
          Ciphers: "chacha20-poly1305@openssh.com,aes256-gcm@openssh.com"
          MACs: "hmac-sha2-512-etm@openssh.com"
          PasswordAuthentication: "no"  # 建议禁用密码登录
 
    # 11. 配置网卡bonding模式
    - name: Configure network bonding
      debops.network:
        interfaces:
          - name: "{{ bonding_iface }}"
            type: "bond"
            bonding_mode: "802.3ad"
            bonding_xmit_hash_policy: "layer3+4"
            slaves: "{{ bonding_slaves }}"
            ipv4: "dhcp"  # 或静态IP配置
 
    # 12. 关闭防火墙和连接跟踪
    - name: Disable firewall
      debops.ferm:
        state: "absent"
 
    - name: Disable conntrack
      debops.sysctl:
        net.netfilter.nf_conntrack_max: 0
 
    # 13. Firewalld放行22端口(若系统使用firewalld)
    - name: Allow SSH via firewalld
      debops.firewall:
        rules:
          - service: "ssh"
            state: "enabled"
      when: "'firewalld' in ansible_facts.packages"
 
    # 14-15. GPT分区和XFS配置(示例:/dev/sdb)
    - name: Create GPT partition
      debops.parted:
        device: "/dev/sdb"
        number: 1
        fs_type: "xfs"
        state: "present"
 
    - name: Format XFS
      debops.filesystem:
        dev: "/dev/sdb1"
        fstype: "xfs"
        mountpoint: "/data"
 
    # 16. 静态路由配置
    - name: Add static routes
      debops.iproute2:
        routes: "{{ static_routes }}"
 
    # 17. ulimit配额设定
    - name: Set ulimits
      debops.limits:
        limits:
          - domain: "*"
            type: "hard"
            item: "nofile"
            value: "{{ ulimits.nofile }}"
 
    # 18. sysctl优化
    - name: Apply sysctl settings
      debops.sysctl:
        vm.swappiness: 10
        net.ipv4.tcp_tw_reuse: 1
        net.core.somaxconn: 65535
 
    # 19. 日志轮转优化
    - name: Configure logrotate
      debops.logrotate:
        configs:
          - name: "syslog"
            paths: ["/var/log/syslog"]
            options:
              - "rotate 7"
              - "daily"
              - "compress"
              - "missingok"
 
    # 20. 防止resolv.conf被重置
    - name: Protect resolv.conf
      debops.resolvconf:
        manage_config: true
        nameservers: ["8.8.8.8", "114.114.114.114"]
        options:
          - "rotate"
          - "timeout:1"
 
  handlers:
    - name: Restart cron
      ansible.builtin.service:
        name: cron
        state: restarted

Docker

Docker是一种在Linux容器里运行应用的开源工具,一种轻量级的虚拟机。除了运行应用,Docker还提供了一些工具,借助Docker Index或自己托管的Docker注册表对进行了集装箱化处理的应用进行分发,从而简化复杂应用的部署过程。

Kubernetes

虚拟化技术

KVM虚拟机实战

优秀编程语言和模式

NIM编程语言

Python编程语言

Map/Reduce并发编程

分布式框架和队列处理

文件系统及分布式存储

Hadoop HDFS分布式

SeaweedFS 分布式

SeaweedFS是一种简单的、高度可扩展的、基于Go语言开发的分布式文件系统,基于facebook haystack存储格式。

SeaweedFS设计用来有效地存储处理小文件,较大文件可以分块拆分为小文件进行上传。所有文件的元数据不存储在Master节点,而是分散存储在Volume(逻辑卷,存储数据的逻辑结构)中,Master节点只保存卷 ID 到卷服务器的映射,这样一来,Master节点的查询压力就被分散到volume节点了。这些文件卷服务器各自管理各自的元数据,存储在卷服务器上的所有文件元信息都可以从内存中读取,而无需访问磁盘。所以这样在高并发的情况下减少了主节点的压力和网络通信,同时定位文件也更迅速。

JuiceFS 高性能分布式

JuiceFS 是一款面向云原生设计的高性能分布式文件系统,在 Apache 2.0 开源协议下发布。提供完备的 POSIX 兼容性,可将几乎所有对象存储接入本地作为海量本地磁盘使用,亦可同时在跨平台、跨地区的不同主机上挂载读写。

Ceph 统一分布式存储

Ceph能够在一个统一的系统中独特地提供对象、块和文件存储。Ceph 高度可靠、易于管理且免费。Ceph 的强大功能可以改变您公司的 IT 基础架构和管理大量数据的能力。Ceph 提供了非凡的可扩展性——数以千计的客户端访问 PB 到 EB 的数据。ceph存储集群相互通信以动态复制和重新分配数据。

系统网络管理

TUI文本界面编程

Ansible自动化

数据库和KV

MongoDB 无范式存储

SierraDB

SierraDB 是一款用 Rust 构建的分布式事件存储数据库,兼容redis的不可变数据库,专为事件溯源设计,支持水平扩展、无间隙序列、跨流事务与 RESP3 协议,开箱即用,适合高一致性要求的现代应用。

SierraDB 采用基于集群拓扑的确定性选主,灵感来自 Raft,但省去了昂贵的选举过程。哪个节点当 leader,完全由集群结构决定,稳定又高效。底层技术栈更是站在巨人肩膀上:

  1. RESP3 提供开箱即用的客户端生态;
  2. libp2p(IPFS 背后的网络库)负责节点发现、连接管理和 gossip 协议;
  3. 每个分区 leader、复制协调器都是独立自研的 Kameo Actor ,崩溃自动重启,互不影响。

这种设计让 SierraDB 在部分节点故障时依然坚挺。

Apache Doris

Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。Doris 采用MySQL协议进行通信,Doris SQL语法基本覆盖MySQL语法,用户可通过MySQL Client 或者MySQL JDBC 连接到Doris集群。

TiDB分布式数据库

TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

人工智能Ai

DeepSeek 相关概念