单体架构


单体架构将所有功能都写在同一个项目中,开发时调用简单,编译时直接打包整个项目,十分简单,但也存在缺点:

  • 协作困难:如果几百人的团队同时修改同一个项目,git可能会经常出现冲突。
  • 耦合度高:代码高度耦合,局部Bug可能会导致整个应用的崩溃。
  • 发布效率低:每次更新一个模块都需要重新编译部署整个项目,耗费时间过长。
  • 扩展性差:不同模块间的并发压力不同,高并发模块的压力可能会影响到其他模块,而为了应对高并发模块的压力,必须对整个大应用进行扩容,浪费了资源。

微服务架构


微服务分而治之,解决了上述问题,但与此同时,也衍生出了新的问题:

  • 服务发现:如果出现跨服务的业务如何进行?
  • 远程调用:跨服务的业务不能直接调用本地方法,该怎么调用?
  • 网关服务:前端到底应该访问哪一个服务?
  • 配置管理:如果一个服务有很多个实例,修改配置要怎么办?

相关框架


Spring Cloud

Spring Cloud是微服务架构下一系列组件的集合,为解决微服务的相关问题提供了一站式解决方案。

API网关服务发现配置中心服务熔断和限流远程调用
解决的问题前端请求繁杂,入口不一服务太多,找不到地址配置文件多,修改繁琐某个服务挂了拖垮全局远程调用代码太繁琐
实现Spring Cloud GatewayNacos、EurekaNacos、Spring Cloud ConfigSentinel、Resilience4jDubbo、OpenFeign