Uptime is not a marketing metric for us. It is an engineering constraint that shapes every decision we make. When your entire business operates on a single platform, downtime is not an inconvenience. It is a full stop. That responsibility is something we take seriously, and it is reflected in every layer of the KamoCRM architecture, from the database to the load balancer.
在基金会,我们管理YugabyteDB 作为我们的主要数据存储。 YugabyteDB是一个分布式SQL数据库,通过多个节点进行自动故障复制数据. 如果一个节点倒下,集群继续运行,没有数据丢失或人工干预. 此外,我们的申请层包括64个通过RKE2运行在Kubernetes上的无国籍微服务。 由于每项服务都是无国籍的,任何情况都可以被替换或扩大而不影响其他情况.
实时通信又增加了一层复杂性. 电视会议、通讯和电话都需要持续的连接和低延迟。 我们与Janus WebRTC一起处理媒体问题,与NATS JetStream一起处理信息中介问题,两者都部署在我们整个集群的高度可用配置。 甚至我们的文件存储层,由MinIO提供动力, 配置了用于数据耐久性的去除编码 .
结果是,一个没有单一组件的系统,其故障将其余部分推倒. 每天数次更新船作滚动部署,因此放行并不需要成本可用. 数以千计的度量衡被现场追踪,待命工程师在数秒内听到异常. 这就是99.9%的数字后面的位置.
