在将企业应用程序迁移到容器化和微服务的过程中,形成了一个庞大且复杂的分布式微服务架构。需要一个可以管理和操作这些服务的系统,以帮助开发人员解决他们面临的挑战,例如服务发现、负载均衡、故障恢复、指标收集与监控、灰度发布、限流、访问控制、端到端身份验证等。
Istio 提供了一个完整的微服务解决方案,通过为整个服务网格提供行为洞察和操作控制,以满足微服务应用程序的多样化需求。该平台高度实践 Istio,企业用户只需访问服务平台即可为企业应用程序和服务提供全方位的治理能力,具备涵盖服务全局可视化、服务发布管理、服务连接可靠性治理、服务网格生命周期管理、服务错误排查、服务安全治理场景的综合功能。
在复杂的微服务应用场景中,开发人员需要实时查看服务的整体运行情况,包括服务调用关系、追踪路径、监控信息等,以便理解组件之间的通信。这有助于在发生故障或性能问题时快速识别问题的具体位置,提高操作效率,降低业务风险。
该平台在 Istio 的基础上集成了 OpenTelemetry Java Agent 和 Jaeger,提供了全面的可观察性能力。
以非侵入的方式收集监控数据,使开发人员能够专注于业务开发,而不必担心如何获取监控数据。
以图表的形式可视化服务调用拓扑和流量监控数据,并支持追踪数据查询。
服务的流量治理策略、路由规则和安全策略可以通过表单快速配置和管理。
在微服务应用程序的快速迭代与优化过程中,如果新版本直接发布给所有用户,一旦发生线上事故(如因大规模流量变化导致的故障或崩溃),将很难迅速解决问题,这将严重影响用户体验。
在微服务系统中部署新版本应用时,重要的是尽量减少对业务的影响,同时帮助开发人员验证新版本的功能、性能和用户满意度。
灰度发布功能基于 Istio 路由能力和 Flagger 开源组件实现。当新版本服务发布时,允许一部分用户继续使用旧版本,而另一部分用户使用新版本。在灰度发布过程中,如果新版本稳定且用户对此无异议,则流量调度比例可以逐步调整,以扩大使用新版本的用户范围,直到所有用户都迁移到新版本。
在灰度发布过程中,可以及时识别问题,修复缺陷,并在部署过程中实时监测流量行为。对于异常情况可以实施自动回滚,以确保将影响降到最低。
在大规模的微服务系统中,服务之间的调用关系错综复杂。一旦某个服务发生故障且长时间无法解决,可能会导致故障扩展并影响其他服务,最终导致系统崩溃。
因此,对于微服务系统的开发人员和运维人员来说,实时监控服务的健康状态至关重要,以防范潜在风险。同时也需要能够使用详细的监控数据快速排查业务故障。
该平台建立了一套完善的服务故障排查流程。发生服务故障时,平台可以追踪异常流量以确定故障位置,缩小排查范围,然后利用日志和监控数据分析具体原因,快速解决问题。
提供关联拓扑图、流量监控面板、追踪和日志,为故障排查提供完整路径。
流量监控面板允许您查看服务、Pods 和 API 层级的流量数据。
在微服务架构中,一个应用包含多个服务,每个服务负责单一的业务功能。服务之间的数据交互是通过远程调用实现的。然而,这带来了一个问题:当服务 A 调用服务 B,而服务 B 又调用其他服务时,如果其他服务的响应时间过长或变得不可用,则对服务 A 的调用将消耗越来越多的资源,最终可能导致系统故障,这被称为雪崩效应。
为防止微服务系统中的级联故障,平台提供了对服务流量治理策略和路由规则的配置支持。这些机制可以建立保护机制,并在服务调用时模拟故障,确保服务连接的可靠性,增强微服务系统的整体稳定性。
支持负载均衡策略、熔断器和连接池设置策略。
支持基于路由的错误注入、延迟响应、超时重试、请求重写和流量复制。
在单体应用拆分为服务之后,提升了开发效率、增强了系统稳定性并提高了运营效率。服务之间的调用从本地调用变为网络协议接口调用,这也引入了安全风险。因此,在微服务治理平台中,需要对流量进行加密,配置服务调用的授权,并提供验证和审计功能。
平台提供服务之间流量加密的能力。通过为服务设置安全策略,流量可以使用 mTLS 进行加密。
通过为服务设置黑名单或白名单,可以控制同一网格下服务之间的访问权限。
完整的服务网格不仅包括 Istio 组件,还整合了扩展组件。在多集群环境中,管理服务网格变得尤为复杂。在服务网格的整个生命周期中,不仅涉及服务网格的部署、更新和删除,还涉及服务网格健康状态的监测与查看。这使得运维人员能够及时发现异常、排除故障,确保服务网格为业务提供一致而稳定的支持。
提供服务网格的完整生命周期管理能力,从部署、更新、删除到健康监测。
:: 服务网格管理:包括服务网格核心组件和扩展组件的部署、服务网格更新、删除等。
组件健康检查:核心组件和扩展组件的健康检查。
功能健康检查:主功能的健康检查、内置功能相关的检查项目。
监控:集成 Prometheus 和 Grafana,提供默认看板监控组件和业务信息。