1.8 KiB
1.8 KiB
一 单体应用
优势:
- 架构简单,容易上手
- 部署简单,依赖少
- 测试方便,一旦部署,所有功能就可以测了
劣势:
- 复杂度变高代码越来越庞大
- 开发效率低,协作麻烦
- 牵一发动全身,任何一个功能出故障,全部完蛋
单体应用在应对高并发时,做一下横向扩展即可。
二 微服务
微服务就是微小的服务或应用,比如linux上的命令行看做一个整体系统,那么ls、cat等每个命令都是一个小的程序。
微服务的体现是:让每个服务专注于做好一件事情,每个服务单独开发和部署,服务之间完全隔离。
优点:
- 单个服务迭代周期短
- 独立部署,独立开发
- 可伸缩性好
- 故障隔离,不互相影响
缺点:
- 复杂度增加,一个请求往往经过多个服务
- 监控和定位问题困难
- 服务管理复杂
微服务真正能够落地还是需要很多因素支持的:
- 微服务开发需要的框架
- 打包、版本管理、上线平台支持
- 硬件层支持:容器和容器调度
- 服务治理平台支持:分布式链路追踪与监控
- 测试自动化支持,比如上线前自动化case
三 微服务生态
- 硬件层:物理服务器管理、操作系统管理、配置管理、资源隔离和抽象,主机监控和日志
- 通信层:网络传输(RESTFUL,RPC调用(thrift,dubbox),消息传递(json,protobuf)),rpc,服务发现与注册(zookeeper,etcd),负载均衡,消息传递
- 应用平台层:
- 微服务层:
分布式数据库CAP原理:
- C:consistency,每次总是能够读到最近写入的数据或者失败
- A:available,每次请求都能够读到数据
- P:partition tolerance,系统能够继续工作,不管任意个消息由于网络原因失败 目前只能保证CP或者AP。