什么是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.参考文献:
-
百度百科
-
https://blog.csdn.net/joy_91/article/details/35232995
-
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.结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
------------------------------------------------------------------------------------------------------------
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。
技能树.IT修真院