“微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操作。
在笔者看来,微服务架构的演变更像是一个公司的发展过程,从最开始的小公司,到后来的大集团。大集团可拆分出多个子公司,每个子公司的都有自己独立的业务、员工,各自发展,互不影响,合起来则是威力无穷。
臃肿的系统、重复的代码、超长的启动时间带给开发人员的只有无限的埋怨,丝毫没有那种很舒服的、很流畅的写代码的感觉。他们把大部分时间都花在解决问题和项目启动上面了。
微服务架构的优势
使用微服务架构能够为我们带来如下好处:
1)服务的独立部署
每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
2)服务的快速启动
拆分之后服务启动的速度必然要比拆分之前快很多,因为依赖的库少了,代码量也少了。
3)更加适合敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
4)职责专一,由专门的团队负责专门的服务
业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
5)服务可以动态按需扩容
当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
6)代码的复用
每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。
微服务架构的劣势
微服务其实是一把双刃剑,既然有利必然也会有弊。下面我们来谈谈微服务有哪些弊端,以及能采取什么办法避免。
1)分布式部署,调用的复杂性高
单体应用的时候,所有模块之前的调用都是在本地进行的,在微服务中,每个模块都是独立部署的,通过 HTTP 来进行通信,这当中会产生很多问题,比如网络问题、容错问题、调用关系等。
2)独立的数据库,分布式事务的挑战
每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这种模式的优点在于不同的服务,可以选择适合自身业务的数据,比如订单服务可以用 MySQL、评论服务可以用 Mongodb、商品搜索服务可以用 Elasticsearch。
缺点就是事务的问题了,目前最理想的解决方案就是柔性事务中的最终一致性,后面的章节会给大家做具体介绍。
3)测试的难度提升
服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的,这时自动化测试就显得非常重要了,如果要靠人工一个个接口去测试,那工作量就太大了。这里要强调一点,就是 API 文档的管理尤为重要。
4)运维难度的提升
在采用传统的单体应用时,我们可能只需要关注一个 Tomcat 的集群、一个 MySQL 的集群就可以了,但这在微服务架构下是行不通的。当业务增加时,服务也将越来越多,服务的部署、监控将变得非常复杂,这个时候对于运维的要求就高了。
相关推荐
1-4SpringCloud-微服务架构的优缺点.avi 1-5SpringCloud-为什么选择SpringCloud构建微服务.avi 2-1SpringCloud-SpringCloud是什么.avi 2-2SpringCloud-SpringCloud的版本.avi 2-3SpringCloud-SpringCloud开发环境....
07.硅谷学习_SpringCloud_微服务优缺点 08.硅谷学习_SpringCloud_微服务技术栈有哪些 09.硅谷学习_SpringCloud_为什么选择SpringCloud作为微服务架构 10.硅谷学习_SpringCloud_SpringCloud是什么 11.硅谷学习_...
07.尚硅谷_SpringCloud_微服务优缺点 08.尚硅谷_SpringCloud_微服务技术栈有哪些 09.尚硅谷_SpringCloud_为什么选择SpringCloud作为微服务架构 10.尚硅谷_SpringCloud_SpringCloud是什么 11.尚硅谷_SpringCloud_...
07.尚硅谷_SpringCloud_微服务优缺点 08.尚硅谷_SpringCloud_微服务技术栈有哪些 09.尚硅谷_SpringCloud_为什么选择SpringCloud作为微服务架构 10.尚硅谷_SpringCloud_SpringCloud是什么 11.尚硅谷_SpringCloud_...
004-微服务的优点.mp4章节1-什么是微服务\千锋java教程:005-微服务的缺点.mp4章节1-什么是微服务\千锋java教程:006-CAP 定理与 BASE 理论mp4.mp4章节1-什么是微服务\千锋java教程:007-如何应对高并发.mp4章节10-...
框架,springcloud,nacos 当A微服务调用B微服务(B 重定向了server.servlet.context-path),那么A调用B失败,网上大部分是@FeignClient 添加path方案 缺点:耦合高,难以维护 进行整改 B添加配置文件 spring: ...
微服务治理框架的选择:对比Spring-Cloud和Istio.docx
Spring Cloud实战微服务,单体架构的优缺点,微服务的解释,微服务具有的特性,微服务带来的挑战1.1微服务概述.ppt
1. 什么是微服务架构 2. 为什么需要学习Spring Cloud 4. SpringCloud的优缺点 5. SpringBoot和SpringCloud的
将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值业务需求技术栈成本组织架构可扩展性可维护性单一应用架构垂直应用架构分布式服务架构流动计算架构优点容易测试容易部署缺点开发效率低...
接下来我们就来了解一下每种系统架构是什么样子的, 以及各有什么优缺点。 1.1.1 单体应用架构 互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这 样可以减少开发、部署和...
随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。 从互联网早起到现在,系统架构大体经历了下面几个...接下来我们就来了解一下每种系统架构是什么样子的, 以及各有什么优缺点。
这是个老生常谈的问题,每个技术团队在业务转型微服务化架构的时候都纠结过这个选型问题; 首先,dubbo 之前确实在 2012 年的时候发布了最后一个版本 2.5.3 并且停止维护更新,在2017年的时候又”起死回生“,官方...
cloud是基于国内的Spring Cloud(Hoxton.SR1)+ SpringBoot(2.2.2.RELEASE)微服务化开发平台,具有统一授权,认证后台管理系统,其中包含用户管理,资源权限管理,网关API管理,分布式事务,大文件断开点分片续传...
本文将介绍微服务架构的演进、优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力、解决哪些问题才能更好的支撑企业应用架构。 微服务平台也是我目前正在参与的,还在研发过程中...
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP...
从基础开始,只要你有spring cloud和容器相关的经验就可以上手学习了 案例实战,学习框架最好的途径就是动手实战 课程内容 整次课程分为3大部分: 第一部分是ServiceMesh相关的介绍 架构的发展历史 istio基本介绍 ...
java lru leetcode 互联网 Java 工程师进阶知识完全扫盲 本项目大部分内容来自中华石杉,版权归作者所有...微服务的优缺点分别是什么?说一下你在项目开发中碰到的坑? Eureka 和 Zookeeper 都可以提供服务注册与发现的
java lru leetcode 互联网 Java 工程师进阶知识完全扫盲 本项目大部分内容来自中华石杉,版权归作者所有...微服务的优缺点分别是什么?说一下你在项目开发中碰到的坑? Eureka 和 Zookeeper 都可以提供服务注册与发现的
SpringCloud微服务学习笔记 项目地址: 单体架构(Monolithic架构) Monolithic比较适合小项目 单体架构优点: 开发简单直接,集中式管理, 基本不会重复开发功能都在本地,没有分布式的管理开销和调用开销。 单体架构...