×

beanstalk

beanstalk(知乎APP的技术架构是什么样的)

jnlyseo998998 jnlyseo998998 发表于2022-11-04 03:30:37 浏览22 评论0

抢沙发发表评论

本文目录

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

知乎截止2019年1月,用户数2亿、话题38万、问题2800万、回答数1.3亿。今天我们通过知乎在线部分的技术架构分享,来聊聊互联网平台技术架构都考虑了哪些层面~

1、微服务架构,知乎从 11 年就开始了微服务的探索,尝试过 protocol buffers、Avro、Thrift,最终在 16 年确认使用 Thrift,同时使用 Consul 和 HAProxy 作为注册中心和负载均衡。是在 14 年确认的这套微服务架构,并且稳定使用到了现在。所以大家不要问为什么不使用 gRPC 了。

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 。

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

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

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

如何在aws运行PHP

aws有个服务是beanstalk,只要上传代码,即可实现一键部署,无需关心底层硬件,当然,你也可以通过EC2访问服务器.

AWS Elastic Beanstalk 是一项易于使用的服务,用于在熟悉的服务器(例如 Apache 、Nginx、Passenger 和 IIS )上部署和扩展使用 Java、.NET、PHP、Node.js、Python、Ruby、GO 和 Docker 开发的 Web 应用程序和服务。

您只需上传代码,Elastic Beanstalk 即可自动处理包括容量预配置、负载均衡、自动扩展和应用程序运行状况监控在内的部署工作。同时,您能够完全控制为应用程序提供支持的 AWS 资源,并可以随时访问底层资源。

Elastic Beanstalk 不额外收费 – 您只需为存储和运行应用程序所需的 AWS 资源付费。