Spring Cloud Eureka 为什么使用微服务

来自姬鸿昌的知识库
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1eU4y187zE/?p=2

为什么使用微服务

单体应用特点

大部分的开发者都开发过单体应用,无论是传统的 Servlet+JSP,还是 SSM,还是现在的 SpringBoot,它们都是单体应用,那么长期陪伴我们的单体应用有什么弊端?

我们是面临了什么问题,导致我们要抛弃单体应用转向微服务架构呢?主要原因如下:

  1. 部署成本高(无论是修改 1 行代码,还是 10 行代码,都要全量替换)。
  2. 改动影响大,风险高(不论代码改动多少,成本都相同)
  3. 因为成本高,风险高,所以导致部署频率低(无法快速交付客户需求)
  4. 无法满足快速扩容,弹性伸缩,无法适应云环境特性等问题。

注意:单体应用虽然有上面缺点,但是依然有自己的市场,如果项目规模比较小,办公类等不需要频繁修改版本的应用使用单体架构还是很方便的

微服务特点

微服务架构的特点:

  • 针对特定服务发布,影响小,风险小,成本低;
  • 频繁发布版本,快速交付需求;
  • 低成本扩容,弹性伸缩,适应云环境等特点。

微服务架构与现在企业中敏捷开发思想是匹配的,核心都是强调希望项目快速更新迭代(当项目需要快速更新迭代时微服务架构就特别合适)(这就是为什么使用微服务)

我们知道一个朴素的理念,没有任何事物是完美的,任何东西都有两面性,有得必有失,那么在选择微服务在解决了快速响应和弹性伸缩的问题同时,它又给我们带来了什么问题?

简单总结如下(微服务架构的缺点):

  • 分布式系统的复杂性
  • 部署,测试和监控的成本问题
  • 分布式事务和 CAP 的相关问题
  • 分布式中微服务架构相对于单体架构还需要处理很多事情。例如:分布式事务、团队合作等问题都需要明确的提前设计好。