微服务框架基本介绍 | 青训营笔记

56 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 7 天。

  • 微服务架构介绍

    • 为什么系统架构需要演进?

      互联网的爆炸性发展;硬件设施的快速发展;需求复杂性的多样化;开发人员的急剧增加;计算机理论及技术的发展等原因使得老的架构无法适应。

    • 演进历史

      • 单体架构:所有逻辑放在一个进程里

      • 垂直应用架构:按照业务线垂直划分

      • 分布式架构:抽出业务无关的公共模块,公共逻辑的去冗余

      • SOA架构:面向服务,有服务注册中心

      • 微服务:彻底的服务化,开发效率高

    • 微服务架构核心要素:

      • 服务治理:服务注册,服务发现等
      • 可观测性:日志采集、分析,监控打点,监控大盘,异常报警,链路追踪等
      • 安全:身份验证,认证授权等。服务之间的调用必须有认证授权的过程
  • 基本概念

    • 服务:一组具有相同逻辑的运行实体

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

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

    • 服务包含集群,集群包含实例

    • 实例与进程的关系:没有必然的对应关系,可以一个实例对应一个或多个进程,反之不常见

    • 常见的实例承载形式:进程,VM,k8s pod

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

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

  • 服务注册与发现

    • 服务注册。

      问题:如何指定调用一个目标服务的地址?

      • 指定目标服务IP地址端口。不能指定一个固定的地址,在微服务环境中ip地址动态变化。而且一个服务有多个实例,指定一个实例是不行的

      • DNS。 解决以上两个问题,但有以下问题:本地DNS缓存造成延时,负载均衡,域名无法配置端口等

      • 注册中心。存储服务名到服务实例的映射

    • 服务实例上线及下线过程

      • 如果直接下线,依然有流量过来,会造成故障

      • 先去服务中心,把该服务删掉,过会儿再删实例

      • 添加,先把实例启动,进行健康检查,再把实例注册在服务中心

  • 总结

    通过学习了解了架构的演进历史,以及微服务的基本概念和服务注册与发现的原理。