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

在父项目指定版本号 

                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数据结构是树形的,和目录一样,更适合做管理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值