Go微服务一 浅谈微服务

作者: 太阳上的雨天 分类: 微服务 发布时间: 2022-02-25 10:29

什么是微服务

把一个大应用拆分成多个独立的小应用,每个应用就是一个服务。每个服务运行在独立的进程里,并且他们可以通过自动化的方式部署

微服务的特点

  • 单一指责,比方说登陆注册服务,只处理登陆和注册、日志服务之处理日志、用户服务、订单服务、商品服务、秒杀服务、短信通知服务、邮件服务等等
  • 轻量级的通信,通信平台和语言无关,http是轻量的
  • 隔离性,数据隔离
  • 技术多样性。可以使用不同的语言实现独立的服务,服务之间通过RPC通信

互联网架构之路

image-20220228003747336

单体架构

  • 功能全部在一个项目里
  • 优点:
    • 简单、高效、成本低
  • 缺点
    • 性能不佳
    • 技术栈受限

image-20220228004303609

垂直架构

  • 将大项目架构拆分成一个一个的单体架构

  • 不至于像单体架构无限扩大,但存在数据冗余,耦合性较大

    image-20220228005158125

SOA架构

  • 中间件技术 – 将重复公用的功能抽取为中间件,以服务的方式给各个系统提供服务
  • ESB
  • 优点
    • 代码提高复用性
    • 不同的服务对应不同的数据部署
  • 缺点
    • 系统与服务界限模糊,不利于开发和维护,成本高
    • ESB接口协议种类多,不固定,不利于维护

image-20220228010019616

微服务架构

  • 每个功能拆分成一个独立的服务
  • 服务之间访问通过RPC轻量级
  • 优点
    • 服务独立性高,低耦合
    • 技术栈灵活,丰富多样。不同的语言发挥自己的特性
  • 缺点
    • 服务拆分增加额外的工作
    • 保证数据的一致性
    • 增加了沟通成本

image-20220228011648006

技术栈

  • docker+k8s

  • 通信

    • RPC(远程过程调用)
      • HTTP传输
      • TPC传输
      • 数据传输: JSON Protobuf thrift等
      • 负载:随机算法、轮询、一致性hash、加权等
      • 异常容错:健康检查、熔断、限流等
    • 服务注册与发现
    • 分布式数据同步需要用到etcd, consul, zk等
  • 应用平台

    • 云管理平台、监控系统、日志收集系统、服务管理平台等等

本篇概念性文章来自于togpoer,大部分借鉴于togpoer

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注