什么是SOA,什么是SCA,什么是微服务?

这里是修真院后端小课堂,每篇分享文从java

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】mysql

八个方面深度解析后端知识/技能,本篇分享的是:程序员

【什么是SOA,什么是SCA,什么是微服务?】redis

 

 

你们好,我是IT修真院深圳分院第十一期学员,一枚正直纯洁善良的JAVA程序员。spring

今天给你们分享一下,修真院官网JAVA任务九的一个知识点:什么是SOA,什么是SCA,什么是微服务?sql

1    背景介绍
1.1    微服务的引入
从任务八的RMI开始,咱们逐渐接触到了一个新的概念,即服务架构。经过对服务架构的了解,咱们接触了几个概念:SOA、SCA、微服务,那么什么是SOA,什么是SCA,什么是微服务呢?
2    知识剖析
2.1    什么是SOA?
面向服务的架构(SOA)是一个组件模型,它将应用程序的不一样功能单元(称为服务)经过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操做系统和编程语言。这使得构建在各类各样的系统中的服务能够以一种统一和通用的方式进行交互。
2.2    SOA的特色有哪些?
A)SOA组件是松耦合的。当咱们说松耦合,这意味着每个服务是自包含单独存在的逻辑。举例来讲,咱们采起了“支付网关”的服务,并将它附加到不一样的系统。
B)SOA服务是黑匣子。在SOA中,服务隐藏有内在的复杂性。他们只使用交互消息,服务接受和发送消息。经过虚拟化一个服务为黑盒子,服务变得更松散的耦合。
C) SOA服务应该是自定义: SOA服务应该可以本身定义。
D) SOA服务维持在一个列表中: SOA服务保持在一个中央存储库。应用程序能够在中央存储库中搜索服务,并调用相应服务。
E) SOA服务能够编排和连接实现一个特定功能:SOA服务可使用了即插即用的方式。例如,“业务流程”中有两个服务“安全服务”和“订单处理服务”。从它的业务流程能够实现两种类型:一,您能够先检查用户,而后处理订单,或反之亦然。是的,你猜对了,使用SOA能够松散耦合的方式管理服务之间的工做流。
2.3    什么是SCA?
服务组件体系结构 (SCA) 是一个规范,它描述用于使用 SOA 构建应用程序和系统的模型。它可简化使用 SOA 进行的应用程序开发和实现工做。数据库

2.4    什么是微服务?
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每一个微服务仅关注于完成一件任务并很好地完成该任务。在全部状况下,每一个任务表明着一个小的业务能力。
2.5    微服务由来
    微服务最先由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每一个服务运行在本身的进程中,并使用轻量级机制通讯,一般是HTTP API,这些服务基于业务能力构建,并可以经过自动化部署机制来独立部署,这些服务使用不一样的编程语言实现,以及不一样数据存储技术,并保持最低限度的集中式管理。
3    常见问题
一、    如何搭建一个SpringCloud项目
4    解决方案
一、见编码实战
5    编码实战apache

SpringCloud项目结构编程

clipboard.png

pom文件后端

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jnshu</groupId><artifactId>carrots</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><modules><module>eureka-server</module><module>service-hi</module><module>config-server</module><module>service-zuul</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Finchley.SR1</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin></plugins></build><repositories><repository><id>spring-milestone</id><url>http://repo.spring.io/libs-release</url></repository></repositories></project>

6    扩展思考
6.1    什么是单体架构?
  一个归档包(例如war格式)包含了应用全部功能的应用程序,咱们一般称之为单体应用。架构单体应用的方法论,咱们称之为单体架构。
6.2    单体架构和微服务有什么区别?
单体架构全部的模块全都耦合在一块,代码量大,维护困难,微服务每一个模块就至关于一个单独的项目,代码量明显减小,遇到问题也相对来讲比较好解决。
单体架构全部的模块都共用一个数据库,存储方式比较单一,微服务每一个模块均可以使用不一样的存储方式(好比有的用redis,有的用mysql等),数据库也是单个模块对应本身的数据库。
单体架构全部的模块开发所使用的技术同样,微服务每一个模块均可以使用不一样的开发技术,开发模式更灵活。

7    参考文献
CSDN、百度百科
8    更多讨论

8.1  SCA的特色有哪些?有什么优点?
SCA 可简化使用 SOA 构建的业务应用程序的建立和集成。SCA 提供了构建粗粒度组件的机制,这些粗粒度组件由细粒度组件组装而成。
SCA 将传统中间件编程从业务逻辑分离出来,从而使程序员免受其复杂性的困扰。它容许开发人员集中精力编写业务逻辑,而没必要将大量的时间花费在更为底层的技术实现上。
SCA 方法的优点包括:
★简化业务组件开发 
★简化做为服务网络构建的业务解决方案的组装和部署 
★提升可移植性、可重用性和灵活性 
★经过屏蔽底层技术变动来保护业务逻辑资产 
★提升可测试性 

8.2    为何须要微服务?在传统的IT行业软件大多都是各类独立系统的堆砌,这些系统的问题总结来讲就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA服务化,可是,因为 SOA 早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,好比:J2EE。这致使不少企业的遗留系统很难对接,切换时间太长,成本过高,新系统稳定性的收敛也须要一些时间。最终 SOA 看起来很美,但却成为了企业级奢侈品,中小公司都望而生畏。8.3    微服务有什么缺点?运维开销及成本增长:总体应用可能只需部署至一小片应用服务区集群,而微服务架构可能变成须要构建/测试/部署/运行数十个独立的服务,并可能须要支持多种语言和环境。这致使一个总体式系统若是由20个微服务组成,可能须要40~60个进程。隐式接口及接口匹配问题:把系统分为多个协做组件后会产生新的接口,这意味着简单的交叉变化可能须要改变许多组件,并需协调一块儿发布。在实际环境中,一个新品发布可能被迫同时发布大量服务,因为集成点的大量增长,微服务架构会有更高的发布风险。分布式系统的复杂性:做为一种分布式系统,微服务引入了复杂性和其余若干问题,例如网络延迟、容错性、消息序列化、不可靠的网络、异步机制、版本化、差别化的工做负载等,开发人员须要考虑以上的分布式系统问题。异步机制:微服务每每使用异步编程、消息与并行机制,若是应用存在跨微服务的事务性处理,其实现机制会变得复杂化。

相关文章
相关标签/搜索