dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
dubbo核心部分包含:
- 远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
- 集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
- 自动发现:基于注册中心目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
dubbo特色
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。这个功能是应有之义
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。这个就很强大了,
注册中心的这两个特性大大提高了系统的可用性和扩展性。注册中心既可以采用Multicast注册中心,也可以集成Zookeeper,也可以采用Redis,非生产环境也可以使用一个dubbo自己实现的Simple注册中心,非常灵活。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
监控负载,排查性能瓶颈就方便多了。简易监控中心的安装,请参考这里。
- 特色3:使用上,采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载dubbo的配置即可,dubbo基于Spring的Schema扩展进行加载。
- 特色4:开源部分中,还包含有一个管理控制台的实现(内部裁剪版本,开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能)
为什么我们需要dubbo?
很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知识,对于理解一项技术还是有帮助的,那么,dubbo是怎么被提上日程的呢?
在互联网的发展过程中,在以前,我们只需要一个服务器,将程序全部打包好就可以,但是,随着流量的增大,常规的垂直应用架构已无法应对,所以,架构就发生了演变。
1. 单一应用架构
2. 应用和数据库单独部署
3. 应用和数据库集群部署
4. 数据库压力变大,读写分离
5. 使用缓存技术加快速度
6. 数据库分库分表
7. 应用分为不同的类型拆分
发展到这个阶段的时候,我们发现,应用与应用之间的关系已经十分的复杂了,就会出现以下几个问题(以下摘录于官网):
1. 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
2. 当进一步发展,服务间依赖关系变得错综复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整地描述应用的架构关系。
3. 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
为了解决这由于架构的演变所产生的几个问题,于是,dubbo产生了。当然,解决这个问题的技术不止dubbo。
从上面dubbo的服务治理图我们就可以看到,duboo很好了解决了上面所出现的一些问题。
所以,当你的系统架构发展到了这种阶段的时候,就需要考虑使用dubbo了。
动力节点的dubbo视频教程,从基础开始手把手式地详细讲解RPC概念,PRC在分布式应用的重要作用。dubbo分布式服务框架的应用入门基础。传统应用到分布式以及微服务的转变思想。dubbo协议的特点。dubbo分布式服务的详细开发流程、dubbo服务的实施部署,Zookeeper的服务管理等。