头图

GO 进阶学习笔记

第一课 Go 架构实践

一、微服务概览

  1. 单体架构
    1. 单体的原因(缺点):应用太复杂,无法拓展,可靠性低
    应对方式:化繁为简,分而治之
  2. 微服务起源
    1. SOA(面向服务)& 微服务
    2. 核心:小而美

      1. 代码少,bug少,易测试,易维护,易迭代
      2. 单一职责:专注,低耦合
  3. 微服务定义
    1. 服务关注单一业务 原子服务
    2. 服务间轻量级通信 独立进程
    3. 可自动独立部署 隔离部署
    4. 可用不同语言和存储技术 去中心化治理服务
  4. 微服务缺点
    1. 分布式应用:需要进行进程间通信,导致消息速度慢,服务不可用等局部失效问题
    2. 分区的数据库架构:一致性的保证
    3. 如何测试基于微服务架构的应用也很复杂
    4. 服务模块间的依赖关系复杂
  5. 组件服务化
    1. 传统方式:库与应用绑定,运行在进程中,库的改变引起应用的重新部署
    2. 方式

      1. kit 微服务基础库
      2. service 业务代码 + kit依赖 + 第三方依赖
      3. rpc + message queue
  6. 按业务组织服务
    1. 服务所提供的能力需要与业务功能相对应
  7. 去中心化
    1. 数据、治理、技术 去中心化
    2. 有利于服务的独立性和隔离
  8. 自动化的基础设施
    1. 自动化测试+部署
  9. 可用性兼容性
    1. 保持服务接口的兼容性
    2. 发送的数据要保守,最小化发送必要信息
    3. 接收数据开放,最大限度容忍冗余数据

二、微服务设计

三、gRPC & 服务发现

四、多集群 & 多租户


zach
3 声望0 粉丝