Dubbo

        dubbo中,消费者知道提供者地址,消费者可以直连提供者。

 架构图是这样的,提供者像注册中心提供注册,然后消费者向注册中心进行订阅,然后可以像注册中心进行拉取提供者地址,消费者知道提供地址后可以调用提供者。

         0、Container是Provider的一个容器用于承载Provider

         1、Provider向注册中心注册自己的对外暴露的信息

         2、Consumer消费者向注册中心订阅信息

         3、当注册中心的信息改变,那么Consumer就会将最新的注册中心的信息拉取到本地消费者的缓存中。

         4、如果消费者需要调用对应的端口信息,Consumer就会从本地缓存中的信息调用对应的提供者接口。

         5、monitor是一个监视器,可以监控consumer和provider的调用的相关信息的统计。

        负载均衡

 

在消费者调用提供者的时候,消费调用同一个接口的时候,因为是微服务分布式,有同一个服务可能有多个,所以可以给每个服务都加上这个负载均衡策略。

        Dubbo多协议

        Dubbo支持的协议特点

        Dubbo协议特点: 它的特点是长连接,也就是消费者和提供者之间建立了一个管道,一直连接,嫌少三次握手,四次挥手,传输协议是封装了TCP协议,传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串,基于以上描述,我们一般建议Dubbo用于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
        RMI协议特点: 传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。基于以上描述,我们一般对传输管道和效率没有那么高的要求,同时又有传输文件这一类的要求时,可以尝试采用RMI协议。【不过笔者不太喜欢这个,o( ̄︶ ̄)o】
        Hessian协议特点: 传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。比较适用于需同时给应用程序和浏览器JS使用的服务,Hessian协议的相关内容与HTTP基本差不多,这里就不再赘述了。
        WebService协议特点: 基于CXF的frontend-simple和transports-http实现,适用于系统集成,跨语言调用。 不过如非必要,强烈不推荐使用这个方式,WebService是一个相对比较重的协议传输类型,无论从性能、效率和安全性上都不太能满足微服务的需要,如果确实存在异构系统的调用,建议可以采用其他的形式。
其余的memcached、Redis的协议之类的,使用的场景比较少,在这里就不扩展了,大家可以参考上述的博客文件进行查看和测试。 

  1. Zookeeper作为注册中心

    • 使用Zookeeper作为服务注册和发现中心,Dubbo服务提供者在启动时会向Zookeeper注册自己的服务地址,服务消费者从Zookeeper订阅服务提供者的地址。
    • 这确保了服务的高可用性和动态发现。
  2. API网关

    • API网关作为系统的唯一入口点,负责路由请求到正确的Dubbo服务。
    • 通过Dubbo协议与微服务进行通信,消费者使用轮询策略进行负载均衡,这有助于均匀地分配请求到各个服务实例。
  3. JWT权限验证

    • 实现了JWT(JSON Web Tokens)来验证用户权限,确保只有持有有效令牌的用户才能访问受保护的资源。
    • 可以在API网关中集成JWT验证逻辑,对每个进入的请求进行验证。
  4. 全局异常拦截

    • 实现了全局异常处理机制,可以在API网关中捕获和处理所有微服务抛出的异常,然后以统一的方式返回给客户端。
  5. Dubbo异步调用

    • 利用Dubbo的异步调用特性,提高了系统的响应性和吞吐量,特别是在处理I/O密集型或者高延迟的操作时。
  6. 影片搜索功能

    • 实现了按关键字搜索影片的功能,这可能涉及到对数据库的查询或者集成搜索引擎。
    • 显示热门电影可能需要一个服务来定期更新和维护热门电影列表。
  7. 分页搜索

    • 实现了分页搜索功能,这对于处理大量数据非常有用,可以提高页面加载速度和用户体验。
  8. 影片详细信息查找

    • 对于每个影片的详细信息,可能需要聚合来自不同微服务的数据,如演员信息、导演信息、详情信息等通过dubbo的异步调用操作,异步的将串行查询改成异步非阻塞查询。

     9.  Dubbo本地缓存

                对于banner导航栏需要查询的,长时间大量访问且数据类型不变,可以用dubbo的cache进行缓存,如果缓存类型是lru就是最近最少使用缓存删除,保持设置热数据进行缓存Consumer服务端进行结果的缓存。threadlocal类型的cache是每一个线程存储一份数据。后续访问提高300%的速度。

        10.并发,连接控制

                限制客户端提供的连接数量,服务器端配置限制客户访问数量accepts 作用于服务提供者,限制其可以接受的总连接数。connections 作用于服务消费者,限制每个消费者与提供者之间的连接数。executes 作用于服务提供者,限制其处理请求的线程数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值