1、什么是dubbo?
dubbo就是一个分布式面向服务框架。划重点,分布式与面向服务
2、哪什么是分布式呢?
比如我们去银行办理业务,之前都是存款、取款、转账都是在一个窗口完成,后来呢,感觉人太多了,忙不过来,于是就拆分了,存款有单独的存款窗口,取款有取款的单独窗口,转账同样也是。这样,把这些业务来拆分处理了,就是分布式了。
3、什么是业务呢?
业务就是你具体实际生活里面做的事儿,比如存款,取款,转账。
4、哪什么是面向服务呢(专业术语叫soa)?
上面的分布式我们感觉是把一个大的业务拆分了,而面向服务就是把这些拆分后的业务一个一个的做成一个服务,就是存款这个窗口是存款服务了,取款这个窗口是取款服务了,转账这个窗口是转账服务了。
5、dubbo的原理是什么呢?
RPC
6、什么是RPC呢?
就是远程过程调用。现实世界就是一个服务调用另外一个服务。代码里面你可以这样理解:比如你使用maven建了一个项目A,A项目下面有三个服务A1,A2,A3。比如A1调用了A2的服务了,底层就是RPC实现。这就是RPC。
7、如何知道调什么呢,怎么去调用呢?
这就要使用到了zookeeper
8、什么是zookeeper呢?
就是一个注册中心:也就是你做好的服务(比如取款,或者A1、A2、A3)要发布(术语叫提供者provider),你的另一个东东要去调用(术语叫消费者consume,不一定是服务,可以是服务,也可以是直接的调用)。反正意思就是你要把你的东西发布到这个注册中心去,然后调用的在注册中心看见了,就可以去调用。就像一个路由,就像你去银行,保安或者大堂经理就是一个zookeeper,其实zookeeper的本意就是动物管理员。到了银行你去取款,大堂经理给你说有什么服务,要办理什么业务,该去哪里办理,这个时候大堂经理就是zookeeper,你就是消费者,取款窗口就是一个对客服暴露的一个服务。
9、代码里面该怎么理解呢?
比如上面建了三个服务A1是取款,A2存款,A3转账,A4是客户(也就是你自己的角色),A4去调用A1进行取款操作,A1对A4暴露服务接口,没有暴露具体实现,你也看不见具体实现,当你调用了A1,A1自然去调用他接口的实现A1Impl,A1Impl其实才是真正做的业务处理。
10、然后每个服务写好了,部署运行,那么什么又是主备机部署呢?集群部署呢?
一般作为分工明确的公司程序员是不需要这个操作的,不过还是简单描述一下。
主备部署:就是用两台机器部署一个一模一样相同的服务,当一个服务器挂掉之后,就自动切换到另一个台服务器,同时通知运维人员来维护。
集群部署:就是同样的操作做一个群体,就是部署很多很多台,通过负债均衡来调用具体的哪个服务器,这样减少单台服务器的压 力。
分割线,今天呢就先说到这里,不对的地方,不吝赐教,欢迎指正。
20180528 手码字。