透过现象看soa与微服务的本质
透过现象看soa与微服务的本质
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
我前面去面试,都总是会问到有没有使用过微服务架构。我都会毫不犹豫的说有。然后接着就会问我对微服务的理解。对于这么泛的问题,如果你用一句话来概括说**服务拆分** ,那么恭喜你答对了最浅显的一部分。面试官接着问,微服务和soa的区别是啥,当时我就有点混乱了。感觉soa也像是微服务啊,但就是组织不了语言来说区别。于是我下来就各种渠道去学习,在这我就做一些我的一下个人总结以及我的个人理解,有不对的地方望各位兄弟指点。提示:以下是本篇文章正文内容,下面案例可供参考
一、概括
SOA(safe operation area 安全操作区域)是面向服务架构的一种设计模式。
竖形结构 – 因为他的拆分力度小 强调服务独立,因此弱化服务之间调用。
微服务(类似soa只是做了升华)
网状结构 – 拆分力度大,彻底的进行拆分组件,服务之间通信多,因此需要强调服务调用,以及更强的服务管理。
二、示例
例如一个电商系统,如果是你,你是不是会按下面的服务进行拆分Soa:
拆分成支付系统,用户系统,订单系统,商品管理系统。
服务间调用实现有SOAP(http+xml),REST(http+json),RPC(socket)等来进行通信。
微服务:
支付系统会拆分为更细的(微信支付服务,支付宝支付服务,银联支付服务等)
用户系统(角色服务,资源服务,用户服务等)
订单系统(虚拟商品服务,实体商品服务等)
商品管理 (虚拟商品服务,实体商品服务等)
三、总结
我个人觉得如果真的要去实现微服务,其实对服务管理成本挺大的,得有比较优秀的管理工具来进行管理,现在有k8s+docker,以及基于zipkin的Dapper链路跟踪来进行更好的思维头绪化。以前有一个自称微服务专家的跟我们培训说如何来进行微服务划分。他总结了2个字–可弃(如果需要大改造,不如弃用从新搞一个新的)。
现在大部分的微服务其实也是按粗粒度的服务划分然后再使用微服务的调用方式来搭建的。
因此我的理解也就是微服务也soa 没有太大的本质区别,非要说区别的话总结为
服务划分(40%),
服务管理(40%),
服务之间通信(20%)
最后在这里又不得不提现在又比较流行的领域驱动模型(ddd)。后面我找个时间来进行解读。
本文地址:https://blog.csdn.net/u013192244/article/details/108216070