查看原文
其他

技术探讨 | 微服务架构与SOA架构的区别到底在哪里?

2016-11-03 何明璐 联奕看教育

9月20日,“微服务·大智慧——2016教育信息化交流暨新品发布会(华南站)”在广州举行。会议中,联奕科技发布了全新的基于微服务架构的智慧校园解决方案。参会老师对微服务架构的理念产生了浓厚的兴趣,也发出了“微服务架构与SOA架构的区别到底在哪里”的疑问。为此,我们也遍寻资料,希望能从不同角度解答此问题:


微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。每个小应用从前端web ui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。在这里我们不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身的能力朝外部发布为服务。

如果一句话来谈微服务和SOA的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。

把这个核心搞清楚后,再来看下网上找到的对微服务架构的一些定义和阐述:
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。
关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程。

微服务不需要像普通服务那样成为一种独立的功能或者独立的资源。定义中称,微服务是需要与业务能力相匹配,这种说法完全正确。不幸的是,仍然意味着,如果能力模型粒度的设计是错误的,那么,我们就必须付出很多代价。如果你阅读了Fowler的整篇文章,你会发现,其中的指导建议是非常实用的。在决定将所有组件组合到一起时,开发人员需要非常确信这些组件都会有所改变,并且规模也会发生变化。服务粒度越粗,就越难以符合规定原则。服务粒度越细,就越能够灵活地降低变化和负载所带来的影响。然而,利弊之间的权衡过程是非常复杂的,我们要在配置和资金模型的基础上考虑到基础设施的成本问题。

再强调下:
1首先对于应用本身暴露出来的服务,是和应用一起部署的,即服务本身并不单独部署,服务本身就是业务组件已有的接口能力发布和暴露出来的。了解到这点我们就看到一个关键,即我们在进行单个应用组件设计的时候,本身在组件内部就会有很大接口的设计和定义,那么这些接口我们可以根据和外部其它组件协同的需要将其发布为微服务,而如果不需要对外协同我们完全可以走内部API接口访问模式提高效率。
2其次,微服务架构本身来源于互联网的思路,因此组件对外发布的服务强调了采用HTTP Rest API的方式来进行。这个也可以看到在互联网开放能力服务平台基本都采用了Http API的方式进行服务的发布和管理。从这个角度来说,组件超外部暴露的能力才需要发布为微服务,其本身也是一种封装后的粗粒度服务。而不是将组件内部的所有业务规则和逻辑,组件本身的底层数据库CRUD操作全部朝外部发布。否则将极大的增加服务的梳理而难以进行整体服务管控和治理。
3微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台使部署、管理和服务功能交付和迭代变得更加简单。


读完本段资料,您是否有答案了呢?如果有不同见解,欢迎您留言给小编^_^

※本文资料来源于知乎

作者简介:何明璐,擅长个人知识管理,系统思维,SOA和云计算,企业私有云PaaS平台,IT咨询和规划,企业架构,CMMI和敏捷开发,软件工程等。


您可能还感兴趣:

微服务•大智慧——2016教育信息化交流暨新品发布会(华南站)在广州举行

督促学生复习,广州大学有特殊技巧

仰着头去谈各种高大上的概念,不如在当下解决好实际存在的问题——今天抢课,你死机了吗?最佳实践 | 北京建筑大学,优化学生校园一卡通补办业务流程,提升服务体验

最佳实践 | 南京信息工程大学:高校微信企业号正式启航



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存