性能测试二十七:环境部署之Dubbo原理
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是框架,并不是像http那种传输协议
传统系统间通信方式:
系统A和系统B之间耦合性非常大,系统A配置文件里面基本会把系统B的所有接口写进去,若果系统B有多个tomcat,中间还得配个Nginx,若经常有机器增减,Nginx配置也要经常改,扩展起来非常麻烦
如果A系统要调用B系统里面的函数,只能通过http接口去调,数据传输需要转换成json,返回来再把json转成对象,而转json对性能损耗非常大
比如:JdbcTest(系统A)要去调JavaVuser(系统B)下的JdbcTest里面的方法
Dubbo框架
zookeeper的作用:
1、配置管理
2、负载均衡
可以把zookeeper理解为一个类似于mysql的数据库,主不过里面存的不是表,而是系统B的ip、端口号、url
当项目B启动的时候,会自动的把项目B的ip、端口号、url全部写入到zookeeper中
当A需要调B里面的接口的时候,就不用去连接B,只需要去zookeeper找到B接口,再去找ip、端口号,然后通过TCP进行通信,而不是http
当同一个接口,有多个ip和端口号的时候(项目B布了多台机器),zookeeper也是采用轮询的策略
所以,Dubbo框架中,就用zookeeper,不需要使用Nginx
想要使用Dubbo框架,需要系统A和系统B去zookeeper里面写入数据(可以把此过程叫注册),留下ip、端口号
所以每Dubbo框架里面,每一个系统都有一个配置文件,配的是zookeeper的ip和端口号
zookeeper有一个心跳机制,如系统B部署了5个机器,zookeeper每秒钟检测一次,发现有3台机器没有响应了,就视为挂了,会自动去掉这几个的ip
zookeeper提供了一个管理工具:dubbo-admin,类似于navicat连接数据库一样