1.概念
1.1 SOA
面向服务架构,SOA是一种思想
1.2 SOA的服务的实现RPC(远程过程调用协议,客户端(A)通过互联网调用远程服务器,不知道远程服务器具体实现,只知道远程服务器提供了什么功能.)
Dubbo 做为服务,WebService 做为服务,Dubbox 做为服务
1.3 Dubbo(12年停止维护,17后又在维护)
一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案.
1.4 Dubbo架构图
Provider :提供者,服务发布方.
Consumer:消费者, 调用服务方
Container:Dubbo容器.依赖于Spring容器.
Registry: 注册中心.当Container启动时把所有可以提供的服务列表上Registry中进行注册.作用:告诉Consumer提供了什么服务和服务方在哪里.
Monitor:监听器
虚线都是异步访问,实线都是同步访问
蓝色虚线:在启动时完成的功能
红色虚线(实线)都是程序运行过程中执行的功能
所有的角色都是可以在单独的服务器上.所以必须遵守特定的协议.
运行原理:
启动容器,相当于在启动Dubbo的Provider
启动后会去注册中心进行注册.注册所有可以提供的服务列表
在Consumer启动后会去Registry中获取服务列表和Provider的地址.进行订阅.
当Provider有修改后,注册中心会把消息推送给Consumme, 使用了观察者设计模式(又叫发布/订阅设计模式)
根据获取到的Provider地址,真实调用Provider中功能.在Consumer方使用了代理设计模式.创建一个Provider方类的一个代理对象.通过代理对象获取Provider中真实功能,起到保护Provider真实功能的作用.
Consumer和Provider每隔1分钟向Monitor发送统计信息,统计信息包含,访问次数,频率等.
备注:invoke 最耗时,register是自动运行的,
注册中心
Zookeper:优点:支持网络集群,缺点:稳定性受限于Zookeeper
Redis:优点:性能高,缺点:对服务器环境要求较高
Multicast: 优点:面中心化,不需要额外安装软件,缺点:建议同机房(局域网)内使用
Simple:适用于测试环境.不支持集群.