dubbo

目录

1.后端交互的两种方式

2.dubbo的两个专业名词

3.dubbo怎么用

4.dubbo集成和使用


1.后端交互的两种方式

        ①、http请求(http超文本文件传输协议)

        ②、dubbo(字节流)

        ③、用dubbo的好处计算机系统只有01,发送的http请求还得将json转为二进制,而dubbo直接将二进制传过去

        ④、dubbo协议在用的时候跟http协议一样,只要将地址的http改为dubbo就可以

        ⑤、dubbbo只用于后端之间的通讯,而http可以用于前端也可以用于后端

2.dubbo的两个专业名词

        ①、服务消费者、服务提供者(a访问b,a是服务消费者,b是服务提供者)

3.dubbo怎么用

        ①、client包:相当于controller,定义入参和出参(param 和DTO)

        ②、service包:实现接口

4.dubbo集成和使用

        ①、创建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中,就可以用其中的逻辑了)

dubbo_第1张图片

在父项目指定版本号 

dubbo_第2张图片

                b、 new一个包写service的逻辑

                c、实现接口,写业务逻辑

                d、将普通接口改为dubbo接口

 在service中引入starter

 在父级项目中指定版本号

dubbo_第3张图片

在类上加注解@DubboService就可以远程调用了 

        ⑤、在service中新建一个配置文件application.yml(现在的文件图标和之前的不一样是因为我们没有引spring相关的依赖)

                a、引入spring相关的依赖

dubbo_第4张图片

                b、在application.yml中指定项目名称(dubbo判断是哪个服务通过名称来判断);告诉dubbo我是一个服务的提供者;指定端口号(默认为8080)

dubbo_第5张图片

        ⑥、写客户端的启动类

 @DubboComponentScan启动的时候扫描哪些包

        ⑦、消费端dubbo服务

                a、引客户端client和dubbo

dubbo_第6张图片

                 b、写接口

                        i、@DubboReference远程调用client中的接口

                        iii、和写本地代码一样直接用

dubbo_第7张图片

                c、 在配置文件中加名字(注:name不能重)

dubbo_第8张图片

 5.dubbo原理

        ①、为什么远程调用能调用到,为什么要指定项目名称

        ②、zookeeper中间件,管理后端上百甚至上千的微服务

        ③、生产者项目启动的时候会用他的名称连上zk,如果有多个的话zk会认为是一个集群,自动帮我们进行负载均衡

        ④、消费者也连上了zk

        ⑤、zk会监听心跳,不断ping机器判断服务有没有挂,如果挂了下次再来请求的时候就不往这台机器上发了,保证高可用。zk判断是哪个服务是通过名称的

        ⑥、mysql、redis、kafka、zk都是存数据的,但是他们的数据结构不同。mysql的数据结构更适合做业务;redis是key-value形式的,数据结构更适合做缓存;kafka的数据结构没有条理性,更适合做消息队列;zk数据结构是树形的,和目录一样,更适合做管理

你可能感兴趣的:(微服务,dubbo)