什么是SOA,什么是SCA,什么是微服务?
这里是修真院后端小课堂,每篇分享文从
八个方面深度解析后端知识/技能,本篇分享的是:
【什么是SOA,什么是SCA,什么是微服务?】
各位朋友好!我来自IT修真院深圳分院的第11期学员,并是一位品行端正、心地善良且专业的Java开发人员。
今天跟大家介绍一下修真院学院官网的JAVA任务九中的一个重要知识点:SOA是什么?SCA是什么?微服务又是什么呢?
1 背景介绍
从RMI入手学习服务架构
2 知识剖析
2.3 什么是SCA?
SCA作为一个规范体系结构描述了基于SOA架构构建企业级应用系统的完整方法论框架。它为企业应用开发人员提供了标准化的服务组件设计与集成模式参考依据。
2.4 什么是微服务?
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
2.5 微服务由来
微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
3 常见问题
1、 如何搭建一个SpringCloud项目
4 解决方案
1、见编码实战
5 编码实战
SpringCloud项目结构
pom文件
6 扩展思考
6.1 什么是单体架构?
一个归档包(例如war格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体架构。
6.2 单体架构和微服务有什么区别?
单体架构所有的模块全都耦合在一块,代码量大,维护困难,微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。
单体架构所有的模块都共用一个数据库,存储方式比较单一,微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。
单体架构所有的模块开发所使用的技术一样,微服务每个模块都可以使用不同的开发技术,开发模式更灵活。
7 参考文献
、百度百科
8 更多讨论
8.1 SCA的特点有哪些?有什么优势?
SCA可通过显著简化基于SOA构建商业应用程序的过程,提供层次分明的组件体系结构。它通过层次分明的设计理念实现了模块化开发目标,并在此基础上形成了灵活高效的系统架构。
通过分离传统中间件编程与业务逻辑实现这一关键步骤,从而减轻了开发人员对其复杂性担心,使他们能够将更多精力投入到核心业务逻辑的设计与实现中。
SCA方法的优势主要体现在以下几个方面:
1.优化了业务组件的开发流程
2.优化了基于服务架构构建商业解决方案的过程
3.增强了系统在不同环境下的适应性和资源利用率
4.防止了底层技术变更对核心业务功能的影响
5.提升了系统的测试效率和质量
8.2 为什么需要微服务?
在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于 SOA 早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如:J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。最终 SOA 看起来很美,但却成为了企业级奢侈品,中小公司都望而生畏。
8.3 微服务有什么缺点?
运维开销及成本增加:整体应用可能只需部署至一小片应用服务区集群,而微服务架构可能变成需要构建/测试/部署/运行数十个独立的服务,并可能需要支持多种语言和环境。这导致一个整体式系统如果由20个微服务组成,可能需要40~60个进程。
隐式接口及接口匹配问题:把系统分为多个协作组件后会产生新的接口,这意味着简单的交叉变化可能需要改变许多组件,并需协调一起发布。在实际环境中,一个新品发布可能被迫同时发布大量服务,由于集成点的大量增加,微服务架构会有更高的发布风险。
分布式系统的复杂性:作为一种分布式系统,微服务引入了复杂性和其他若干问题,例如网络延迟、容错性、消息序列化、不可靠的网络、异步机制、版本化、差异化的工作负载等,开发人员需要考虑以上的分布式系统问题。
异步机制:微服务往往使用异步编程、消息与并行机制,如果应用存在跨微服务的事务性处理,其实现机制会变得复杂化。
