• 架构师基本功:SOA


    (以下内容为个人理解,可能不够全面和准确)

    SOA (service-oriented architecture),面向服务的架构

    啥是SOA?网上的解释,玄而又玄。俺说点人话,也许不准确,但现阶段我就是酱紫理解的:SOA就是搞一个独立的系统,对外提供服务。其他系统有相同的需求,无须再开发,就调用它的服务即可。

    一、SOA的优点
    1、显而易见,一些功能部署成公用服务,利于重用
    2、由于其他系统与服务之间松散耦合,可提高伸缩性
    3、公用服务,集中自成一系统,利于维护
    4、服务集中部署,利于减轻其他系统压力,提高性能

    二、SOA的缺点
    1、安全性问题复杂
    服务与调用系统不在同一系统,解决安全性问题较为复杂。可以使用单点登录,oAuth2,或者证书什么的,复杂得很。

    2、使用复杂
    如何调用这些服务?web api还好,webservice、wcf、或者rpc(远程过程调用)之类,我觉得很费周折。

    3、性能问题
    上面的优点说,服务集中部署,可提高性能,但这是对整个系统层面来说的;如果单就调用一次服务,我觉得横跨两个子系统,有网络,有接口,速度要比同一系统内打上折扣。比如说,webservice,又是soap,又是xml,传递大的数据,肯定慢死了。rpc还好一点。

    4、稳定性问题
    本来一个系统,硬是拆成了2个,这其中接口、路径就多了,风险点也增加了。一个环节出问题,系统就得瘫痪。

    三、SOA适用场景
    适用于不同且异构的系统,或分布式系统之间共用相同的服务。不同且异构的意思是,首先是两个系统,然后它们是不同语言开发,且没有共享数据库。

    四、SOA不适用场景
    如果是同构系统,比如相同语言开发,那么将服务编译成dll,分别调用即可。或者数据库是大家共用,一般也可以直接读取,无须搞什么服务。

    五、SOA种类
    1、以前的什么corba,dcom就不说了

    2、webservice
    (使用比较简便)

    3、wcf
    (麻烦得很)

    4、rpc

    5、web api(最好是符合Restful原则)

    =========================================

    六、SOA的衍生品:EDA(Event-Driven SOA, 事件驱动的SOA)。

    参考资料:
    EDA 和 SOA 的融合以及实践

  • 相关阅读:
    Linux设备驱动第六篇:高级字符驱动操作之iotcl
    Stack的三种含义
    用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发
    学会思考技术背后的那些思想和本质
    Rails 4.0.0 开发环境一切正常,到生成环境发现 无法找到 css 和 js
    一加手机,迟到的惊喜
    附近的人计算方法-----使用mysql脚本计算方法
    如何将Superset嵌入后台系统之实践
    这里是纯干货!2018年深度学习的10个发展预测
    这里是纯干货!2018年深度学习的10个发展预测
  • 原文地址:https://www.cnblogs.com/leftfist/p/6808732.html
Copyright © 2020-2023  润新知