距离2017 年的见闻技术架构调整接近 2 年,随着业务线的发展,见闻技术部的项目数量、项目架构类型、基础设施规模、服务变更频率都在不断地增长,带给 SRE 的挑战是如何能更快地助力于开发人员更快更稳定地部署服务,保障线上服务的稳定。
我们的后端开发团队仍然以 Golang 为主,不同业务线的技术选型不尽相同,同时存在 Python,Java 服务,这就需要 SRE 提供更易接入的微服务基础组件,常见的方案就是为每种语言提供适配的微服务基础组件,但痛点是基础组件更新维护的成本较高。
为了解决痛点,我们将目光放到服务网格,它能利用基础设施下沉解决多语言基础库依赖问题,不同的语言不需要再引入各种不同的服务发现、监控等依赖库,只需简单的配置并运行在给定的环境下,就能享有以上功能,同时网络作为最重要的通信组件,可以基于它实现很多复杂的功能,譬如根据不同可用区进行的智能路由、服务熔断降级等。
为此,我们调研了一些服务网格方案,包括Istio、Linkerd,基于我们的当前的后端架构特点:
- 服务通信协议主要基于 gRPC、HTTP
- 基于 Kubernetes 的 Docker 部署
- 拥抱开源,使用了 Prometheus、Grafana 作为监控,Zipkin 作为链路追踪等