Go微服务一 浅谈微服务

651 次浏览次阅读
没有评论

什么是微服务

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

微服务的特点

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

互联网架构之路

Go 微服务一 浅谈微服务

单体架构

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

Go 微服务一 浅谈微服务

垂直架构

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

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

    Go 微服务一 浅谈微服务

SOA 架构

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

Go 微服务一 浅谈微服务

微服务架构

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

Go 微服务一 浅谈微服务

技术栈

  • docker+k8s

  • 通信

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

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

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

正文完
 0
评论(没有评论)