0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

微服务优缺点解析

lhl545545 来源:电子发烧友网 2018-02-09 09:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

首先,微服务不是一个名字,而是一个架构的概念,就像Restful不仅仅是描述api的格式,而更多的是描述基于Restful API的架构是一样的。微服务架构(MSA)是对原来的大型系统而言的,通过横向或者纵向、业务或者架构切分,将一个大型的系统分散成很多微型小系统。当系统复杂到一定程度时,几十号人共同维护一个系统的效率很低,而且出问题的风险也很高。

这时候就需要对系统进行切分,很早之前提出的SOA系统,和微服务的架构理念不谋而合。大家现在使用的基于RPC框架(dubbo、thrift等)的架构也可以视为一种微服务。微服务到现在为止还没有确切的边界和定义,貌似计算机上很多概念都定义不出来边界。但是,我理解微服务之间的通信是http通信,传统rpc调用方式并不是严格的微服务,因为他不能自理,需要依赖,比如可能必须某个rpc服务Producer存在的情况下,rpc服务的Consumer才能启动起来。所以,下文中的讨论,我都以微服务之间以http通信为前提。

微服务有什么好处

解耦:对于我们底层程序员而言,看得见的好处就是解耦。我要实现一个功能,可能并不需要很深入的了解别人的代码,因为程序员嘛,可能都觉得别人的代码是个渣渣([哭笑不得])。我可以新作一个微服务,这个服务为其他功能提供服务,又不依赖于原来已有的功能,至于业务逻辑,可以一边上手一边熟悉 内聚,可以独立部署:意思就是我维护的这个微服务,可以独立部署,对其他服务不会是强依赖,不会存在因为其他服务不存在而造成我自己的服务不能启动或者不可用的问题。

分布式:微服务架构下不存在一个特别大的系统包含很多中心功能,这样也能提高容错性,一个服务的瘫痪并不会让整个系统瘫痪 权限验证:微服务是高度内聚的服务,我自己的这个服务,我可以定制任意合理规则,而这个规则又只适用于我自己的服务。相比于dubbo RPC调用,http微服务调用的权限验证可以更直接更严格更定制化,而rpc调用时的权限验证,我个人始终觉得不能做的很优雅 数据分开治理,自带分库属性:原来的大系统使用一个数据库,当数据很多流量很大时,就会涉及到分库分表。

而微服务下,每个服务是否使用数据库,数据库是和其他服务公用还是自建,都有很大灵活性,即我觉得微服务自带分库分表属性 系统不会被长期限制在某个技术栈上,在微服务的架构下,整个系统不会受限于java或者nodejs 或者go,而是大家协同不冲突,全部http协议,json格式 各个模块的单元测试容易自动化 等

微服务面临的挑战

通信,http请求速度慢,通常一个操作可能会涉及到多个微服务的相互调用,如果为了完成一个操作而多次从服务端调用不同的微服务,http请求的耗时可能会成为瓶颈,如图1所示。

微服务优缺点解析

客户端与服务端的通信需要一个 API GateWay:通常情况下,客户端和微服务们不在一起,而各个微服务会集中部署在一个机房,那微服务之间的互相调用是很快速的,但是客户端和微服务之间的调用会是耗时的。而且,用户的一个动作不能在客户端进行多次连续调用,这样一来速度慢,二来会有泄漏系统架构的风险。正常情况下,在客户端和微服务架构之间会有一个API GateWay。

如图1变成图2所示,GateWay最重要的作用是为客户端提供后台服务的聚合,提供一个统一的服务出口,解除他们之间的耦合,为了解决API Gateway单点故障点或者性能瓶颈,通常Gateway也是一个集群,而且客户端的访问控制、账号管理、登录管理等切面通常会在这里处理

微服务优缺点解析

微服务很多时,整个链路可能很长,调用失败的风险高,而且e2e自动化测试会成为一个问题 服务注册和服务发现,我司有自己的服务管理系统。我推荐etcd。Google开源的Kubernetes(k8s)貌似也是使用的这个。 分布式事务,这个是微服务系统的大难点,可能需要根据自己系统的情况和业务需求进行定制了,我推荐补偿性分布式事务和基于消息的分布式事务。(下次有时间介绍一下常用的集中分布式事务要怎么做)

基于微服务架构和架构实施过程中存在的优点和缺点:

