马哥云原生微服务治理大厂冲刺班名师亲授「完整FX」

168 阅读4分钟

马哥云原生微服务治理大厂冲刺班名师亲授

核心代码,注释必读

// download:3w ukoou com

应用程序中包含微服务治理逻辑

在微服务架构中,服务间不再是在朴素的进程内通信,取而代之的是通过轻量级的网络协议进行通信。那么,如何找到服务提供方?如何超时重试?当存在多个服务提供方时如何实现负载均衡?许多复杂的微服务治理问题逐步涌现出来。

倘若上述问题都需要微服务本身通过代码去解决,这样的解决方案无疑会消耗开发人员的时间和精力。类似的问题在大部分的微服务场景中都会出现,显然也会带来更多的代码重复。

在分布式服务早期,许多互联网企业就经历过这一过程,微服务之间的调用是通过硬编码对方的服务地址来实现的。如果有多个地址,调用端往往会自己编写一个简单的负载均衡算法、接口路由策略等,配合一些超时重试功能来实现微服务间的调用。这种方式的扩展性很差,一旦服务提供方的实例进行扩缩容或地址变更,服务调用方就需要通过更新服务的提供方节点列表并重新发布服务来保证正常通信。而且当一个基础服务被多个调用方依赖时,变更将是一场灾难

马哥云原生微服务治理大厂冲刺班名师亲授 - 如何进行服务可用性治理

1.1 分布式固有复杂性

微服务架构是基于分布式的系统,而构建分布式系统必然会带来额外的开销。
性能: 分布式系统是跨进程、跨网络的调用,受网络延迟和带宽的影响。
可靠性: 由于高度依赖于网络状况,任何一次的远程调用都有可能失败,随着服务的增多还会出现更多的潜在故障点。因此,如何提高系统的可靠性、降低因网络引起的故障率,是系统构建的一大挑战。
分布式通信: 分布式通信大大增加了功能实现的复杂度,并且伴随着定位难、调试难等问题。
数据一致性: 需要保证分布式系统的数据强一致性,即在 C(一致性)A(可用性)P(分区容错性) 三者之间做出权衡。

1.2 服务的依赖管理和测试

在单体应用中,通常使用集成测试来验证依赖是否正常。而在微服务架构中,服务数量众多,每个服务都是独立的业务单元,服务主要通过接口进行交互,如何保证它的正常,是测试面临的主要挑战。所以单元测试和单个服务链路的可用性非常重要。

1.3 有效的配置版本管理

在单体系统中,配置可以写在yaml文件,分布式系统中需要统一进行配置管理,同一个服务在不同的场景下对配置的值要求还可能不一样,所以需要引入配置的版本管理、环境管理。

1.4 自动化的部署流程

在微服务架构中,每个服务都独立部署,交付周期短且频率高,人工部署已经无法适应业务的快速变化。有效地构建自动化部署体系,配合服务网格、容器技术,是微服务面临的另一个挑战。

1.5 对于DevOps更高的要求

在微服务架构的实施过程中,开发人员和运维人员的角色发生了变化,开发者也将承担起整个服务的生命周期的责任,包括部署、链路追踪、监控;因此,按需调整组织架构、构建全功能的团队,也是一个不小的挑战。

1.6 更高运维成本

运维主要包括配置、部署、监控与告警和日志收集四大方面。微服务架构中,每个服务都需要独立地配置、部署、监控和收集日志,成本呈指数级增长。服务化粒度越细,运维成本越高。