做网站用的编程语言,百度地图放到网站上,网站开发 商标注册,桂平网站设计以下内容全文转自 apache 官方 dubbo文档#xff1a;http://dubbo.apache.org/en-us/docs/dev/design.html 框架设计 图片描述#xff1a;
浅蓝色背景的左侧区域显示服务用户界面#xff0c;浅绿色背景的右侧区域显示服务提供者界面#xff0c;中心区域显示两个侧面界面。…
以下内容全文转自 apache 官方 dubbo文档http://dubbo.apache.org/en-us/docs/dev/design.html 框架设计 图片描述
浅蓝色背景的左侧区域显示服务用户界面浅绿色背景的右侧区域显示服务提供者界面中心区域显示两个侧面界面。图像从底部到顶部分为10层这些层是单向依赖的。右侧的黑色箭头表示层之间的依赖关系每层可以从上层剥离以重复使用Service和Config层是API其他层是SPI。绿框是扩展接口蓝框是实现类图像仅显示关联层的实现类。蓝色虚线是初始化过程启动时为装配链方法调用过程为红线运行时调用链继承紫色三角箭头可将子类视为父类的同一节点文本为lines是方法调用。
图层描述
config层外部配置界面ServiceConfig并且ReferenceConfig是图层的中心可以直接初始化配置类也可以通过spring生成配置类。代理层服务接口的透明代理生成客户端Stub服务和服务器Skeletion of serviceServiceProxy是中心扩展接口是ProxyFactory。注册表层服务注册表和发现的封装服务URL是中心扩展接口是RegistryFactoryRegistry和RegistryService。簇层muliple提供商和负载平衡和桥接登记中心的簇的封装Invoker是中心扩展接口是ClusterDirectoryRouterLoadBalance。监控层的RPC调用倍显示器和呼叫执行时间Statistics是中心扩展接口是MonitorFactoryMonitorMonitorService协议层RPC的封装Invocation并且Result是中心扩展接口是ProtocolInvokerExporter交换层的请求和响应同步传输异步封装Request并且Response是中心扩展接口是ExchangerExchangeChannelExchangeClientExchangeServer传输层米娜和网状的抽象Message是中心扩展接口是ChannelTransporterClientServerCodec序列化层可重复使用的工具扩展接口SerializationObjectInputObjectOutputThreadPool
关系描述
在RPC中Protocol是核心层它意味着您可以通过Protocol Invoker Exporter完成RPC调用然后在Invoker的主进程中进行过滤。Consumer和Provider是抽象概念只是希望您能更直观地了解哪些类属于客户端和服务器端不使用Client和Server的原因是Dubbo使用ProviderConsumerRegistryMonitor划分逻辑拓扑节点。场景保持团结的概念。Cluster是外部概念Cluster的目的是让各种Invoker伪装成一个Invoker这样我们只关注Invoker in Protocol层添加Cluster或删除Cluster不会影响其他层因为我们不需要Cluster什么时候只有一个提供者。Proxy层封装了所有接口的透明代理在Invoker作为中心的其他层中将Invoker转换为接口或者仅在暴露给用户时将接口实现转换为Invoker by Proxy。RPC仍然可以工作甚至删除代理层但不是那么透明使得远程服务调用看起来不像本地服务调用。远程处理是Dubbo协议的实现如果选择RMI您可以删除远程处理。Remoting分为Transport层和Exchange层Transport层负责单向消息传输它是MinaNettyGrizzly的抽象它还可以扩展UDP传输。Exchange层在传输层上封装了Request-Response语义。实际上Registry和Monitor不在同一层它们是独立的节点只是为了全局视图而一层一层地绘制它们。
模块包装 模块说明
dubbo-common模块包括Util类和通用模块。dubbo-remoting模块是Dubbo协议实现如果使用RMI for RPC则无需使用此模块。dubbo-rpc模块各种协议的抽象和动态代理只有一对一的调用不关心集群的管理。dubbo-cluster模块将许多服务提供者伪装成一个提供者包括负载平衡容错路由等。群集的地址列表可以是静态的也可以是注册表发送的。dubbo-registry模块基于注册表发送地址的集群和各种注册中心的抽象。dubbo-monitor模块服务呼叫时间统计呼叫时间呼叫链跟踪服务。dubbo-config模块是Dubbo外部API用户使用Dubbo by Config隐藏Dubbo的详细信息。dubbo-container模块是一个Standlone容器只需使用Main方法加载Spring因为通常服务不需要Tomcat / JBoss功能。
包层根据层结构划分与层划分的区别
容器是服务容器用于服务运行部署未在映像中显示。协议层和代理层都放在RPC模块中它们是RPC模块的核心当只有1个提供者时可以使用这2层完整的RPC调用。传输层和交换层放置在远程模块中用于RPC呼叫基础通信。序列化层放在通用模块中以便重用。
依赖关系 图片描述
图像协议群集代理服务容器注册表监视器中的框表示层或模块蓝调表示与业务交互绿色表示仅与Dubbo的内部交互。图像消费者提供者注册表监视器中的背景框表示部署逻辑拓扑节点。调用图像中的蓝色虚线进行初始化为运行时异步调用红色虚线并为运行时同步调用红线。图像仅包含RPC层不包括Remoting层整个Remoting隐藏在Protocol层中。
调用链
展开整个设计地图的红色调用链 公开服务顺序
展开服务提供者公开服务的初始化链在整个设计图的左侧序列图如下所示 参考服务序列
展开服务使用者参考服务的初始化链在整个设计图的右侧序列图如下所示 领域模型
达博的核心领域模型
协议是服务域它是Invoker暴露和参考的主要功能入口它负责Invoker的生命周期管理。Invoker是实体域它是Dubbo的核心模型所有其他模型都受到干扰或转换为它它代表一个可执行文件你可以通过调用invoke来调用它它可以是一个本地实现一个远程实现或者集群实现。调用是会话域它在调用进程中保存变量例如方法名称参数等。
基本设计原则
使用Microkernel Plugin设计模式Microkernel只负责组装插件Dubbo的功能是通过扩展点实现的这意味着Dubbo的所有功能都可以被用户自定义扩展替换。使用URL作为配置信息的startdard格式所有扩展点都通过URL传输配置信息。