Dubbo
2021-07-07 14:11:40 46 举报
AI智能生成
Dubbo框架总结
作者其他创作
大纲/内容
1.介绍Dubbo背景
自维护调用关系
分支主题
图示
分支主题
需要解决的问题
大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡。
(1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。
并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。
(2) 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。
(3) 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。
其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。
Dubbo维护调用关系
分支主题
软负载均衡
分支主题
1.单一应用框架(ORM)
当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。
缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护
架构图
分支主题
2.垂直应用框架(MVC)
垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的体积可控,一定程度上降低了开发人员之间协同以及维护的成本,提升了开发效率。
缺点:但是在垂直架构中相同逻辑代码需要不断的复制,不能复用。
架构图
分支主题
3.分布式应用架构(RPC)
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心
架构图
分支主题
4.流动计算架构(SOA)
随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架
架构演变的过程
演变图
分支主题
单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。
2.Dubbo的简介
Dubbo是一个分布式服务框架,解决了上面的所面对的问题
高性能和透明化的RPC远程服务调用方案
SOA服务治理方案
每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。
Dubbo的架构图
分支主题
节点角色说明
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
调用关系说明
0. 服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Dubbo提供了很多协议
Dubbo协议、RMI协议、Hessian协议
源码
分支主题
Dubbo提供的注册中心
* Multicast注册中心
* Zookeeper注册中心
* Redis注册中心
* Simple注册中心
Dubbo优缺点
优点
1. 透明化的远程方法调用
- 像调用本地方法一样调用远程方法;只需简单配置,没有任何API侵入。
2. 软负载均衡及容错机制
- 可在内网替代nginx lvs等硬件负载均衡器。
3. 服务注册中心自动注册 & 配置管理
-不需要写死服务提供者地址,注册中心基于接口名自动查询提供者ip。
使用类似zookeeper等分布式协调服务作为服务注册中心,可以将绝大部分项目配置移入zookeeper集群。
4. 服务接口监控与治理
-Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理。
缺点
只支持JAVA语言
3.Zookeeper
概述
Zookeeper一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据
ZooKeeper是以Fast Paxos算法为基础,实现同步服务,配置维护和命名服务等分布式应用
Zookeeper作为Dubbo服务的注册中心,Dubbo能与Zookeeper做到集群部署,
当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息
当提供者重启时,能自动恢复注册数据,以及订阅请求。
安装
下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/,当前稳定版本为3.4.8
单机模式
修改zookeeper配置文件zoo.cfg
解压后进入conf目录,修改zoo_sample.cfg文件名为:zoo.cfg
需要在zookeeper-3.4.8文件夹下新建data和log文件夹
启动zookeeper
cmd命令进入zookeeper-3.4.8\bin目录,启动zkServer.cmd
如果jdk环境变量设置了,但是提示JAVA_HOME找不到,则需要修改该目录下的zkEnv.cmd关于JAVA_HOME的一部分
伪集群模式
所谓伪集群, 是指在单台机器中启动多个zookeeper进程,,并组成一个集群, 以启动3个zookeeper进程为例。
把zookeeper-3.4.8文件夹复制2份,这三个文件夹分别命名为zookeeper-3.4.8-1、zookeeper-3.4.8-2、zookeeper-3.4.8-3
下面是zookeeper-3.4.8-1/conf文件夹下的zoo.cfg文件中配置
参照zookeeper-3.4.8-1/conf文件夹下zoo.cfg文件,分别配置zookeeper-3.4.8-2/conf/zoo.cfg、zookeeper-3.4.8-3/conf/zoo.cfg文件,只需要修改dataDir、dataLogDir、clientPort即可。
在三个zoo.cfg文件中设置的dataDir目录下新建myid文件,写入一个数字, 该数字表示这是第几号server,该数字必须和zoo.cfg文件中的server.X中的X对应。如D:\\zookeeper-3.4.8-1\\data\\myid文件中数字是1。
集群模式
集群模式的配置和伪集群基本一致.
由于集群模式下, 各server部署在不同的机器上, 因此各server的conf/zoo.cfg文件可以完全一样。
zoo.cfg
4.dubbo-admin
1)下载dubbo-admin-2.4.5.war包
2)部署dubbo-admin应用到tomcat下
3)然后到该应用的WEB-INF下,有一个dubbo.properties文件,里面指向Zookeeper
3)然后启动tomcat服务,用户名和密码:root,并访问服务,显示登陆页面,说明dubbo-admin部署成功
5.SpringMVC、Dubbo、Zookeeper整合使用
1.开发提供服务
2.开发服务消费者
3.案例演示
0 条评论
下一页