目录
1.后端交互的两种方式
2.dubbo的两个专业名词
3.dubbo怎么用
4.dubbo集成和使用
①、http请求(http超文本文件传输协议)
②、dubbo(字节流)
③、用dubbo的好处计算机系统只有01,发送的http请求还得将json转为二进制,而dubbo直接将二进制传过去
④、dubbo协议在用的时候跟http协议一样,只要将地址的http改为dubbo就可以
⑤、dubbbo只用于后端之间的通讯,而http可以用于前端也可以用于后端
①、服务消费者、服务提供者(a访问b,a是服务消费者,b是服务提供者)
①、client包:相当于controller,定义入参和出参(param 和DTO)
②、service包:实现接口
①、创建dubbo客户端(client),创建dubbo服务(service)
②、new两个module(也是maven项目),一个client,一个service
③、在客户端定义dubbo接口
a、new一个包,new入参和出参(param dto)的包
b、定义dubbo的接口:new一个interface(一个服务对应一个dubbo接口)(注:dubbo服务的interface统一用Facade结尾)
c、定义出参:dto中new一个class。
i、pom中引入lambook(acby-common里面已经封装了,不需要再额外引),在类上添加@Data生成get和set方法
ii、只要涉及到dubbo传输的必须序列化:implement Serializable。序列化的时候会生成一个id
iii、定义入参(同理)
iiii、写接口的方法
④、service实现接口
a、引client(将client当作jar包引到service中,就可以用其中的逻辑了)
在父项目指定版本号
b、 new一个包写service的逻辑
c、实现接口,写业务逻辑
d、将普通接口改为dubbo接口
在service中引入starter
在父级项目中指定版本号
在类上加注解@DubboService就可以远程调用了
⑤、在service中新建一个配置文件application.yml(现在的文件图标和之前的不一样是因为我们没有引spring相关的依赖)
a、引入spring相关的依赖
b、在application.yml中指定项目名称(dubbo判断是哪个服务通过名称来判断);告诉dubbo我是一个服务的提供者;指定端口号(默认为8080)
⑥、写客户端的启动类
@DubboComponentScan启动的时候扫描哪些包
⑦、消费端dubbo服务
a、引客户端client和dubbo
b、写接口
i、@DubboReference远程调用client中的接口
iii、和写本地代码一样直接用
c、 在配置文件中加名字(注:name不能重)
5.dubbo原理
①、为什么远程调用能调用到,为什么要指定项目名称
②、zookeeper中间件,管理后端上百甚至上千的微服务
③、生产者项目启动的时候会用他的名称连上zk,如果有多个的话zk会认为是一个集群,自动帮我们进行负载均衡
④、消费者也连上了zk
⑤、zk会监听心跳,不断ping机器判断服务有没有挂,如果挂了下次再来请求的时候就不往这台机器上发了,保证高可用。zk判断是哪个服务是通过名称的
⑥、mysql、redis、kafka、zk都是存数据的,但是他们的数据结构不同。mysql的数据结构更适合做业务;redis是key-value形式的,数据结构更适合做缓存;kafka的数据结构没有条理性,更适合做消息队列;zk数据结构是树形的,和目录一样,更适合做管理