面向服务的架构(SOA)初探

SOA

  百科里面的定义:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
其实前面一句话才是重点,后面一句是废话:因为当今的服务间调用大都通过http请求调用,接口已经独立于操作系统、硬件平台和编程语言,而rpc调用已经有类似thrift之类的框架,你根本不清楚电脑对面(http请求)和你交谈的是人还是狗。
SOA的作用是让不同服务间的调用解耦,从服务间耦合的直接调用变成通过数据总线的调用。

消息总线

  数据总线是SOA的核心(面两张图引用自博客),下面两张图最能说明问题:它解决了服务之间复杂的依赖关系。至于消息总线的实现方式SOA是不管的,它更多的是一种思想,其中一种实现是:数据总线作为一个服务注册单元,服务通过它发现其它服务,而服务间的调用实际还是直接调用,并不走数据总线。这种实现和微服务非常相似,由此引出了SOA和微服务的区别的问题。
在这里插入图片描述
在这里插入图片描述

SOA和微服务的区别

  微服务的注册中心根据其它服务上报的心跳维护一份服务名单,服务A要调用服务B,它先从自己通过注册中心同步到本地的服务名单查找B的地址,再拼接请求去调用服务B。注册中心就是一个数据总线,A到B的请求并没有走数据总线,但是却通过数据总线达到了解耦的目的。SOA还有一个名称叫做服务治理,如果你搜索springcloud(微服务)服务治理,搜出来的一定是eureka,eureka就是springcloud的注册中心。
  SOA和微服务都被称作“架构”,而且看起来它俩好像没什么区别,我们不妨把SOA看做是比微服务抽象层次更高的一种架构,一种思想,把微服务看做一种实现,例如我们可以考虑设计另一种完全不同于微服务的数据总线:所有服务间调用的请求和响应数据全部走数据总线。这样看来,微服务只不过比SOA更接地气,在服务治理、负载均衡、路由等方面走得更远一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值