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

    【微服务带来的好处】

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Kubernetes 集成研发笔记
    Rust 1.44.0 发布
    Rust 1.43.0 发布
    PAT 甲级 1108 Finding Average (20分)
    PAT 甲级 1107 Social Clusters (30分)(并查集)
    PAT 甲级 1106 Lowest Price in Supply Chain (25分) (bfs)
    PAT 甲级 1105 Spiral Matrix (25分)(螺旋矩阵,简单模拟)
    PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)
    java 多线程 26 : 线程池
    OpenCV_Python —— (4)形态学操作
  • 原文地址:https://www.cnblogs.com/HappyBeibei/p/12900965.html
Copyright © 2011-2022 走看看