知道SOA是为了解耦,但网上讲的都太偏理论和抽象。哪位大神能基于自己熟悉的实际软件系统,讲讲区别:传统的是分哪些模块(按技术组件分?),用SOA又是怎么分模块?
知道SOA是为了解耦,但网上讲的都太偏理论和抽象。哪位大神能基于自己熟悉的实际软件系统,讲讲区别:传统的是分哪些模块(按技术组件分?),用SOA又是怎么分模块?
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
假设我要做几道菜:
以前我的做法:
我要做麻婆豆腐,先洗豆腐,然后找到豆瓣酱,把豆瓣酱炸出香味,然后我想到还需要辣椒,我就去切辣椒,切完辣椒放进去后,我发现还需要姜蒜,我去切了姜蒜,然后和烧好的豆瓣酱一起煎出香味,倒入豆腐翻两圈开始焖。
焖好麻婆豆腐之后,我要素炒小青菜。
我立即去洗小青菜,然后烧好油后发现还少了姜蒜,我就去切姜蒜,一阵手忙脚乱,小青菜炒好了。
如此重复进行炒西红柿炒蛋。
有了SOA之后:
我先剁好一小碗姜末;
我先剁好一小碗蒜末;
先切好青菜
先找好豆瓣酱
先洗好豆腐
先切好西红柿
然后,我想要什么服务,直接取。(嗯,这里可能来说是一个人的SOA)
后来,我为了想提高效率,叫我老婆来一起帮忙准备这些材料,后面,突然有10个朋友来我家,要做的菜式更多了,然后我叫几个朋友一起帮准备各种材料。
这里面的思想还可以发散。后面的不想说了。
我想了一下,再补充一下
对于第一种情况,假设我每种菜要做10份,那么再叫来9个人和我一起重复上面的事情(多个服务器部署同一套系统)
而后面有了SOA,我每一个人就只关注自己的具体逻辑,比如切青菜的专门切青菜,洗青菜的专门洗青菜等等,对于厨师(用户),想要做一份西红柿炒蛋,那他就去拿西红柿和打好的蛋就好了,如果想做个西红柿焖大肠,那么他就取取切好的西红柿和切好的大肠就好了,分工明确,各司其职。