1、什么是微服务?
微服务是将传统把所有功能打包在一个WAR包的开发方式按业务进行划分,每个微服务都有自己的数据库,并对外提供REST接口。
前端通过代理(API Gateway)来找后端服务,而服务间交互则通过进程间通信(IPC)实现。
传统开发方式:
微服务架构:
2、为什么要用微服务?
一般来说是因为新架构能解决旧方式无法解决的问题,而对任务事情来说都是有利有弊,新架构也是在一定的场景下才更有优势,只是这个场景越来越普遍而已,实际上就方式也有其优点。
单体式应用存在问题:
- 开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断
- 代码维护难:代码功能耦合在一起,新人不知道何从下手
- 部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长
- 稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉
- 扩展性不够:无法满足高并发情况下的业务需求
- 采用新技术难:设想你有两百万行采用XYZ框架写的代码。如果想改成ABC框架,无论是
- 时间还是成本都是非常昂贵的,即使ABC框架更好。在无法逾越的鸿沟面前,你不得不
- 在最初选择面前低头
微服务能更好地解决以上问题,但也存在挑战:
- 多服务运维难度
- 系统部署依赖
- 服务间通信成本
- 数据一致性
- 系统集成测试
- 重复工作
- 性能监控