Dubbo的学习

Dubbo的学习,第1张

Dubbo的学习 什么是分布式系统

分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个单个相关系统

随着互联网的发展,网站应用的规模不断的扩大,常规的垂直应用框架已无法应对,分布式服务架构以及流动计算机架构势在必行,需要一个治理系统确保架构有条不紊的演进

单一应用框架

​ 请求量小

缺点:扩展不容易,协同开发不易,不利于维护。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DcdPq2bF-1643252170544)(C:UsersGJXDesktopIMG_9781.PNG)]

垂直应用架构

​ 优点:分工合作容易,性能扩展容易

缺点:界面和业务逻辑没有分开,应用不能完全独立,大量应用之间需要交互

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lkpx2mBW-1643252170545)(C:UsersGJXDesktopIMG_9780.PNG)]

分布式架构

将界面和业务逻辑分离(RPC:远程过程调用)

优点:当只改变界面时,只需要重新部署,用户web的服务器

一个好的分布式框架帮我们来解决RPC,能极大的简化开发

流动计算架构:基于访问压力实时的管理集群的容量,提高集群的利用率

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVVOXWLG-1643252170546)(C:UsersGJXDesktopIMG_9783.PNG)]

RPC

什么是RPC?

(Remote Procedure Call)是指远程过程调用,他是一种技术思想,而不是规范。他允许程序调用另一个地址空间(通常是共享网络的另一台计算机)的过程和函数,不是程序员显示编码这个远程调用的细节。既程序员无论是调用本地的还是远程的函数,本质上编写的代码调用基本相同;

RPC框架:

dubbo ,gRPC,Thrift,HSF(High Speed Service framework)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNpLLzdu-1643252170546)(C:UsersGJXDesktopIMG_9784.PNG)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r6ycUqUP-1643252170547)(C:UsersGJXDesktopIMG_9785.PNG)]

dubbo支持的协议:

dubbo ,hessian,mi,http,webservice,thrift,memcached,redis,dubbo官方推荐使用dubbo协议。dubbo默认端口是20880.

使用dubbo协议,在spring配置文件中加入


dubbo官方推荐使用的项目结构如下:

​ 1)服务提供者工程(实现接口工程中的业务接口)web工程

​ 2)服务消费者工程(消费服务提供者提供的业务接口)web工程

​ 3)接口工程(业务接口和实现类)java工程

注册中心Zookeeper

对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量,类型也不断的膨胀;对于消防服务方,,他最关心的如何获取到他所需的服务,而面对复杂的应用系统,需要管理大量的服务调用。

​ 而且,对于服务的提供方和服务的消费者方来说,他们还有可能兼具这两种角色,即需要提供服务,又需要消费服务。通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。Dubbo提供的注册中心有如下几种类型:

Multicast注册中心:组播方式

Redis注册中心:使用Redis作为注册中心

Simple注册中心:就是一个dubbo服务,作为注册中心,提供查找服务的功能。

Zookeeper注册中心:使用Zookeeper作为注册中心(推荐使用)

注册中心工作方式

服务提供者向注册中心注册服务

消费者在注册中心取这个服务

Zookeeper是一个高性能的:分布式,开发源码的分布式应用程序协调服务。简称zk。Zookeeper是翻译过来的动物管理员,可以理解为Windows中的资源管理器或者注册表。是一个树形结构,这种树形结构和标准文件相似。Zookeeper树中的每个节点被称为znode,和文件系统的目录树一样,Zookeeper树中的每个节点可以拥有字节点,每个节点表示一个唯一服务资源。Zookeeper运行需要java环境。

下载安装文件

官网下载地址:http://zookeeper.apache.org

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAsKNV8f-1643252170548)(C:UsersGJXAppDataRoamingTyporatypora-user-imagesimage-20211203112154600.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v6MoPiyH-1643252170548)(C:UsersGJXAppDataRoamingTyporatypora-user-imagesimage-20211203112225443.png)]

Dubbo配置原则

在服务提供者配置访问参数。因为服务提供者更了解服务的各种参数。




    

    

    

    

    

服务提供者对服务的复杂程度更了解,能更确定超时的时间

关闭检查

dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及时的发现问题,默认check=true。通过check=“false”关闭检查,

比如:测试时,有些服务不关心,或者出现循环依赖,必须有一方先启动。

例如:关闭某个服务的启动时检查


例2:关闭注册中心启动检查时


默认启动服务时检查注册中心存在并已运行,注册中心不启动会报错




    


    


    ///

重试次数(没用)

消费者访问提供者,如果访问失败,则切换重试访问其他服务器,但重试会带来更长的延迟。访问的时间变长,用户体验较差,多次访问重新访问服务器有可能访问成功,可通过reteries=“2” 来设置重试次数


或者

通常不设置

超时时间

由于网络或服务端不可靠,会导致调用出现一种不确定的中间状态(超时),为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间,

timeout:调用远程服务超时时间(毫秒)

版本号(工作中肯定会使用到的)

每个接口都应该定义一个版本号,为后续不兼容升级提供可能。当一个接口有不同的实现,项目早期使用的一个实现类,之后创建接口的新的实现类。区分不同的接口实现使用version。

一个接口可以有多个实现类

provide:

    

    



consumer:

    

    



controller:

@Controller
public class SomeController {
    @Autowired
    private SomeService someService;
    @Autowired
    private SomeService newsomeService;
    @RequestMapping(value = "/hello1")
    public String hello1(Model model){
        String hello = someService.hello();
        model.addAttribute("hello",hello);
        return "hello";
    }

    @RequestMapping(value = "/hello2")
    public String hello2(Model model){
        String hello = newsomeService.hello();
        model.addAttribute("hello",hello);
        return "hello";
    }


    @RequestMapping(value = "/user1")
    public String user1(Model model){
        User user = someService.queryUserById(3);
        model.addAttribute("user",user);
        return "user";
    }

    @RequestMapping(value = "/user2")
    public String user2(Model model){
        User user = newsomeService.queryUserById(3);
        model.addAttribute("user",user);
        return "user";
    }
}


监控中心 什么是监控中心

dubbo的使用,只需要有注册中心,消费者,提供者,这是三个就可以使用了,但是并不能看到那些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理,可以在dubbo应用部署动态调整,服务的管理。

dubbo-admin

图形化的服务管理页面:安装时需要指定注册中心地址即可,就可从注册中心获取到所有的提供者/消费者进行配置管理

下载地址:https://github.com/apache/incubator-dubbo-ops

需要手工编译才能使用

执行:到dubbo-admin-0.0.1-SNAPSHOT.jar目录cmd执行 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

到浏览器:输入http://localhost:7001访问监控中心-控制台

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n9sM1NKX-1643252170549)(C:UsersGJXAppDataRoamingTyporatypora-user-imagesimage-20211204162833752.png)]

Dubbo和springcloud的不同

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5716666.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-18

发表评论

登录后才能评论

评论列表(0条)

    保存