为什么需要Dubbo
拿C2C网站来说,早期架构比较简单,如下图所示,其实当下对于大部分学生来说,平时做的一些项目就是如下的架构,因为我们不需要考虑流量啊,交互舒适度啊什么的,只要实现功能就可以了。
后面,当产品面向市场,用户量就会持续递增,那么这个架构肯定无法支撑。优先考虑的是服务器扩容,垂直扩展。但是这种方式虽然短期投入产出比不错,长期来看还是有问题的。因此我们会进行一些分表分表、读写分离。服务器会做一些水平分离、负载均衡等,之后我们的架构就会变成这样:
我们按照功能来对我们架构组件做一些拆分。
在服务层这一块,服务的集群会发生问题,比如说业务层一直在调用的话,如何去解决负载均衡问题?如果某个节点变化,能不能及时通知到?对于一些请求的限流,容错和降级怎么实现?URL是如何维护的?Dubbo就是用来去解决这些问题的。
Dubbo是一个服务治理的技术,什么是服务治理?就是治理负载、容错、降级、服务权重等东西。
Dubbo能解决什么问题?比如说各个服务之间需要通信,那就需要相关的技术,我们可以通过http或者webservice。Dubbo第一个解决的问题就是远程调用,它可以看做一个RPC框架,用一个图来介绍Dubbo的架构:
快速启动Dubbo
我们可以用一个简单的例子来说一下Dubbo在实际中的应用:
首先定义两个模块 ,一个是Server,一个是Client。在Server中配置一个接口和一个实现类:
public interface ILusheHello { String sayHello(String msg); }