over-golang/06-微服务/01-微服务概述.md
2021-07-02 18:11:59 +08:00

1.8 KiB
Raw Permalink Blame History

一 单体应用

优势:

  • 架构简单,容易上手
  • 部署简单,依赖少
  • 测试方便,一旦部署,所有功能就可以测了

劣势:

  • 复杂度变高代码越来越庞大
  • 开发效率低,协作麻烦
  • 牵一发动全身,任何一个功能出故障,全部完蛋

单体应用在应对高并发时,做一下横向扩展即可。

二 微服务

微服务就是微小的服务或应用比如linux上的命令行看做一个整体系统那么ls、cat等每个命令都是一个小的程序。
微服务的体现是:让每个服务专注于做好一件事情,每个服务单独开发和部署,服务之间完全隔离。

优点:

  • 单个服务迭代周期短
  • 独立部署,独立开发
  • 可伸缩性好
  • 故障隔离,不互相影响

缺点:

  • 复杂度增加,一个请求往往经过多个服务
  • 监控和定位问题困难
  • 服务管理复杂

微服务真正能够落地还是需要很多因素支持的:

  • 微服务开发需要的框架
  • 打包、版本管理、上线平台支持
  • 硬件层支持:容器和容器调度
  • 服务治理平台支持:分布式链路追踪与监控
  • 测试自动化支持比如上线前自动化case

三 微服务生态

  • 硬件层:物理服务器管理、操作系统管理、配置管理、资源隔离和抽象,主机监控和日志
  • 通信层:网络传输(RESTFUL,RPC调用(thrift,dubbox),消息传递(json,protobuf))rpc服务发现与注册(zookeeper,etcd),负载均衡,消息传递
  • 应用平台层:
  • 微服务层:

分布式数据库CAP原理

  • C:consistency每次总是能够读到最近写入的数据或者失败
  • A:available每次请求都能够读到数据
  • P:partition tolerance系统能够继续工作不管任意个消息由于网络原因失败 目前只能保证CP或者AP。