zoukankan      html  css  js  c++  java
  • 微服务

    微服务架构似乎跟SOA非常相似,或者说,根本就是同一个东西,只是换了一个名称而已。

    二者本质上都是组件化,将一个大系统拆分成若干个独立的小系统,再通过接口和服务组合起来。

    不同之处在于粒度不一样:SOA面向较大型项目,分拆成多个应用;或者是将原本存在的多个应用,通过公共服务和接口而接合起来,组成一个大型系统;而微服务架构则是将单个应用再分割,分割成若干个微服务。

    这里写图片描述

    这样做的可取之处,或者是出发点,无非就是为了

    1、系统逻辑架构清晰

    2、提高复用性

    3、提高开发效率
    由于各个组件或服务有相对独立性,在开发过程中利于分开开发,提高效率;

    4、方便单独部署

    但凡事有利有弊:

    1、由于组件或服务数量多,交互和依赖增多,提高了整个系统的复杂度

    2、同时组件之间存在依赖,降低系统的稳定性;如果被众多依赖的服务或组件出问题,系统可能瘫痪。

    3、本来在系统内可以很方便访问的东西,可能改为调用服务,降低了系统的效率

    4、整体部署复杂,本来只部署一个,现在N个

    为什么会发展出微服务这种模式呢?如果搞过java web项目可能就比较容易理解。java web项目,可以搞成一个war包,扔在tomcat的webapps里。这个war包,里面就包含了一个网站项目的所有,包括逻辑、页面,样式,脚本,十分符合微服务架构描述中的一个“巨大应用”的特征。

    那么将这个大war包,拆成若干个小war包,每个小war包可以直接复用,或者交由不同团队开发,肯定非常的快速、敏捷。接着是快速部署,微服务和docker应该是绝配。这样就可以进行所谓的AB测试了。就是同一个功能开发出AB两份,经测试、对比,从中选一份。微服务跟互联网息息相关,符合互联网应用快速迭代、不断试错的要求。

    这里写图片描述

    我在网上搜了许多有关微服务与SOA的区别的文章,每篇文章都非常的长,说了一大通,根本不能三言两语明确指出区别在哪里。这恰恰说明,二者其实区别不大。SOA中的大项目与微服务架构中的大应用,其界限是模糊的。

    以上,是个人对微服务的一点理解。

    架构师基本功:SOA

    docker

  • 相关阅读:
    python BUGGGGGGGGGG
    Golang channel底层原理及 select 和range 操作channel用法
    Go reflect包用法和理解
    Golang 之sync包应用
    Golang 之 sync.Pool揭秘
    深入理解字节码文件
    java中的回调,监听器,观察者
    范式
    BIO,NIO,AIO总结(二)
    anaconda命令行运行过程中出现的错误
  • 原文地址:https://www.cnblogs.com/leftfist/p/6808627.html
Copyright © 2011-2022 走看看