SOA与微服务

写一点自己学习之后的理解,主要是为了加深理解以及作为日后回想的依据;
我并没有实际工业生产经验,写的不对的地方请多指教。

发展历史

从单机系统到分布式

应用程序开始时规模不大,单机就可以支持;但随着用户需求的不断增加,单一台服务器已经无法支撑;于是将一个大型的系统
拆分到多个服务器上,于是产生了分布式。

SOA

SOA是分布式的一种表现形式,全称是面向服务的架构(Service-oriented architecture)
主要解决的问题是,拆分后多个服务之间的复杂依赖关系,试想一种最坏的情况:每个服务要被其他所有服务依赖,每个服务也要
依赖其他所有服务,这样所有都强耦合在了一起,这该是多么糟糕。

SOA的实现方式是加入了一个帮观者,一个第三方——数据总线,所有的服务不再直接依赖服务,而是依赖于数据总线调用者需要调用某服务时,向数据总线发出请求,总线接受请求并转发到对应的服务去;而调用者不需要知道被调用服务的具体是怎样、在哪里,只需要想总线请求。
通过这样的方式便可以实现服务与服务之间的解藕
通过定义服务的接口规范,服务与服务的具体实现便可以完全解藕,每个服务只需遵从接口规范就可以实现依赖

微服务

微服务是在SOA出现之后才发展起来的,微服务的目的也是为将服务分割放到多个服务器上

微服务的实现方法是通过将服务注册到服务注册中心,需要调用服务时通过服务注册中心获取服务

SOA与微服务的区别

  • 实现技术上

    • SOA可以通过Dubbo等框架实现
    • 微服务使用SpirngCloud等框架
  • 传输协议及消息载体

    • Dubbo用的rpc (远程过程调用)——服务消费者(comsumer)将要调用的方法及参数序列化后发送给服务提供者(provider),provider将消息反序列化,provider运行之后将结果序列化后再发回给consumer,consumer再反序列化得到想要的结果
    • 微服务采用http协议——使用restful API进行传输

写到这其实有点迷惑,因为实现的技术以及采用的协议并不应该作为区分SOA和微服务的依据。


  • 真正的区别:服务的划分
    • SOA没有将服务完全划分,数据库没有分开
    • 微服务每个服务都是可以独立运行的小系统

当然 分库之后就要面临分布式事物的问题,传统的单机数据库可以达到ACID的要求,而在分布式的情况下适用CAP理论以及BASE理论。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值