dubbo介绍
1.Dubbo简介dubbo是一个高可用,基于java的开源RPC框架dubbo框架不仅仅是局别RPC访问功能,还包含服务治理功能2.Dubbo架构2.1 Provider提供者,编写持久层和事务代码2.2 Container容器(spring容器),Dubbo完全基于spring 实现的2.3 Registry注册中心,放置所有的Provider对外提供的信息,包含Provider的IP,访问端
1.Dubbo简介
dubbo是一个高可用,基于java的开源RPC框架
dubbo框架不仅仅是具备RPC访问功能,还包含服务治理功能
2.Dubbo架构
2.1 Provider
提供者,编写持久层和事务代码
2.2 Container
容器(spring容器),Dubbo完全基于spring 实现的
2.3 Registry
注册中心,放置所有的Provider对外提供的信息,包含Provider的IP,访问端口,访问遵守的协议,对外提供的接口,接口中有哪些方法等相关信息
2.4 Consumer
消费者(RPC调用者,SOA调用服务的项目)开发中也是一个项目,编写service和controller(还可以报页面等),调用XXXXServiceImpl中的方法
2.5 Monitor
3.执行流程
0.start:启动Spring容器时会把Provider启动
1.register:把Provider相关信息注册到Registry中
2.subscribe:Consumer从Registry中订阅Provider的信息
3.notify:通知给 Consumer
4.invoke:Consumer根据Registry通知的信息进行调用Provider中方法
5.count:Consumer根据Registry吧调用次数信息异步发送给Monitor进行统计
4.Dubbo协议(官方推荐协议)
优点:
采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好
缺点:
大文件上传是,可能出现问题 (不使用Dubbo文件上传)
2.RMI协议
优点:JDK自带的能力
缺点:偶尔连接失败
3.Hessian协议
优点:可与原生Hessian互操作,基于HTTP协议
缺点:需要hession.jar支持,http短连接的开销大
4.Dubbo支持的注册中心
4.1.Zookeeper(官方推荐)
优点:支持分布式,很多周边产品
缺点:受限于Zookeeper软件的稳定性,Zookeeper是专门分布式辅助软件,稳定较优
4.2.Multicast
优点:去中心化,不需要独立安装软件
缺点:2.2.1 Provider和Consumer和Registry不能跨机房(路由)不能应用在商业上,只能在局域网中使用
4.3.Redis
优点:支持集群,性能高
优点:要求服务器时间同步,否则可能出现几圈失败问题
4.4.Simple
优点:标准Rpc服务,没有兼容问题
缺点:不支持集群
5.Dubbo负载均衡
集群:一个内容,部署多次,形成的整体成为集群,集群中每个个体应该部署到不同的服务器上,
伪集群:集群中内容部署到同一台服务器上,通过不同端口区分不同个体
负载均衡实在集群前提下,集群中每个节点被访问次数或频率的规则。
Dubbo内置了四个负载均衡策略,默认为Random
5.1Random
随机,随机访问集群中节点,访问概率和权重有关
5.2 RoundRobin(轮询)
轮询:访问概率和权重有关
权重(weight):占有比例,集群中每个项目部署的服务器的性能可能是不同,性能好的服务器权重应该高一些
5.3LeastActive
活跃数相同的随机,不同的活跃数高的放前面
5.4 ConsistentHash
一致性Hash,相同参数请求总数发送到一个提供者
6.负载均衡设置
1.@Reference(loadbalance = "roundRobin")
2.@Serivce dubbo提供的service
//设置负载均衡算法
@Serivce(loadbalance = "random")
//设置权重
@Service(weight = 4)
3.配置文件
全局设置provide和consumer的负载均衡效果
//提供者
dubbo:
application:
name: dubbo-provider
registry:
address: zookeeper://localhost:2181
protocol:
port: 20884
provider:
weight: 1
loadbalance: random
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)