zoukankan      html  css  js  c++  java
  • 技术选型-微服务

    【微服务带来的好处】

    1.解耦合,维护和部署简单
    根据模块系统分开,一个模块需要修改的时候,对其他模块的影响最小,甚至没有影响,发布的时候只发布被修改的模块即可。
    微服务关键需要边界定义清楚 。

    2.服务可作为商品单独销售
    根据业务内容将服务分开,各个业务服务可以单独部署,对其他模块没有依赖。业务服务可以作为单独的商品销售。

    3.系统支持不同框架或开发语言
    每个单体应用可以使用不同的开发语言或框架。不局限于固定的技术栈,开发者可以自由选择开发技术,提供API服务。

    4.便于团队协作
    由于服务分开,当跨团队或跨公司或跨区域的时候,降低团队之间的强依赖关系。
    易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务。

    5.易于扩展
    当某一项服务的性能到达瓶颈,那么我们只需要增加该服务的节点数即可,其他服务无需变化。这种扩展更加具有针对性,能够充分利用计算机硬件/软件资源。
    而且只扩展单个服务影响的范围较小,从而系统出错的概率也就越低。微服务在重构后也能通过横向扩展,以较低的成本来增大系统的吞吐量,能够针对系统的瓶颈服务更有效的使用资源

    6.改善故障隔离。一个服务宕机不会影响其他的服务

    【使用微服务带来的弊端(挑战)】

    1.微服务将原来的函数式调用改为服务调用,不管是用rpc,还是http rest 方式,都是增大系统整体延迟。这个是再所难免的,这个就需要我们将原来的串行编程改为并发编程甚至异步编程,增加了技术门槛。

    2.微服务需要更多的技术全局考虑,
    比如服务之间的通信,调用链的监控,以及资源的分配,服务地址目录,服务健康度,部署困难,服务依赖问题,数据库分区问题。

    3.开发者需要应对创建分布式系统所产生的额外的复杂因素
    ・测试工作更加困难
    ・出现问题时定位问题的难度
    ・需要采用服务间的通讯机制
    ・很难在不采用分布式事务的情况下跨服务实现功能
    ・跨服务实现要求功能要求团队之间的紧密协作

  • 相关阅读:
    .net core 实现默认图片
    解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"
    c# 按位与,按位或
    找对象,贤妻良母vs事业型
    基于Redis的分布式锁和Redlock算法
    关于free如何知道要释放内存空间的长度问题(X86篇)
    OpenWrt开发教程(五)shell命令操作json api详解(jshn.sh)
    Linux常见错误码声明
    SDN实验---流表项对网络的影响
    delphi 给TComboBox 添加图标
  • 原文地址:https://www.cnblogs.com/HappyBeibei/p/12900965.html
Copyright © 2011-2022 走看看