单体应用
- 所有业务功能都在一个应用程序里面
- 研发人员开发并维护同一个代码库
- 架构简单,典型的三层架构
单体应用横向扩展
单体应用的优势(规模不大)
架构简单,容易上手
部署简单,没有复杂的依赖
测试方便,一旦部署,所有功能就可以测了
单体应用的劣势(规模变大后)
复杂度变高,代码越来越庞大
开发效率低,开发协作越来越麻烦
牵一发而动全身,任何一个功能出故障,全部完蛋
微服务
- “微服务”就是微小的服务或应用,比如linux上各种工具:ls,cat,awk,wc,cp,rm等
- 基本原理:让每个服务专注的做好一件事情
- 每个服务单独开发和部署,服务之间是完全隔离的
优势
迭代周期短,极大的提升研发效率
独立部署,独立开发
可伸缩性好,能够针对指定的服务进行伸缩
故障隔离,不会互相影响
缺点
复杂度增加,一个请求往往要经过多个服务,请求链路比较长
监控和定位问题困难
服务管理比较复杂