系统架构的标准要求
- 高敏捷性:及时响应业务需求,促进企业发展。
- 用户体验:提升用户体验,减少用户流失。
- 降低成本:降低增加产品、客户或业务方案的成本。
传统的开发模式
传统的 WEB 开发方式,这种方式一般被称为 单体式开发(Monolithic)。
我们会将所有的功能打包在一个 WAR/JAR 包里,基本没有外部依赖(除了容器),部署在一个 JavaEE 容器(Tomcat,JBoss,WebLogic)里,包含了Bean,DAO,Service,Control,UI 等所有逻辑。
优点
- 易开发简单,集中式管理
- 基本不会重复开发
- 功能都在本地,没有分布式的管理和调用消耗
缺点
- 效率低:开发都在同一个项目改代码,相互等待,冲突不断
- 维护难:代码功功能耦合在一起,新人不知道何从下手
- 不灵活:构建时间长,任何小修改都要重构整个项目,耗时
- 稳定性差:一个微小的问题,都可能导致整个应用挂掉
- 扩展性不够:无法满足高并发下的业务需求
微服务架构
为了优化以上的问题,微服务做了项目结构的调整
优化功能点:
- 微服务把每一个职责单一的功能放在一个独立的服务中 。
- 高新能:数据库分库、分表,提高系统性能。
- 易部署:单体应用只要有修改,就得重新部署整个应用。而微服务对某个微服务进行修改,只需要重新部署这个服务即可。
- 易开发:微服务中开发者只需关注一个特定的业务功能,所以业务清晰、代码量较少。开发和维护某个微服务相对简单。
注:以上图片来源于网络。