采用微服务架构的优点

采用微服务架构可以更好的实现DevOps开发运维一体化,同时因为微服务架构下各个微服务模块相对独立和松耦合,因此在后续业务变更的分析和处理中往往能够更加敏捷快速的响应,同时相对影响也最小。

整个业务系统水平扩展更加容易,单体应用要扩展往往数据库是大问题,而在微服务架构下实现了单体应用的垂直拆分,可以更加容易的通过廉价的X86服务器资源来实现水平扩展。

通过微服务架构可以更好的提升各个模块的可复用性和可组装性。通过微服务架构更好的实现了原单体应用内部各个组件或模块的彻底解耦,通过解耦本身也降低了原单体应用内部的复杂度。

可以使研发过程根据敏捷和小团队化,包括和敏捷软件开发最佳实践更好的匹配,每个微服务模块都可以形成独立的敏捷小团队进行开发和部署上线。

进一步在传统单体应用内部实施SOA参考架构思想,体现业务能力组件化,组件能力服务化,同时也可以更好贯彻各个能力中心和前端应用组件的分离,实现共性能力下沉和复用。

采用微服务架构的缺点或困难

微服务架构需要开发团队本身具备较强的团队管理能力,软件研发技能,因为管控的粒度单位已经从原有业务系统变化为了微服务模块。

微服务架构本身会提升开发难度和工作量,特别是上层的跨多个微服务模块或组件的功能应用的实现,往往需要在前端进行服务组合而不是传统方式在数据库层做SQL关联。

由于各个微服务模块完全相对独立和松耦合,因此对于跨多模块业务带来的分布式事务问题是必须解决或找寻替代方案。特别是在微服务架构下数据库已经进行了垂直拆分,对于跨库访问本身的分布式事务一致性问题是最需要和重视的问题。

服务的治理将成为实施微服务架构中重点问题,包括了服务全生命周期管理,服务后期的运维和监控,性能分析,服务链监控等。如果企业本身的IT治理和SOA管控治理能力弱,那么及时开始正常实施了微服务架构,到了后期的运维管控也很难做的很好。其核心原因还是管控的粒度更加细,需要管控的微服务模块,服务接口都会呈现指数级增加。

集成复杂度增加,任何彻底的分解都将带来集成的复杂度,即模块在集成时候需要外部微服务模块更多的配合。

部署复杂度增加,由于微服务模块需要独立部署,往往涉及到多达上100个容器的安装和部署和集成等相关工作,这也是需要和Docker集成并实现自动部署的一个原因。

