什么是SOA架构
SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式(根据应用程序的不同功能单元进行拆分)。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。其实SOA架构更多应用于互联网项目开发。
为什么互联网项目会采用SOA架构呢?随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,迫切需一个治理系统确保架构有条不紊的演进。
注:对于大型互联网项目,垂直应用架构已经不适应需求(所谓垂直架构就是MVC三层架构:Model --> view–>Controller),那么就需要使用SOA架构进行分布式架构
“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。
服务方:service 层(暴露接口) , 消费方:controller层(远程注入)
**逻辑详解:**服务方类似房东有房出租,消费方类似租客要租房,房东出租房子找到中介(注册中心),告诉中介自己的房子地址大小等信息,租客找中介租房,中介会根据租客请求等信息,找到房东
节点角色说明:
- Provider: 暴露服务的服务提供方。
- Consumer: 调用远程服务的服务消费方。(通过订阅服务–>找到注册中心)
- Registry:服务注册与发现的注册中心。(Registry本身时一个应用,服务方启动时会把自己的信息在注册中心注册,dubbox推荐使用zookeeper做为注册中心)
- Monitor: 统计服务的调用次调和调用时间的监控中心。
- Container: 服务运行容器。
调用关系说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。(服务方启动时会把自己的信息在注册中心注册)
- 服务消费者在启动时,向注册中心订阅自己所需的服务。(通过订阅服务–>找到注册中心)
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推
送变更数据给消费者。 - 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,
如果调用失败,再选另一台调用。 - 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计
数据到监控中心。
Dubbo+zookeeper环境配置,请分别参考以下博客:
搭建服务提供者
服务提供者Dubbo配置
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--服务提供方:当前应用名称,一般同项目名(此名称给注册中心识别) -->
<dubbo