“微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操作。
在笔者看来,微服务架构的演变更像是一个公司的发展过程,从最开始的小公司,到后来的大集团。大集团可拆分出多个子公司,每个子公司的都有自己独立的业务、员工,各自发展,互不影响,合起来则是威力无穷。
臃肿的系统、重复的代码、超长的启动时间带给开发人员的只有无限的埋怨,丝毫没有那种很舒服的、很流畅的写代码的感觉。他们把大部分时间都花在解决问题和项目启动上面了。
微服务架构的优势
使用微服务架构能够为我们带来如下好处:
1)服务的独立部署
每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
2)服务的快速启动
拆分之后服务启动的速度必然要比拆分之前快很多,因为依赖的库少了,代码量也少了。
3)更加适合敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
4)职责专一,由专门的团队负责专门的服务
业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
5)服务可以动态按需扩容
当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
6)代码的复用
每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。
微服务架构的劣势
微服务其实是一把双刃剑,既然有利必然也会有弊。下面我们来谈谈微服务有哪些弊端,以及能采取什么办法避免。
1)分布式部署,调用的复杂性高
单体应用的时候,所有模块之前的调用都是在本地进行的,在微服务中,每个模块都是独立部署的,通过 HTTP 来进行通信,这当中会产生很多问题,比如网络问题、容错问题、调用关系等。
2)独立的数据库,分布式事务的挑战
每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这种模式的优点在于不同的服务,可以选择适合自身业务的数据,比如订单服务可以用 MySQL、评论服务可以用 Mongodb、商品搜索服务可以用 Elasticsearch。
缺点就是事务的问题了,目前最理想的解决方案就是柔性事务中的最终一致性,后面的章节会给大家做具体介绍。
3)测试的难度提升
服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的,这时自动化测试就显得非常重要了,如果要靠人工一个个接口去测试,那工作量就太大了。这里要强调一点,就是 API 文档的管理尤为重要。
4)运维难度的提升
在采用传统的单体应用时,我们可能只需要关注一个 Tomcat 的集群、一个 MySQL 的集群就可以了,但这在微服务架构下是行不通的。当业务增加时,服务也将越来越多,服务的部署、监控将变得非常复杂,这个时候对于运维的要求就高了。
相关推荐
### SpringCloud-微服务课程笔记知识点总结 #### 一、Spring Cloud 概述 - **定义**:Spring Cloud 是一个基于 Spring Boot 的开发工具包,主要用于构建分布式系统和微服务架构。 - **特点**: - **服务注册与发现...
1-4SpringCloud-微服务架构的优缺点.avi 1-5SpringCloud-为什么选择SpringCloud构建微服务.avi 2-1SpringCloud-SpringCloud是什么.avi 2-2SpringCloud-SpringCloud的版本.avi 2-3SpringCloud-SpringCloud开发环境....
【SpringCloud微服务架构视频】是一系列视频教程,总计五十一课,专注于讲解SpringCloud的原理及实践操作,尤其适合初学者和希望深入理解微服务架构的开发者。本教程的前十二节已提供,后续内容可通过作者的博客获取...
基于Spring Boot与Spring Cloud的微服务安全架构,主要关注点是使用JWT(JSON Web Token)作为微服务之间的认证和授权机制,这在当今云计算和分布式系统架构中是非常关键的部分。整个文档描述了在构建和维护微服务...
07.硅谷学习_SpringCloud_微服务优缺点 08.硅谷学习_SpringCloud_微服务技术栈有哪些 09.硅谷学习_SpringCloud_为什么选择SpringCloud作为微服务架构 10.硅谷学习_SpringCloud_SpringCloud是什么 11.硅谷学习_...
相比之下,Spring Cloud是一整套微服务解决方案,包含多个子项目,如Spring Cloud Config(配置管理)、Spring Cloud Netflix(包含Eureka服务发现、Zuul智能路由等组件),提供了构建分布式系统所需的全套工具。...
Spring Cloud是微服务架构的一套完整工具包,它提供了一系列子项目,这些子项目利用Spring Boot的开发便利性简化了分布式系统基础设施的开发,例如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等...
### Spring Cloud 微服务架构详解 #### 一、微服务入门 ...以上就是Spring Cloud微服务架构的相关知识点介绍。通过本篇文章的学习,希望读者能够对微服务架构有一个全面深入的理解,并能够在实际项目中灵活运用。
本篇将详细解析Spring Cloud微服务面试的相关知识点,帮助求职者更好地准备面试。 1. **微服务概念与优势** - 微服务是一种架构风格,它将单一应用程序拆分为一组小的服务,每个服务都在自己的进程中运行,服务...
SpringCloud和Dubbo是两种不同的微服务解决方案。Dubbo具有服务治理能力,包括服务发现、监控和负载均衡等,它的设计更倾向于提供一种高性能、长连接的服务交互方式。而SpringCloud由众多子项目组成,提供了包括配置...
### SpringCloud微服务基础知识解析 #### 一、项目架构演进概述 在现代软件开发过程中,随着业务复杂度和技术需求的不断提升,项目架构也经历了从单点系统到分布式架构的演变。下面我们将深入探讨其中的关键知识点...
Spring Cloud 学习笔记 本笔记主要介绍了从单体架构到微服务架构的演变过程,以及 Spring Cloud 中的微服务架构搭建。下面是本笔记的详细知识点总结: 一、单体架构 单体架构是指整个系统只有一个工程,打包往往...
07.尚硅谷_SpringCloud_微服务优缺点 08.尚硅谷_SpringCloud_微服务技术栈有哪些 09.尚硅谷_SpringCloud_为什么选择SpringCloud作为微服务架构 10.尚硅谷_SpringCloud_SpringCloud是什么 11.尚硅谷_SpringCloud_...
【Spring Cloud微服务架构设计与开发实践】 Spring Cloud是一个基于Spring Boot实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、...
SpringCloud是Java领域中广泛使用的微服务框架,它基于Spring Boot构建,旨在简化分布式系统开发。SpringCloud提供了一整套微服务解决方案,包括服务注册与发现、配置中心、全链路监控、服务网关、负载均衡、熔断器...
SpringCloud是目前非常流行的一站式微服务解决方案,它提供了众多工具和服务,帮助开发者构建、部署和管理分布式系统。在微服务架构中,SpringCloud扮演着核心的角色,它集成了许多开源项目,如Eureka(服务发现)、...
【SpringCloud 微服务工具集】是针对微服务架构的一整套工具集合,它旨在简化构建和管理分布式微服务的复杂性。SpringCloud基于Spring Boot的成熟性和易用性,为开发者提供了许多开箱即用的服务,如服务发现、配置...
1. **Spring Cloud**:Spring生态系统下的微服务框架,提供了服务发现、配置中心、断路器、API网关等一系列组件,便于快速构建微服务系统。 2. **Dubbo**:阿里巴巴开源的RPC框架,支持服务治理,适用于构建高性能、...
本文档总结了微服务架构的优缺点、单体架构、分布式架构和微服务架构的特征,并介绍了 SpringCloud 的基本概念和组件。 微服务架构的优缺点 ------------------- 微服务架构的优点: * 降低服务耦合度 * 有利于...