首页 > 其他分享 >基于微服务的解决方案的缺点

基于微服务的解决方案的缺点

时间:2022-12-29 18:56:30浏览次数:29  
标签:基于 需要 服务 解决方案 通信 应用程序 缺点 使用 客户端

    基于微服务的解决方案有一些缺点:  

分布式应用程序

分布式应用程序增加了开发者在设计和生成服务时的难度。 例如,开发者必须使用 HTTP 或 AMPQ 等协议实现服务间通信,这会增加测试和异常处理的复杂性。 还会增加系统延迟。  

部署复杂性

如果应用程序具有许多微服务类型,且需要高可伸缩性(需要能为一个服务创建许多实例且在许多主机中实现服务均衡),这意味着 IT 运营和管理需要应对高度部署复杂性。 如果不使用面向微服务的基础结构(如业务流程协调程序和计划程序),为应对增加的复杂性所作的开发工作可能比业务应用程序本身多得多。  

原子事务

多个微服务之间的原子事务通常不可能。业务要求必须接受多个微服务之间的最终一致性。  

增加全局资源需求(所有服务器或主机的总内存、驱动器和网络资源)

在许多情况下,如果用微服务方法替代整体式应用程序,新的基于微服务的应用程序所需的初始全局资源数量超过原始整体式应用程序的基础结构需要。此方法是因为更高程度的粒度和分布式服务需要更多全局资源。 但是,由于与开发整体式应用程序所需的长期成本相比,资源成本通常较低,且具有能够横向扩展应用程序的某些区域的优点,因此增加资源使用量好过使用大型、长期应用程序。  

客户端到微服务直接通信的问题

对于拥有许多微服务的大型应用程序,如果应用程序需要客户端到微服务直接通信,则存在难题和限制。 一个问题是客户端和每个微服务公开的 API 的需要之间可能存在不匹配。 在某些情况下,客户端应用程序可能需要进行许多单独的请求,以构成 UI,这在 Internet 中效率低下,且在移动网络中不切实际。 因此,仅尽量减少从客户端应用程序到后端系统的请求。 客户端到微服务直接通信的另一个问题是某些微服务可能使用不支持 Web 的协议。 一个服务可能使用二进制协议,而另一个服务可能使用 AMQP 消息。 这些协议不支持防火墙,最好在内部使用。 通常情况下,应用程序应针对防火墙外的通信使用 HTTP 和 WebSockets 等协议。 但是,客户端到服务直接方法的另一个缺点是难以重构这些微服务的协定。 一段时间后,开发者可能需要更改系统分区到服务的方式。 例如,它们可能会合并两个服务或将一个服务拆分为两个或多个服务。 但是,如果客户端直接与服务进行通信,执行这种重构可能会破坏与客户端应用的兼容性。 正如体系结构部分所述,如果基于微服务设计和生成复杂应用程序,需要考虑使用多个细化 API 网关,而不是使用较简单的客户端到微服务直接通信方法。

 

微服务分区

最后,无论针对微服务体系结构采用哪种方法,另一个难题是确定如何将端到端应用程序分区到多个微服务。  基本上,需要确定要从其他区域分离的应用程序区域,以及具有较少硬依赖项的区域。 在许多情况下,此方法与按用例划分的分区服务一致。 例如,在 e-shop 应用程序中,订购服务负责与订购流程相关的所有业务逻辑。 目录服务和购物篮服务则负责实现其他功能。 理想情况下,每个服务应仅具有一小部分职能。 此方法类似于应用于类的单一责任原则 (SRP),该原则声明一个类应仅具有一个更改原因。 但我们现在探讨的是微服务,因此范围比单个类要大。 最重要的是,微服务必须是端到端且自治的,包括对其自己的数据源负责。      

标签:基于,需要,服务,解决方案,通信,应用程序,缺点,使用,客户端
From: https://www.cnblogs.com/yourstars/p/17013266.html

相关文章

  • 1、基于Mac进行弱网环境的搭建和使用
    背景:在Mac机器上可以利用NetworkLinkConditioner(NLC)模拟一个弱网络环境 操作步骤:(Mac端)1、下载Xcode软件,执行如下操作,跳转到https://developer.apple.com/down......
  • error Delete `␍` prettier/prettier 错误解决方案
    问题根源:罪魁祸首是git的一个配置属性:core.autocrlf由于历史原因,windows下和linux下的文本文件的换行符不一致。Windows在换行的时候,同时使用了回车符CR(carriage-retu......
  • 基于LightGBM算法实现数据挖掘!
    ​ Datawhale干货 作者:黄雨龙,中国科学技术大学对于回归问题,Datawhale已经梳理过​​完整的实践方案(可点击)​​,本文对多分类的数据挖掘问题做了完整的方案总结。一、赛题数......
  • 基于智慧路灯杆的居民小区消防监测应用
    随着城市化的高速发展,城市承载了越来越多的常住人口,居民小区的体量也不断扩大。小区里面的楼栋更多、布局更复杂、人员更密集,火灾的隐患也随之大大增加,关乎到人民群众生命......
  • [arXiv18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
    原文链接:​​FasterShift-ReduceConstituentParsingwithaNon-Binary,Bottom-UpStrategy​​论文地址:​​FasterShift-ReduceConstituentParsingwithaNon-......
  • 城市通信管线资源管理解决方案
    01 背景随着新基建发展,智慧+项目如火如荼,网络畅通、高速成为了刚需,城市通信网络管线资源重要性不言而喻,在实际项目中,我们也不难发现有关于“通信网络管线管理”“光缆资源......
  • python3.7导入gevent模块报错的解决方案
    pip3install-U--force-reinstall--no-binary:all:gevent附上参数说明-U,--upgradeUpgradeallspecifiedpackagestothenewestavailableversion.Thehand......
  • 基于边缘计算网关的空压机监测应用
    空压机是工业生产中常见的设备,要保障生产作业处于高效率状态,就需要实现对各种工业机械设备运行状态的实时监测、故障预警和及时保养维护。传统的人工巡检、抽检模式越来越......
  • 同一网页,本机打不开,其他电脑可以打开,解决方案
    具体原因,博主暂时没有找到,不过,经过以下几步的尝试,博主解决了问题。1.查看网络属性,是否之前又被改动修改为如下所示2.以管理员方式运行命令提示符先查看DNS缓存记......
  • 基于Qt的桌面客户端组件化框架DT 开源啦
    这个是本人在工作中基于QT开发的组件化桌面开发框架,目前打算开源出来提供给大家,节省大家的开发时间和效率,希望对大家的开发有所帮助,也欢迎提出意见和改进建议1.为什么开源D......