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

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

大家好,我是IT修真院武汉分院的柯诗阳,一枚正直纯洁善良的java程序员。

今天给大家分享一下,修真院官网java任务九,深度思考中的知识点:

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

 

1.背景介绍:

SOA,SCA,微服务解决的问题

(1)实现了业务组件和传输协议的分离,可以处理各种平台组件的集成

(2)使构建在各种各样的系统中的服务,以一种统一和通用的方式进行交互

(3) 松散程序耦合度,对应用组件进行分布式部署,组合和使用

2.知识剖析:

(1)什么是SOA

一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。

(2)什么是SCA

一套符合SOA思想的规范

(3)什么是微服务

原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成

 

3.常见问题:

如何使用SOA

4.解决方案

 任务八、任务九中的springRMI和Tuscany都是javaRMI中的一种框架

首先分离web端和service端,然后在service端暴露相应的接口,web端通过这个接口可以调用service中定义的方法

5.编码实战:

 1.编写配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://dubbo.apache.org/schema/dubbo
        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <import resource="spring-applicationContext.xml"/>
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="consumer-of-helloworld-app"  />

    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry id="server" address="zookeeper://localhost:2181" check="false" />

    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="userService" interface="com.ksy.service.UserService" check="false" />
    <dubbo:reference id="studentService" interface="com.ksy.service.StudentService" check="false"/>
    <dubbo:reference id="professionService" interface="com.ksy.service.ProfessionService" check="false"/>
</beans>

 

2.程序中加载配置文件

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"/spring/consumer.xml"});
context.start();

6.拓展思考:

 

SOA和微服务的区别

SOA和微服务的主要区别:

 

         微服务剔除SOA中复杂的ESB企业服务总线,所有的业务智能逻辑在服务内部处理,使用Http(Rest API)进行轻量化通讯

         SOA强调按水平架构划分为:前、后端、数据库、测试等,微服务强调按垂直架构划分,按业务能力划分,每个服务完成一种特定的功能,服务即产品

         SOA将组件以library的方式和应用部署在同一个进程中运行,微服务则是各个服务独立运行。

         传统应用倾向于使用统一的技术平台来解决所有问题,微服务可以针对不同业务特征选择不同技术平台,去中心统一化,发挥各种技术平台的特长。

         SOA架构强调的是异构系统之间的通信和解耦合;(一种粗粒度、松耦合的服务架构)

         微服务架构强调的是系统按业务边界做细粒度的拆分和部署。

 

 

 

7.参考文献:

 

  1. 百度百科

  2. https://www.jianshu.com/p/3df22c4b9d2f

  3. https://blog.csdn.net/joy_91/article/details/35232995

  4. https://blog.csdn.net/zpoison/article/details/80729052

 

8.更多讨论:

Q1:微服务有什么优点

A1:(1)      独立部署,灵活扩展

      传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件(如用户服务、商品服务等)为单位进行部署。

(2)      资源的有效隔离

      微服务设计原则之一,就是每一个微服务拥有独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效的避免了服务之间争用数据库和缓存资源所带来的问题。

同时,由于每一个微服务实例在Docker容器上运行,实现了服务器资源(内存、CPU资源等)的有效隔离。

(3)      团队组织架构的调整

       微服务设计的思想也改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端、后端、DBA、测试分别有自己对应的团队,属于水平团队组织架构。而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。但实际上在企业中并不会把团队组织架构拆分得这么绝对,垂直架构只是一种理想的架构。

 

Q2:微服务和普通应用有什么不同?

A2:微服务是一种架构模式,其核心是将一个单体应用分成多个部分进行开发。所以微服务架构的应用程序,其本质上是一个分布式应用。
基于微服务架构构建的应用程序,可以让业务变化更快,整体系统可靠性更高。

 

Q3:SCA与web service是什么关系?

A3:SCA是由BEA、IBM、Oracle等知名中间件厂商联合制定的一套符合SOA思想的规范。就只是大家约定而成的一种规范

 

9.结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

 

PPT链接 视频链接

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

------------------------------------------------------------------------------------------------------------
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。

技能树.IT修真院