知乎的技术架构是什么样的

Yang 588

知乎的技术架构是微服务架构,知乎从 11 年就开始了微服务的探索,尝试过 protocol buffers、Avro、Thrift,最终在 16 年确认使用 Thrift,同时使用 Consul 和 HAProxy 作为注册中心和负载均衡。这种架构可以使得知乎的系统更加灵活和可扩展。

一、知乎的技术架构

1、微服务架构

知乎从 11 年就开始了微服务的探索,尝试过 protocol buffers、Avro、Thrift,最终在 16 年确认使用 Thrift,同时使用 Consul 和 HAProxy 作为注册中心和负载均衡。这种架构可以使得知乎的系统更加灵活和可扩展。

2、云平台

知乎有自己的内部研发的 ZAE ,绝大部分的在线业务容器在 15 年就已经全部跑在了 Docker 里,现在我们 HBase 和 Kafka 也是跑在容器里的。我们最开始使用的是Mesos 做的资源调度,现在已经切换到了 Kubernetes 。

3、部署平台

知乎的部署平台是与 ZAE 在一起的, 基于 Jenkins 搭建的自动集成,在 MR(Gitlab) 阶段自动使用 SonarQube 进行静态代码检查。部署分为测试环境,办公室环境,金丝雀1(灰度单个容器),金丝雀2(灰度 20% 流量),生产环境(100% 流量上线)。如果金丝雀阶段出现错误,会自动进行回滚操作。

4、监控

我们主要基于 Grafana、OpenTracing、Graphite 等搭建了监控系统。同时自研了 Halo 可以方便的是业务方观测到服务之间的依赖关系、响应时间(P95, P99, P999)、错误数。同时也进行了新技术的尝试,目前在业务容器监控使用了Prometheus 。

存储,主要是 MySQL、Redis、HBase;正在调研 TiDB,目前有一套生产集群上线准备给「已读」服务使用。

5、消息队列

早期使用自研的 Sink,目前使用 Kafka,同时提供在 Kafka 的基础上包装了Beanstalkd 作为任务队列方便业务进行使用。

编程语言,Python、Golang、Java、Rust。目前 Golang 使用比较广泛,Python 使用场景逐渐变少。Java 在一些算法项目和商业系统中有使用。搜索系统使用的 Rust 重写 Lucene,现并在此基础上重写了类 ES 的集群化搜索引擎。

二、知乎技术架构变迁历史

它的架构变迁历史可以分为以下几个阶段:

1、初期架构(2011-2012年)

知乎最初采用的是单台服务器架构,使用的是Python和MySQL。这个阶段的架构比较简单,但由于流量较小,能够满足需求。

2、分布式架构(2013-2014年)

随着知乎用户数量的增加,单台服务器架构已经无法满足需求,知乎开始转向分布式架构。它采用了Nginx、Tornado和MySQL等技术,将系统拆分成多个服务,实现了负载均衡和高可用性。

3、大规模分布式架构(2015-2017年)

2015年,知乎的用户数量已经超过了500万,需要进一步升级架构。它采用了微服务架构,将系统拆分成更小的服务单元,利用Docker和Kubernetes实现自动化部署和管理。知乎还采用了Elasticsearch、Redis等技术,实现了更高效的搜索和缓存。

4、AI和大数据架构(2017年-至今)

知乎在2017年开始大力投入AI和大数据领域。它采用了TensorFlow等技术,实现了智能推荐和自然语言处理等功能。此外,知乎还采用了Hadoop、Spark等大数据技术,实现了数据挖掘和分析。

总体来说,知乎的架构变迁历程非常典型,从单台服务器到分布式架构,再到大规模分布式架构,最后进入AI和大数据领域。这些技术的应用,不断推动着知乎的发展和进步。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部