想问下 SOA 与微服务的区别

2020-06-24 07:52:02 +08:00
 zxc1234

请问

我上家公司用的微服务不是用 spring cloud,而是基于 dubbo 与 zookeeper,

我现在这家公司用的是 SOA,想问下

1.SOA 与微服务的区别是什么,应该也需要权限认证吧?没有负载均衡?

2.我的理解 soa 架构和微服务都是服务之间的调用,也都是经过平台,SOA 经过企业服务总线,微服务经过

zookpeerper,不知道我的理解对不对?

2514 次点击
所在节点    程序员
5 条回复
wc951
2020-06-24 08:49:40 +08:00
soa 和微服务都是概念性的而不是技术性的,只提供了能力描述而不负责具体实现
hantsy
2020-06-24 09:07:35 +08:00
以前看过国外的一些标题党的说法:
Microservice = SOA done right
Microservice = fine-grained SOA

@wc951 SOA 时代本身产生了一些系列标准,而不仅是概念。只要你经历那个时代( 10 年前左右),比如 Java EE 世界的,WS,SOAP,WSDL, BPEL,JBI,JAC,Enperprise EventBus 等,产生很多类似于 MuleSoft 等专业的 SOA 方案的公司。SOA 基本是企业应用时代的产物,更多的强调 Components 之间互通,高效协作。

微软在这方面产出多如牛毛。
hantsy
2020-06-24 09:21:08 +08:00
Microservice 也不是空中楼阁,Redhat 有一本免费电子书讲 MS 的 Patterns 。Microservices 最初倡导者 Chris Richardson 维护了一个网站: https://microservices.io/ 。如果你 5 年前开始做 MS,网络上 Chris Richardson 随处可以这个名字。当然国人很少喜欢看一些标准(约定,规范),也很少关注前人踩过的坑。什么都是喜欢自己随意来一套,一个简单 REST 设计,V 站的人一些见识已经领教过了,REST API 都可以一团糟的设计,微服务当然可以自己任何打扮成自己的样子。
hantsy
2020-06-24 09:37:46 +08:00
@zxc1234 不错,Event Bus 是 SOA 核心概念之一。其实不管他什么架构,还是其他语言写的系统 ,不同的领域的系统之间访问不难,只是繁琐。
1,使用公开协议
2,加一套完全隔离你要访问的系统对象
zealon
2020-06-24 12:54:13 +08:00
SOA 即面向服务架构,是一个很宽泛的概念,SOA 是面向宏观层面的架构,其带来的收益也最能在宏观层面体现,因此业界大多认为 SOA 的概念过于抽象、不接地气。可以理解为 SOA 是“模块化开发+分布式计算”。

微服务则是把模块化的功能进一步拆分多个独立的服务,服务之间通过远程通信来交互。

这里你说的企业服务总线,是中心化的一个组件,它可以接入各个系统提供的接口,然后以统一的格式进行输出,重点是中心化,不支持弹性扩容或缩容,性能有瓶颈,但是主要免电企业的,QPS 一般不会很大还好。

而 zookpeepter 这类能力的组件,起到的作用是注册中心,可以实现服务自动发现和注册,所以支持扩容缩容,可以无限横向扩展来支撑微服务的性能提升,这就是和企业服务总线不一样的地方,他只是处理发现和注册,不进行消息的转发和处理,真正服务间的通信还是点对点直接调用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/684316

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX