微服务

143 阅读4分钟

微服务 : 它将单一应用程序划分为一组小的服务,每个服务运行在其自身的进程中,服务之间通过轻量级的机制(通常是HTTP RESTful API)进行通信。

架构的主要组成部分

微服务:这是微服务架构的核心。每一个微服务都是围绕业务功能开发的独立服务,可以独立部署、升级和扩展。
服务治理:包括服务注册与发现、配置管理、路由处理、负载均衡、断路器、服务链路追踪等组件,用以实现对服务的全生命周期管理。
数据存储:在微服务架构中,每个服务一般会有自己的私有数据库,以保证微服务的自治性。此外,也可能使用消息队列来实现服务间的数据交互。
API网关:API网关是所有客户端请求的入口,封装了微服务的内部结构,可以实现请求路由、认证鉴权、限流熔断等功能。
服务间通信:微服务间通信通常采用同步的HTTP/REST或异步的消息传递方式。传输协议可能包括HTTP/1.1, HTTP/2, gRPC等。
安全机制:保证服务之间的通信安全,实现用户的认证和授权。
DevOps工具:微服务架构需要强大的DevOps支持,包括自动化部署、监控、日志管理等。
分布式事务:在微服务架构中,由于每个服务都有自己的数据库,所以经典的ACID事务模型可能无法使用,而需要使用某种形式的分布式事务协议。
容错设计:为了保证系统的稳定性和可用性,需要引入一些容错设计,如超时、重试、断路器、服务降级等机制。

微服务高可用

  1. 负载均衡:负载均衡器可以将流量分发到多个服务实例上,以防止单个实例过载并提高整体系统的处理能力。
  2. 服务副本:运行多个服务副本可以提高冗余性和可用性。如果一个服务实例出现故障,其他实例可以接管其工作。这通常与负载均衡结合使用。
  3. 健康检查和自我修复:定期进行健康检查,以便快速发现并解除故障实例。某些平台(例如Kubernetes)还提供了自我修复能力,即如果检测到服务实例出现故障,系统会自动替换该实例。
  4. 服务降级和熔断:这些技术可以在子服务失败或延迟时保护系统。熔断器可以阻止对故障服务的调用,同时允许对无关紧要的功能进行降级。
  5. 数据持久性和备份:确保重要数据的持久性,并定期进行备份,以防数据丢失。
  6. 异步通信和事件驱动:通过使用消息队列和事件驱动的架构,可以提高微服务的弹性,并使其能够更好地应对流量峰值。
  7. 分布式跟踪和监控:对微服务的操作进行记录和跟踪,以便在出现问题时快速定位故障源头。使用适当的监控工具可以帮助我们更好地理解系统的行为并及时发现问题。
  8. 混沌工程:通过在生产环境中引入各种故障(例如,关闭服务、引入网络延迟等),帮助我们发现系统的弱点,并可以预先采取行动来避免这些弱点导致系统故障。

单体架构问题,为什么用微服务

  1. 代码臃肿,逻辑复杂
  2. 技术债务逐渐上升
  3. 部署速度慢
  4. 技术语言单一
  5. 横向伸缩能力有限

什么样的项目适合微服务 业务明确职责单一 能独立部署和运行 使用轻量级的通信机制和架构 服务之间是松耦合的

微服务的优点

易于开发和维护 可以快速迭代 技术栈不受限 按需伸缩

微服务的缺点

问题追溯链路长 分布式的复杂性 重复劳动