微服务有助于加快开发速度,但这类架构的复杂性在于微服务所依赖的服务间通信。
目前至少有三种不同的架构方案可用于扩展容器化微服务。与所有扩展方案一样,每种方案都基于代理式负载均衡器,也都面临各自的挑战。其中一些挑战源于一个简单的事实:容器环境内的扩展通常依赖IP表,而IP表对传统网络层(即IP和TCP)之上的协议支持有限。
所有这些代理都提供相同的核心功能:对分布在容器环境中的服务进行扩展。值得注意的是,服务是临时性构造。除了定义这些服务的资源(配置)文件外,它们实际上并不存在。对于基于IP表的扩展解决方案而言,问题在于这些服务属于第7层(HTTP)构造,通常充当单个API调用的“后端”,而不是整个应用的后端。
从客户端来看,我们所熟知的应用可能呈现为一个统一的整体。实际上,应用由许多不同且分布式的微服务组成。其中一些服务完全供内部使用,旨在由其他服务调用。这意味着容器化环境中存在大量服务间通信。
在这些环境中,所有通信都是基于HTTP/HTTP2的API,因此需要L7(HTTP)路由。此外,还需要一致的安全策略、身份验证和策略执行。基于IP表的方法无法实现这些要求。
一如既往,开源技术为解决问题提供了助力。多个开源服务网格应运而生,以应对这些挑战。与许多开源项目一样,这些服务网格(例如Istio)正通过Aspen Mesh等项目扩展功能并获得支持,从而提供企业级解决方案。
这些扩展工作重点解决组织在容器中部署微服务时面临的八项挑战。
以下是这八项挑战,以及服务网格如何应对这些挑战:
- 构建:对于这一挑战,服务网格能发挥的作用有限,主要是将策略与CI/CD工具链集成,并确保采用声明式配置模型,以便将服务网格作为基础设施即代码来管理。
- 测试与集成:服务网格可确保开发、测试和生产等环境采用一致的策略,从而在这方面提供帮助。一些组织希望彻底取消分阶段部署。这种方法过去行之有效,但也会阻碍部署流程,导致延迟增加。这些组织正在寻求一种将服务直接部署到生产环境的方法,并利用流量导向和回滚机制来应对故障。
- 版本管理:服务网格可充当基础API网关,根据API版本等变量路由流量,甚至可以转换版本,为API版本过渡提供支持。客户端升级并非总能强制执行,尤其是面向消费者的应用,因此会收到针对多个版本的请求。服务网格可将旧版API的请求转换为最新版,从而帮助降低维护同一API多个版本的成本和负担。
- 部署:服务网格能够顺畅处理HTTP,因此非常适合支持蓝绿部署、金丝雀测试和流量导向。
- 日志记录:分布式日志记录始终是一个难题,而在实例存续时间差异很大的环境中,这一问题更为棘手。服务网格提供了一个通用的集中式位置来实施日志记录,并支持请求跟踪等功能。
- 监控:监控是实现规模化的核心。虽然应用可以实现某些功能(重试、熔断等)来应对不可避免的服务故障,但这会给应用带来本不应由其承担的负担。服务网格负责处理服务间通信,并提供统一的监控位置。目标是在生产环境中重点关注平均检测时间(MTTD)和平均修复时间(MTTR),因为生产环境的运行十分复杂,故障不可避免。
- 调试:系统越复杂,调试难度就越大。服务网格可以协助进行根本原因分析,利用分析和遥测功能提供统计信息和故障前通知,并隔离容器而不是将其终止,以便进行全面检查。当故障由缓慢的内存泄漏引起时,这尤其有用。
- 网络:网络对容器仍然至关重要,在复杂环境中可能尤为如此。要将服务与网络抽象分离,就会涉及许多不宜在每项服务中逐一实现的功能,例如服务发现、SSL和证书管理、断路器、重试、运行状况监控等。微服务的目标是“本地编码,小规模编码”。如果还需要加入网络相关功能,微服务就会变得臃肿,并产生额外的架构和技术债务。服务网格可承接这些功能,提供所需的可扩展性和安全性,同时避免拖慢开发进度。
服务网格是一项令人振奋的技术演进,它将云和容器的现代化理念与成熟可靠的规模化基础相结合。随着容器在2018年继续得到更广泛的采用,以及企业对规模化能力和支持的需求不断增长,服务网格有望获得更多关注。
关于作者

Lori MacVittie是F5首席技术官办公室的杰出工程师兼首席技术布道师,在应用交付、自动化战略和基础设施领域拥有深厚的专业知识。无论是为AI智能体定义防护机制、剖析脆弱的多云架构,还是探索可扩展系统的极限,她都善于化繁为简。她在应用开发、IT架构以及网络和系统运维领域拥有30多年的行业经验。加入F5之前,她曾担任技术编辑,并因出色表现获得奖项。 MacVittie拥有计算机科学硕士学位,著述颇丰,出版作品涵盖安全、云和企业架构领域。她还热衷于桌面游戏和电子游戏,并且对奶酪有着毫不掩饰的鲜明见解。
Lori Mac Vittie 的更多博客文章相关博客文章
Thingbot正转变为攻击平台
Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。
借助F5全新Quick Start,在AWS上快速开展业务
在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。