前言
为什么要使用微服务?
传统的 Java Web 都是采用单体架构的方式来进行开发、部署、运维的,所谓单体架构就是将 Application 的所有业务模块全部打包在一个文件中进行部署。但是随着互联网的发展、用户数量的激增、业务的极速扩展,传统的单体应用方式的缺点就逐渐显现出来了,给开发、部署、运维都带来了极大的难度,工作量会越来越大,难度越来越高。
因为在单体架构中,所有的业务模块的耦合性太高,耦合性过高的同时项目体量又很大势必会给各个技术环节带来挑战。项目越进行到后期,这种难度越大,只要有改动,整个应用都需要重新测试,部署,极大的限制了开发的灵活性,降低了开发效率。同时也带来了更大的安全隐患,如果某个模块发生故障无法正常运行就有可能导致整个项目崩溃,单体应用的架构如下图所示。
单体应用存在的问题:
- 随着业务的发展,开发变得越来越复杂;
- 修改、新增某个功能,需要对整个系统进行测试,重新部署;
- 一个模块出现问题,很可能导致整个系统崩溃;
- 多团队同时对数据进行管理,容易产生安全漏洞;
- 各模块使用同一种技术框架,很难根据具体业务需求选择更合适的框架,局限性太大;
- 模块内容太复杂,如果员工离职,可能需要很长时间才能完成任务交接。
为了解决上述问题,微服务架构应运而生,简单来说,微服务就是将一个单体应用拆分成若干个小