微服务框架学习笔记 | 青训营

50 阅读2分钟

背景

微服务是一种软件架构风格,旨在通过将应用程序拆分为一系列小型、自治的服务来构建大型复杂的软件系统。每个微服务都可以独立开发、部署和维护,其各自的功能可以由不同的团队开发,并使用不同的编程语言、技术堆栈和数据存储。一些主要的背景因素包括:

  1. 复杂性和可维护性问题:单体应用容易变得庞大且复杂,导致代码难以理解、测试和维护。修改一个功能可能会影响其他部分,导致潜在的风险和bug。
  2. 灵活性和快速交付:随着市场变化,应用需要快速适应新的需求和功能。在单体应用中,引入新功能可能需要整个应用的重新部署,限制了快速交付的能力。
  3. 可扩展性问题:单体应用难以水平扩展,即无法有效地将应用程序的不同部分分布到多台服务器上以应对高负载。
  4. 技术异构性:单体应用通常使用一种编程语言和技术堆栈,这可能限制了团队的选择,而不同团队可能对不同的技术有更多的专业知识。

微服务架构特点

  1. 灵活性: 由于每个微服务都是相对独立的,可以更轻松地添加、修改或删除功能,而不会影响其他部分。
  2. 可维护性: 每个微服务都有其独立的代码库和数据库,这使得定位和修复问题更加容易。
  3. 可扩展性: 可以独立地扩展高负载的服务,而不会影响整体应用的性能。
  4. 技术异构性: 不同的服务可以使用不同的技术栈,这样团队可以根据需求选择最佳工具。
  5. 自治性: 每个微服务都是自治的,可以独立部署和扩展,这加强了团队的责任和自主性。

核心服务治理功能

服务发布

让一个服务升级运行新的代码的过程 服务发布的难点主要为:服务不可用、服务抖动、服务回滚

流量治理

基于地区、集群、实例、请求等维度,对端到端流量的路由器路径进行精准控制

负载均衡

负载均衡主要负责分配请求在每个下游实例上的分布

稳定性治理

稳定性治理主要有四种手段,分别是:限流、熔断、过载保护、降级

总结

然而,微服务架构也带来了一些挑战,例如分布式系统的复杂性、服务间通信和一致性问题等。正确地实施和管理微服务架构需要深入的技术知识和适当的架构决策。