微服务架构原理 | 青训营笔记

107 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记

微服务架构原理及特征

微服务架构中的基本概念及组件

服务:一组具有相同逻辑的运行实体(一个服务必须运行一份相同的代码)

实例:一个服务中,每个运行实体即为一个实例

实例与进程的关系:没有必然对应关系,通常一个实例对应一个或多个进程

集群:通常指服务内部的逻辑划分,包含多个实例

image.png

常见的实例承载形式:进程、VM、k8s pod...

有状态/无状态服务:服务的实例是否存储了可持续化的数据

服务间通信:对于单体服务,不同模块通信只是简单的函数调用;对于微服务,服务间通信意味着网络传输

image.png

服务注册与发现

如何指定调用一个目标服务的地址(ip:port)?

由于ip port在微服务中是动态变化的,所以不能指定10.23.45.67:8080进行访问

  • 使用DNS?

    • image.png
    • 本地DNS存在缓存,导致延时;负载均衡问题;不支持服务实例的探活检查;域名无法配置端口
  • 中间层:服务注册中心,哈希表或map,存储服务名到服务实例的映射

    • image.png 服务实例上线及下线过程
  • 下线实例:去服务注册中心将对应服务实例删除,此时服务A停止向对应实例发送流量,此时再下线实例

  • 上线实例:首先进行健康检查(health check),再把实例注册到服务注册中心

流量特征

image.png

从流量走向角度看微服务

  • 统一网关入口
  • 内网通信多数采用RPC
  • 网状调用链路

微服务架构核心要素

服务治理

  • 服务注册
  • 服务发现
  • 负载均衡
  • 扩缩容
  • 流量治理
  • 稳定性治理

可观测性

  • 日志采集、分析
  • 监控打点、大盘
  • 异常报警
  • 链路追踪

安全

  • 身份验证
  • 认证授权
  • 访问令牌
  • 审计
  • 传输加密
  • 黑客攻击