微服务很多时,整个链路可能很长,调用失败的风险高,而且e2e自动化测试会成为一个问题 服务注册和服务发现,我司有自己的服务管理系统。我推荐etcd。Google开源的Kubernetes(k8s)貌似也是使用的这个。 分布式事务,这个是微服务系统的大难点,可能需要根据自己系统的情况和业务需求进行定制了,我推荐补偿性分布式事务和基于消息的分布式事务。(下次有时间介绍一下常用的集中分布式事务要怎么做)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微服务
    +关注

    关注

    0

    文章

    147

    浏览量

    8058
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华纳云VPS容器服务网格流量管理:实现微服务高效路由

    在云计算和微服务架构日益普及的今天,华纳云香港VPS凭借其优越的地缘优势和网络自由,成为众多企业部署容器化应用的热门选择。复杂的微服务架构带来了流量管理的巨大挑战。本文将深入探讨如何利用容器服务
    的头像 发表于 10-16 17:09 391次阅读

    如何基于Nginx构建微服务网关

    今天,我将分享我们团队如何基于Nginx构建了一个日均处理10亿+请求的微服务网关,以及踩过的那些坑。这套方案已经稳定运行2年+,经历过多次大促考验。
    的头像 发表于 09-02 16:29 665次阅读

    电商API的微服务架构优化策略

    ​ 随着电子商务的快速发展,API(应用程序编程接口)已成为电商平台的核心组件,负责连接用户、商家和后台系统。微服务架构通过将应用拆分为独立、可扩展的服务单元,显著提升了系统的灵活性和可维护性。然而
    的头像 发表于 07-23 14:30 420次阅读
    电商API的<b class='flag-5'>微服务</b>架构优化策略

    PCBA 表面处理:优缺点大揭秘,应用场景全解析

    一站式PCBA加工厂家今天为大家讲讲PCBA加工如何选择合适的表面处理工艺?PCBA表面处理优缺点与应用场景。在电子制造中,PCBA板的表面处理工艺对电路板的性能、可靠性和成本都有重要影响。选择合适
    的头像 发表于 05-05 09:39 1155次阅读
    PCBA 表面处理:<b class='flag-5'>优缺点</b>大揭秘,应用场景全<b class='flag-5'>解析</b>

    CMOS,Bipolar,FET这三种工艺的优缺点是什么?

    在我用photodiode工具选型I/V放大电路的时候,系统给我推荐了AD8655用于I/V,此芯片为CMOS工艺 但是查阅资料很多都是用FET工艺的芯片,所以请教下用于光电信号放大转换(主要考虑信噪比和带宽)一般我们用哪种工艺的芯片, CMOS,Bipolar,FET这三种工艺的优缺点是什么?
    发表于 03-25 06:23

    微服务器架构几种典型的基础框架,你了解吗?

    SpringCloud、Dubbo、Dropwizard、Akka等是常见微服务框架。SpringCloud基于SpringBoot,生态丰富;Dropwizard轻量且继承SpringBoot优点
    的头像 发表于 03-04 11:05 834次阅读

    惠斯通电桥的优缺点分析

    惠斯通电桥作为一种经典的电阻测量工具,具有其独特的优缺点。以下是对惠斯通电桥优缺点的详细分析: 优点 高精度 : 惠斯通电桥通过比较电压差来精确测量电阻值,对于微小的电阻变化也能迅速作出反应,因此
    的头像 发表于 02-13 15:26 2077次阅读

    硅谷物理服务器的优缺点分析

    硅谷物理服务器因其高性能、高质量和先进的技术支持而在全球范围内享有很高的声誉。硅谷物理服务器的优缺点分析如下,主机推荐小编为您整理发布硅谷物理服务器的
    的头像 发表于 02-12 09:30 575次阅读

    香港主机托管和国内主机的优缺点比较

    香港主机托管和国内主机(以大陆主机为例)的优缺点比较,主机推荐小编为您整理发布香港主机托管和国内主机的优缺点比较,希望对您有帮助。
    的头像 发表于 02-05 17:42 707次阅读

    东京站群服务器有哪些优缺点

    东京站群服务器,作为部署在东京地区的服务器集群,专为站群优化而建,其优缺点如下,主机推荐小编为您整理发布东京站群服务器有哪些优缺点
    的头像 发表于 02-05 17:39 607次阅读

    模拟量信号的应用和优缺点

    在现代工业自动化、环境监测、科学研究等领域,模拟量信号作为一种基本且重要的信号形式,扮演着不可或缺的角色。本文将对模拟量信号进行深度解析,探讨其定义、工作原理、传输方式、应用以及优缺点,以期为相关领域的研究者和工程师提供参考。
    的头像 发表于 02-03 11:26 2216次阅读

    光谱传感器的优缺点

    光谱传感器是一种能够检测并响应光谱范围内不同波长光线的传感器。以下是对其优缺点的详细分析:
    的头像 发表于 01-27 15:28 1291次阅读

    NVIDIA 发布保障代理式 AI 应用安全的 NIM 微服务

    NVIDIA NeMo Guardrails 包含全新 NVIDIA NIM 微服务,能够为各行业构建 AI 的企业提高 AI 的准确性、安全性和可控性。   AI 智能体有望成为能够完成各种任务
    发表于 01-17 16:29 287次阅读

    微服务容器化部署好处多吗?

    微服务容器化部署好处有很多,包括环境一致性、资源高效利用、快速部署与启动、隔离性与安全性、版本控制与回滚以及持续集成与持续部署。这些优势助力应用可靠稳定运行,提升开发运维效率,是现代软件架构的优质选择。UU云小编认为微服务容器化部署好处主要体现在以下几个方面:
    的头像 发表于 01-17 10:22 566次阅读

    宝藏级微服务架构工具合集

    宝藏级热门微服务架构工具包含Spring Boot、Eclipse Vert.X、Kubernetes、Tyk、RabbitMQ、Apache Kafka等。其中,Spring Boot简化了微服务
    的头像 发表于 12-21 16:33 922次阅读