SOA架构

SOA是Service-Oriented Architecture 是一种面向服务的分布式架构的治理系统确保架构有条不絮的演进.

1.应用服务架构的演变史



* ORM单一应用架构:最开始数据量很小,系统中的所用的模块,功能全都放在同一台机器上的架构
* MVC垂直应用架构:
随着访问量的逐渐增加,单一应用靠横向增加机器的效果越来越小,我们可以将应用拆分为几个互不相干的应用,以提升效率,此时用于加速前端页面开发的Web框架MVC是关键
* PRC远程过程调用架构:
垂直应用架构难以应付复杂的业务场景,团队的协作效率差,公共功能重复开发越来越多的缺点暴露出来,引出了PRC架构,这时的架构已经有了服务的思想,垂直的应用之间必不可少有交互的地方,我们将核心业务抽取出来,作为独立的服务,逐渐成为稳定的服务中心,使前端能更快速的相应多变的市场需求,此时,用于提高业务复用性的分布式服务框架(RPC)是关键
* SOA服务化架构:
RPC架构使服务之间的依赖关系变得错综复杂,很难分清哪个应用要再哪个应用前启动,当调用量越来越大,服务的容量出现问题,不知道服务该加多少台机器什么时候加,好像服务治理问题应该解决一下,这时SOA服务化架构出场,SOA提供了服务注册中心,动态的注册和发现服务,接口之间通过明确的协议和接口进行通信,为了达到系统的独立性伸缩性更好的隔离和开发,把系统从两个角度进行拆分,纵向拆分:根据业务的特性把业务不同的模块拆分成独立的.横向拆分:将核心,公共的业务拆分出来通过分布式服务框架对业务进行服务化,消费者通过标准的契约来消费这些服务.拆分之后随着服务数的增多,需要一个服务治理框架,有效的管理服务,目前比较成熟的服务框架有Spring
cloud
和阿里巴巴的Dubbo框架,和非开源的阿里巴巴的HSF框架,这些服务框架不仅实现了RPC的远程服务调用方案,并且提供了服务治理和服务注册中心这样的SOA服务治理方案
* 微服务:
SOA解决了应用服务化的问题,随着服务化的深入,服务治理的问题越来越多,这时候出现了微服务的思想,微服务架构是由多个微小的服务架构构成,每个服务就是一个可以独立可部署的单元和组件,他们是分布式的互相解耦的,通过轻量级的远程通信协议来进行交互,每个服务可以用不同的数据库,不同的语言,彼此微小轻量,但又方便组合和重构;Docker的出现让微服务这么火,因为Docker让微服务有个完美的运行环境
总结:RPM单机时代-->垂直架构:系统根据业务拆分--->RPC分布式服务式思想的提出-->

SOA:RPC的服务治理架构--->微服务:一个个微小便于组合完全隔离的单元组件

 

2.Dubbox分布式服务框架

1.简介

Dubbox是一个分布式服务框架
其前身是阿里巴巴开源项目Dubbo,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo的基础上进行优化,并继续维护,为了与原有的Dubbo进行区分,顾将器命名为Dubbox

Dubbox致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案
,简单的说:Dubbox就是一个服务框架,如果没有分布式的服务需求,是不需要的,只有在分布式的时候,才有Dubbox这样的分布式服务框架的需求.本质上是个服务调用的东西,是个远程服务调用的分布式框架

2.原理



节点说明:

* Provider(供应商提供者):暴露服务的服务提供方
* Consumer(消费者):调用远程服务的服务消费方
* Register:服务注册与发现的注册中心
* Monitor(监视器):统计服务的调用次数和调用时间的监控中心
* Container(容器):服务运行的容器
调用关系说明:

     0. start:服务容器负责启动,加载,运行服务提供者

* register:服务提供者在启动时,向注册中心注册自己提供的服务
* subscribe(订购):服务消费者在启动时,向注册中心订阅自己所需的服务
* notify(通知):注册中心返回服务提供者地址列表给消费者.如果有变更,注册中心将基于长链接推送变更数据给消费者
* invoke(调用):服务消费者从提供者的地址列表中,基于负载均衡算法,选一台提供者进行调用,如果调用失败再选另一台调用
* count:统计服务消费者和服务提供者累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
 

3.服务注册中心Zookeeper(动物园管理员)

1.介绍:

zookeeper是Apache
Hadoop的子项目,是一个属性的目录服务,支持变更推送,并不是Dubbox生产出来的,Dubbox在选用注册中心的时候候选的有zookeeper和Redis,最终权衡之后选了Zookeeper作为自己的注册中心组件

2.Zookepper在linux系统上的安装

步骤一:安装JDK

步骤二:拷入Zookeepr的压缩包并解压.

步骤三:在解压之后的文件夹下新建一个文件夹data用于存放注册表



步骤四:进入conf目录,把zoo.sample.cfg文件改名为zoo.cfg

步骤五:更改zoo.cfg配置文件 声明注册表存放的位置为刚才新建的data目录,查看链接的端口号



步骤六:进入bin目录下 启动zkService.sh文件



 

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信