SOA和微服务架构的区别是什么?
笔者目前就职于国内知名互联网公司,做过toG和toB的私有化项目的微服务架构设计,也做过大型产品层面的微服务架构设计,就SOA和微服务架构的区别这个问题,来谈一谈我的看法 。不同的声音某些针对微服务架构的批评声称微服务其实就是SOA,并没有新鲜的内容 。在某些层面,它们的确有些相似 。SOA和微服务架构都是特定的架构风格,它们都以一系列服务的方式来把一个系统组织在一起 。
但如果深入研究,你就会发现微服务和SOA之间巨大的差异 。SOA与微服务差异SOA与微服务的差异主要体现在三个方面:服务间通信、数据管理、服务规模:1 服务间通信SOA和微服务架构通常采用完全不同的技术栈:SOA采用智能管道,如Enterprise Service Bus(ESB,是包含了业务和消息处理的智能管道),往往采用重量级协议,例如SOAP或其他WS*标准;微服务使用哑管道,例如消息代理,或者服务之间点对点通信,例如restfull请求或者grpc类的轻量级协议 。
2 数据管理SOA和微服务架构在处理数据的方式上也不尽相同:SOA采用全局数据模型并共享数据库;微服务架构则是每个服务都有自己的数据模型和数据库 。更进一步,每一个服务一般都拥有属于它自己的领域模型 。(笔者后续会有文章专门讲述领域模型设计)3 服务规模SOA和微服务架构之间的另一个重要区别就是服务的尺寸(规模):SOA善于集成大型、复杂的单体应用程序;微服务则是拆分为较小的服务SOA与微服务架构图一个典型的SOA系统架构如下:一个典型的微服务架构如下: 。
系统软件架构中,现在很流行微服务,那么使用微服务就一定好么?微服务有哪些缺点呢?
下面简单回答下这个问题 。在回答这个问题前还是先回顾下微服务架构 。微服务架构概述微服务架构本质是单个业务系统彻底的组件化(前端,逻辑层,数据库)解耦,同时相互之间通过轻量的服务接口和协议进行协同 。这和很早就谈到的组件化架构思想是一致的,实现微服务架构后,你会看到没有传统业务系统的概念了,有的只是微服务模块或小应用 。
【什么是微服务架构,微服务框架】微服务架构最近又炒的相当活,很多人会说SOA过时了,ESB过时了,甚至还有人用微服务架构去彻底的否定SOA和ESB,这些都是相当危险的信号 。在我12,13年写企业私有云PaaS平台的一系列文章的时候,已经提出了业务能力组件化,组件服务化的微服务架构思想,但是实际应用实施效果并不太理想 。我们可以先看下从单体应用到微服务架构的变化图 。
把这个核心搞清楚后,再来看下网上找到的对微服务架构的一些定义和阐述:微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通” 。关键在于该服务可以在自己的程序中运行 。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来 。在服务公开中,许多服务都可以被内部独立进程所限制 。
如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围 。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程 。微服务不需要像普通服务那样成为一种独立的功能或者独立的资源 。定义中称,微服务是需要与业务能力相匹配,这种说法完全正确 。不幸的是,仍然意味着,如果能力模型粒度的设计是错误的,那么,我们就必须付出很多代价 。
推荐阅读
- 是额外维度的发现,引力波的发现
- Ray迷你投影仪评测,便携式迷你投影仪
- 哪个版本的苹果便宜,苹果哪个版本最便宜
- 三星g950w是哪个版本,edge型号公布
- 买什么版本手机好用,这几个版本性价比高
- 刷机好嘛,极度刷机好不好
- oppo手机最新款,为什么oppoa8玩不了光遇手机已经升级到最新版本了呀
- 电脑显示屏,怎样判断自己的电脑显示器是不是液晶显示器
- 百加手机,百加手机用起来是不是手感怎么样
- 华为g9 plus,华为G9 Plus好不好,优缺点,是否值得买