Spring+DUBBO传输层之netty-client端执行过程

上篇文章说了server端的执行过程,这篇文章将说一下client端的执行过程,一样地还是从nettyclient的启动开始:

1:首先看看nettyclient是什么时候启动的,nettyclient是在spring实例化第一个<dubbo:reference>标签定义的bean,的时候会根据url判断引用的服务端是否有client启动,如果没有的话就会创建client,并随机生成一个client端口与server端进行DUBBO协议(在DUBBO中协议是可配置可扩展但默认使用DUBBO协议)的长连接。下面的图1和图2展示了spring在实例化<dubbo:reference>定义的bean的过程,直到创建client.并且可以从两张图中看出reference bean经过了多个filter的封装包括什么ProtocolFilter等。注意看过上篇文章的朋友可能会注意到在nettyserver创建的时候,创建了两个线程池boss和worker,这里创建nettyclient为什么没有这两组线程池呢?其实是有的,看下面的第三张图可知,这两个线程池在nettyclient类加载的时候就初始化到channelFactory中去了。




2:上面看到了client的创建,以及reference的引用bean创建完成后下面看看真正的调用过程。下图中可以看到,调用会先走到InvokerInvocationHandller,然后经过两个invoker(这两个invoker的作用读者可以自己去dubbo的官方文档中去看,这里就不再讲解了)在FailoverClusterInvoker中,会继续构建filter执行链,下图中也可以看到,invokers中包含的filter包括什么ConsumerContextFilter,FutureFilter等。


3:经过上面的filter和invoker后,最终会走到DubboInvoker,在这里,在DubboInvoker的doInvoker方法里,将会将请求信息交给nettyClient去处理,“主线程”将会在95行一直等待返回结果,直到请求超时或者有返回结果返回。,nettyclient封装请求信息后将会被请求信息交给channel去发送。channel处理发送信息会经过三个handler,见下面的第三张图。这三个handler的作用,在上一篇介绍server端的调用链是讲过,这里就不再讲了。




4:在经过上面的encoder编码后,最后一个handler,nettyhandler会继续将请求消息封装成为一个WriteTask,交给worker线程去发送消息



5:消息发送完成后,worker线程一直轮询channel,等待服务端响应,当收到服务端响应信息后,将响应信息解码后,发送给AllChannel交给业务线程池去处理响应消息(从下图右边的线程栈可以看出),然后由业务线程DubboClientHandler“唤醒”一直在等待返回结果的future(下图二)。下图三是future在等待返回结果时的超时判断以及doResponse(),并最终会返回到上面“3”中提到的future.get()(下图四)。




6:在DefaulstFuture得到响应消息后,一层一层递返回到最初调用的地方。到这里整个请求+响应的过程就结束了。



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
现如今,电商市场已经成为了一个竞争激烈的领域,如何提高商城的运营效率和用户体验成为了很多电商平台所关注的重点。基于springboot dubbo构建的电商平台,采用微服务架构,能够很好地解决电商平台在高并发处理方面的问题。 首先,微服务架构的优势在于将一个大型的系统拆分成多个小型服务,每个服务都是独立的,这使得服务的维护和升级变得方便快捷。通过微服务架构,商城可以将各种功能拆分成不同的微服务,这样处理高访问量的问题就更加容易。例如,可以将用户服务、商品服务、订单服务等拆分成各自的微服务,这些服务之间通过dubbo进行远程调用,这样可以有效降低系统整体的压力。 其次,采用微服务架构可以提高整个电商平台的可扩展性,通过动态的添加和删除微服务实例来实现系统水平扩容。由于商城系统的用户量和访问量可能会随时发生变化,因此,系统的可扩展性变得非常重要。在微服务架构中,可以根据不同的流量需求来自动扩展服务实例,这可以保证商城在高访问量下的稳定性。 最后,基于springboot dubbo构建的电商平台可以更好地服务于用户需求。基于微服务架构的商城系统可以采用分布式缓存、负载均衡和分布式事务等技术手段来提高用户的访问速度和稳定性,从而实现更好的用户体验。 综上所述,基于springboot dubbo构建的电商平台,在微服务架构的支持下,可以更加高效地处理高并发情况,提高整个系统的可扩展性和用户体验。在不断变化的电商市场中,这些特点将为商城带来更好的竞争力和优势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值