微服务框架—不变的基建 | 青训营笔记

86 阅读4分钟

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

写在开头

本人是一个第一次参加字节青训营的学生,主要是简单记录一下自己学习的过程以及复习(详细的需要自己去看每天对应的课程),每天会发前一天课程的笔记或者是自己的思考

系统架构的演进历史

互联网规模大,发展快,需求复杂,人员增加,所以系统架构不断演进。

  • 单体架构

    • All in one process
  • 垂直应用架构

    • 按照业务线垂直划分
  • 分布式架构

    • 抽出与业务无关的公共模块
  • SOA架构

    • 面向服务
  • 微服务架构

    • 彻底的服务化

微服务架构概览以及优缺点

微服务架构区别于传统的单体软件架构,是一种为了适应当前互联网后台服务的「三高需求:高并发、高性能、高可用」而产生的的软件架构

优点:

  • 微服务是继SOA后,最流行的服务架构风格之一。
  • 按照微服务对系统进行拆分后,每个服务的业务逻辑都更加简单、清晰。服务之间是松耦合的,模块之间的边界也更加清晰。
  • 微服务有效降低了软件项目的业务复杂程度,为小团队独立开发、持续交付和部署打下了良好的基础。

缺点:

  • 与传统的单一架构相比,微服务架构对团队的组织架构、技术水平、运维能力等方面,都提出了更高的要求。如果没有掌握得当的方法而生搬硬套,微服务架构只会会适得其反
  • 在国内外的技术社区中,比较推崇现有开源方案,如"Spring Cloud全家桶"或者阿里开源的"Dubbo"。使用开源框架省却了造轮子的过程,但也降低了我们学习、思考的欲望。
  • 已有的微服务资料过于重视微服务的开发,忽略了微服务赖以生存的生态系统:工具链、自动化运维。可以说,离开了这两点的支持,微服务架构将难以落地。

微服务架构的三大要素

  • 服务治理

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

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

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

微服务架构原理及特征

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

  • 服务

    • 一组具有相同逻辑的运行实体
  • 实例

    • 一个服务中的每个运行实体
  • 实例与进程的关系

    • 没有必然对应关系,一般一对一或者一对多
  • 常见的实例承载形式

    • 进程、VM、k8s pod......
  • 集群

    • 服务内部逻辑划分,包含多个实例
  • 有/无状态服务

    • 服务实例是否存储了可持久化数据

服务间通信

  • 微服务之间通过网络进行通信
  • 常见的通信协议包括 HTTP、RPC

服务注册及服务发现

服务发现的发现机制主要包括三种:

服务提供者:服务启动时将服务信息注册到注册中心,服务退出时将注册中心的服务信息删除掉。

服务消费者:从服务注册表获取服务提供者的最新网络位置等服务信息,维护与服务提供者之间的通信。

注册中心:服务提供者和服务消费者之间的一个桥梁

服务发现机制的关键部分是注册中心。注册中心提供管理和查询服务注册信息的API。当服务提供者的实例发生变更时(新增/删除服务),服务注册表更新最新的状态列表,并将其最新列表以适当的方式通知给服务消费者。目前大多数的微服务框架使用Netflix Eureka、Etcd、Consul或Apache Zookeeper等作为注册中心。

为了说明服务发现模式是如何解决微服务实例地址动态变化的问题,下面介绍两种主要的服务发现模式:

客户端发现模式服务端发现模式。客户端模式与服务端模式,两者的本质区别在于,客户端是否保存服务列表信息。