深入了解微服务的优点与缺点
微服务架构(MicroserviceArchitecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
1、微服务的优点:
关键点:复杂度可控,独立按需扩展,技术选型灵活,容错,可用性高。
①它解决了复杂性的问题。它会将一种怪异的整体应用程序分解成一组服务。虽然功能总量不变,但应用程序已分解为可管理的块或服务。每个服务都以RPC或消息驱动的API的形式定义了一个明确的边界;Microservice架构模式实现了一个模块化水平。
②这种架构使每个服务都能够由专注于该服务的团队独立开发。开发人员可以自由选择任何有用的技术,只要该服务符合API合同。当然,大多数组织都希望避免完全无政府状态并限制技术选择。然而,这种自由意味着开发人员不再有义务使用在新项目开始时存在的可能过时的技术。在编写新服务时,他们可以选择使用当前的技术。此外,由于服务相对较小,因此使用当前技术重写旧服务变得可行。
③Microservice架构模式使每个微服务都能独立部署。开发人员不需要协调部署本地服务的变更。这些变化可以在测试后尽快部署。例如,UI团队可以执行A|B测试,并快速迭代UI更改。Microservice架构模式使连续部署成为可能。
④Microservice架构模式使每个服务都可以独立调整。您可以仅部署满足其容量和可用性限制的每个服务的实例数。此外,您可以使用最符合服务资源要求的硬件。
2、微服务的缺点
关键点(挑战):,系统部署依赖,服务间通信成本,数据一致性,系统集成测试,重复工作,性能监控等。
①一个缺点是名称本身。术语microservice过度强调服务规模。但重要的是要记住,这是一种手段,而不是主要目标。微服务的目标是充分分解应用程序,以便于敏捷应用程序开发和部署。
②微服务器的另一个主要缺点是分布式系统而产生的复杂性。开发人员需要选择和实现基于消息传递或RPC的进程间通信机制。此外,他们还必须编写代码来处理部分故障,因为请求的目的地可能很慢或不可用。
③微服务器的另一个挑战是分区数据库架构。更新多个业务实体的业务交易是相当普遍的。但是,在基于微服务器的应用程序中,您需要更新不同服务所拥有的多个数据库。使用分布式事务通常不是一个选择,而不仅仅是因为CAP定理。许多今天高度可扩展的NoSQL数据库都不支持它们。你最终不得不使用最终的一致性方法,这对开发人员来说更具挑战性。
④测试微服务应用程序也更复杂。服务类似的测试类将需要启动该服务及其所依赖的任何服务(或至少为这些服务配置存根)。再次,重要的是不要低估这样做的复杂性。
⑤Microservice架构模式的另一个主要挑战是实现跨越多个服务的更改。例如,我们假设您正在实施一个需要更改服务A,B和C的故事,其中A取决于B和B取决于C.在单片应用程序中,您可以简单地更改相应的模块,整合更改,并一次性部署。相比之下,在Microservice架构模式中,您需要仔细规划和协调对每个服务的更改。例如,您需要更新服务C,然后更新服务B,然后再维修A.幸运的是,大多数更改通常仅影响一个服务,而需要协调的多服务变更相对较少。
⑥部署基于微服务的应用程序也更复杂。单一应用程序简单地部署在传统负载平衡器后面的一组相同的服务器上。每个应用程序实例都配置有基础架构服务(如数据库和消息代理)的位置(主机和端口)。相比之下,微服务应用通常由大量服务组成。例如,每个服务将有多个运行时实例。更多的移动部件需要进行配置,部署,扩展和监控。此外,您还需要实现服务发现机制,使服务能够发现需要与之通信的任何其他服务的位置(主机和端口)。传统的基于故障单和手动操作的方法无法扩展到这种复杂程度。因此,成功部署微服务应用程序需要开发人员更好地控制部署方法,并实现高水平的自动化。
Java大厂面试题免费领
深入了解微服务的优点与缺点相关推荐
- 微服务升级优点_微服务–——定义, 原则 和 优点
微服务是业界最新的流行语,似乎每个人都在以这样或那样的方式谈论它.让我们理解一下什么是微服务?通过这篇教程我们将理解微服务的定义,概念以及微服务的原理. 微服务的定义 如今,微服务是SOA(面向服务的 ...
- 微服务升级优点_SpringCloud微服务架构升级总结
原标题:SpringCloud微服务架构升级总结 1.1 应用系统的架构历史 1.2 什么是微服务? 起源:微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章" ...
- 《微服务:从设计到部署》中文版
本书为 Chris Richardson 和 Floyd Smith 联合编写的微服务电子书 Designing and Deploying Microservices 中文版,其从不同角度全面介绍了 ...
- 微服务软件架构的认识和设计模式
什么是微服务? 微服务存在多种定义. 如果搜索 Internet,会发现许多有用的资源,这些资源提供了自己的观点和定义. 但在微服务的以下大部分特性上,已广泛达成共识: 封装客户方案或业务方案. 你要 ...
- 基于微服务的软件架构模式
今天阅读了两篇关于微服务的文章,总结一些笔记,不敢贸然翻译:一是因为水平不够,翻译的过程会丢掉作者的原意:二是因为技术翻译是一个略微吃力不讨好的活. 微服务(micro services)这个概念不是 ...
- 什么是微服务?微服务架构的优缺点、应用
什么是微服务?微服务架构的优缺点.应用? 微服务(micro services)这个概念不是新概念,很多公司已经在实践了,例如亚马逊.Google.FaceBook.Alibaba.微服务架构模式(M ...
- 微服务精华问答 | 微服务有什么优点和不足呢?
戳蓝字"CSDN云计算"关注我们哦! 过去几年来,"微服务架构"这个术语出现了,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式.尽管这种架构风格 ...
- 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式
文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...
- 为什么通过微服务的方法构建应用程序?
作为软件开发人员,我们已知道思考如何将应用程序因数分解成组件部分. 这是对象导向.软件抽象和组件化的中心模式. 现在,这种因数分解往往以共享库和技术层之间的类与接口呈现. 通常采用一种分层方法,有后端 ...
最新文章
- ASP.NET Razor – C# 循环和数组简介
- 第一次,人类在人工神经网络中发现了“真”神经元
- CCNP-22 路由重发布2(BSCI)
- python pip 报错 Command “python setup.py egg_info“ failed with error code 1 解决方法
- 低压抽屉柜常见故障处理方法_电磁流量计的常见故障及处理方法
- frida的用法--Hook Java层类方法
- css 一侧是三角形的矩形_5种具有CSS形状和滤镜的精美图像效果
- java 只有日期的类_JAVA日期和时间类彻底解决(1)[转]
- WPF自定义控件之列表滑动特效 PowerListBox
- linux as5 启动mysql_Red Hat AS5进入救援模式的步骤
- 2019年全网首发-vSphere 7之VCSA 7.0 RC部署指南(转载)
- Git版本恢复命令reset(转载)
- JMeter测试实例
- 坐标拾取器功能实现demo
- Exporting the operator hardsigmoid to ONNX opset version 11 is not supported
- centos 7.6 安装mariadb
- VirtualBox 虚拟机里网络很慢的解决方法
- 可以免费下载视频素材和模板网站汇总
- android 延时拍照,手机如何延时拍摄 手机延时拍摄技巧有哪些
- MA均线指标详解、价托、量托
热门文章
- [转载] Python 3.x | 史上最详解的 导入(import)
- [转载] python 一个简单的天气预报程序
- java获取当前行数
- 洛谷 题解 P2117 【小Z的矩阵】
- Linux中的的虚拟WEB主机的几点总结
- 固定日期时间倒计时,倒计时不可点击,普通倒计时
- SpringBoot私人学习笔记
- oracle+110个常用函数
- 兔子--html,js,php,ASP,ASP.NET,JSP的关系
- YOLO系列专题——YOLOv1实践篇