传统开发与微服务开发理解
- 传统开发模式
所有功能打包在一个War包中,基本没有外部依赖,部署在一个JEE容器(Tomcat,JBoss,WebLogic),里面包含了DAO,Service,Controller,UI等所有逻辑
优点:
-
- 开发简单,集中管理
- 基本不会重复开发
- 功能都在本地,没有分布式的管理和调用的消耗
缺点:
-
- 效率低:开发都在同一个项目改代码,相互等待,冲突不断
- 维护难:代码功能耦合在一起
- 不灵活:构建时间长,任何小修改都可能重构整个项目,耗时
- 稳定性差:一个微笑的问题,都可能导致整个应用挂掉
- 稳定性不够:无法满足高并发下的业务需求
- 对服务器的性能要求要统一,要高
- 微服务开发
微服务:架构风格(服务微化)
微服务是指开发一个单个小型的但有业务功能的服务,每个都有自己的处理和轻量通信机制,可以部署在单个或多个服务器上,也指一种松耦合的,有一定有界上下文的面向服务的架构
目的 : 有效地拆分应用,实现敏捷开发和部署
优点:
-
- 每个微服务都很小,这样能确切地聚焦一个指定的业务功能和业务需求
- 微服务能够被小团队开发
- 微服务是松耦合的,是有功能的,有意义的服务,无论在开发阶段或部署阶段都是独立的
- 微服务可以用不同的语言开发
- 微服务可以部署在中低端配置的服务器上
- 很容易和第三方集成
- 每个服务可以有自己的存储能力,单独的库,也可以有统一的库
缺点 :
-
- 微服务会带来更多的操作
- 需要双倍的努力
- 分布式系统复杂难管理
- 分布式跟踪部署难
- 当服务器数量增加时,管理复杂度增加