秦苍科技买单侠:微服务正在成为数字化转型基石
【摘要】
在过去几年互联网及科技高速发展的大环境下,各类为了应对互联网进步甚至漏斗的科技技术应运而生,“微服务架构”也作为互联网科技下的新形势产物开始向企业和市场输出。微服务描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署,端点智能以及语言和数据的分散控制等方面存在着某些共同特征。
简而言之,微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资源的API)进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。这些服务的集中化管理已经是最少的,它们可以用不同的编程语言编写,并使用不同的数据存储技术。
伴随着秦苍科技买单侠业务的快速发展,能够支持独立开发、独立部署、独立扩展的微服务在秦苍得到了广泛应用和蓬勃发展,短短5年左右时间,秦苍科技已经发展了300+个微服务,并且还在快速增长中。
秦苍科技买单侠负责人认为微服务架构的核心就是解决扩展性的问题。从组织结构的角度来看,微服务架构使得研发部门可以快速扩张,因为每个微服务都不是特别复杂,工作在这个服务上的研发人员不是必须对整个系统都充分了解,很多新人可以快速上手。
买单侠的研发人员也逐渐意识到伴随着微服务规模化的增长,必需要重视微服务的基础设施建设(API网关、服务注册中心、调用链跟踪等)才能保持开发效率和产品的质量。API网关作为访问微服务的大门, 是访问后台服务的入口,作为最常用的基础服务之一,其重要性不言而喻。
在没有API网关的日子,秦苍科技买单侠部署在阿里云上的服务全部使用阿里云的负载均衡SLB直接进行通信。不同的服务不同的环境配置不同的SLB地址,运维维护的配置文件存在着大量的SLB地址,稍不留意配置错误,就会影响发布上线。同时,客户端直接和各个服务直接交互,客户端和服务端有强耦合。服务端的波动会直接影响到客户端。
随后,秦苍科技买单侠经过多方面了解及接触,决定采用面向服务的网关Spring Cloud Zuul,帮助解耦客户端和具体后端微服务,并且提供API给各个客户端作为服务入口。作为API网关,Zuul能根据简单配置就能完成PATH和URL的路由映射转发。Zuul可以定时扫描指定目录下用户自己实现的groovy过滤器,通过groovy类加载器动态加载,从而在不用重启API网关下达到动态添加、更新过滤器。同时,Zuul还可以自治化管理自己业务系统,实现灰度发布的策略管理,自主选择权重策略,白名单策略,用户区域策略等对用户进行自定义路由分流。
除了保障基本路由转发外,API网关还在买单侠的微服务治理中扮演重要角色,随着规模化管理和业务需求,其在服务分组管控、灰度发布、熔断监控、容器化迁移、统一出入口管理等场景都有深入实践,并且还在不断演进发展中。