目录

一 单体应用

优势:

  • 架构简单,容易上手

  • 部署简单,依赖少

  • 测试方便,一旦部署,所有功能就可以测了

劣势:

  • 复杂度变高代码越来越庞大

  • 开发效率低,协作麻烦

  • 牵一发动全身,任何一个功能出故障,全部完蛋

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

二 微服务

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

优点:

  • 单个服务迭代周期短

  • 独立部署,独立开发

  • 可伸缩性好

  • 故障隔离,不互相影响

缺点:

  • 复杂度增加,一个请求往往经过多个服务

  • 监控和定位问题困难

  • 服务管理复杂

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

  • 微服务开发需要的框架

  • 打包、版本管理、上线平台支持

  • 硬件层支持:容器和容器调度

  • 服务治理平台支持:分布式链路追踪与监控

  • 测试自动化支持,比如上线前自动化case

三 微服务生态

  • 硬件层:物理服务器管理、操作系统管理、配置管理、资源隔离和抽象,主机监控和日志

  • 通信层:网络传输(RESTFUL,RPC调用(thrift,dubbox),消息传递(json,protobuf)),rpc,服务发现与注册(zookeeper,etcd),负载均衡,消息传递

  • 应用平台层:

  • 微服务层:

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