关注的前沿技术
云计算和容器平台
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 具有以下特点:
- 基于 Ansible:它以 Ansible 剧本的形式构建,使基础设施自动化变得简单。
- 对于 Debian/Ubuntu:针对 Debian 和 Ubuntu 的工具集。
- 免费且开源:根据 GNU 通用公共许可证版本 3 分发。
- 基础设施自动化:自动化服务器配置、配置管理、应用程序部署等。
--- - 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,完全由集群结构决定,稳定又高效。底层技术栈更是站在巨人肩膀上:
RESP3 提供开箱即用的客户端生态; libp2p(IPFS 背后的网络库)负责节点发现、连接管理和 gossip 协议; 每个分区 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) 场景提供一站式的解决方案。