9.远程暴露

简介: cascasc

昨天下午一个好朋友也打电话给我,说他去面试(广州)问到了从看源码中你学到了什么?这个问题.其实能学到的东西就太多了.比如你看任何一个框架的源码,那么首先要看一下设计模式吧,任何一个成熟的框架少不了工厂模式.再具体一点,看dubbo源码,你就要顺便学一下zookeeper,netty,spring事件机制的一些简单知识.像SPI,javassist这些知识你工作了几年可能还没用过吧.同时我们根据这些再深入思考一下,比如dubbo中拼接生成动态编译类的做法,我们可不可以用其他方式来实现呢?比如通过freemarker这样的模板引擎.既然能生成动态编译类,那像CRUD这种比较固定的代码,我们是不是又可以用这个模板引擎做一个代码生成器呢?

言归正传,我们回到主题.鉴于前面提到的点题思想,就那以本篇为例,时刻提一下从源码中你学到了什么

插播面试题

  • 服务暴露中远程暴露的总体过程,画图和文字方式说明

预热概念

首先上一张dubbo文章中非常经典的一张图

相信大家初学dubbo的时候都看过这张图,但是可能当时没理解这个图究竟想说的是什么.图中圈出来的部分就是今天要讲的远程暴露,当然我还会做一些补充.

为什么这次我不直接自己画图,而是引用官方文档的图?原因很简单,因为假如我直接把图画出来,就是相当把这些概念填鸭式的告诉你,这样你无法看到我的思考过程,也就是说,我并没有告诉大家,这些东西我是怎么知道的,然而这一点,才是源码解析类文章,最应该表达的思想.所以我每篇文章都先从文档入手,以dubug代码的方式验证,这就是我的思考过程,也是我看源码的过程(粗暴式点题怎么看源码).当然后面视情况也会补上一些个人自己花的图加以总结.

另外注意的是,图中的箭头方向是从ConsumerProvider的过程,所以这个暴露的过程,是我红框出来的反方向

直入主题

由于前两篇dubbo源码解析-服务暴露原理dubbo源码解析-本地暴露已经多次讲述了getInvoker的过程,远程暴露也大同小异,所以不再细述.直接从protocol.export(invoker)开始,另外每个截图我都会尽量把类名和方法名截图出来,方便读者一起debug,另外这些动态编译类(黄色圈出来的)调试方式请参考服务暴露原理这篇



由经典的交互图知道,下一个关键词是Filter,由于这个也和前面讲得大同小异,所以就将过程简单浏览回顾一下








下面我们似乎又看到了一位熟悉的老朋友,在本地暴露中我们也看过这行代码,为何本地暴露远程暴露中都有他的身影?欢迎简书关注肥朝,在服务引用那一节我们再揭秘



同时我们已经到了第三个关键词Procotol,老规矩,我们来看看他的继承体系图(粗暴式点题,怎么看源码)



那这种继承体系有什么好处呢?要想说明一个代码好,那就必须拿个比较一般代码来对比了.由于篇幅有限,推荐看大话设计模式的第一章,该章用一个计算器的例子,将一个比较一般的代码一步一步演进成类似结构(粗暴式点题,从看源码中学到了什么).

按照经典图的路线,我们下一个关键词应该就是Server了,从方法名openServer(url)也可以看出来确实是这样.当然我在预热概念中也提到,我会做一些补充,那么我要在这个ProcotolTransporter插播一个关键词,那就是Exchanger




从单词意思我们知道,这个是交换的意思,按照计算机术语,这个称之为交换层更贴切.那么问题来了,他交换什么东西?那我们来看一下他的方法图(粗暴式点题,怎么看源码)


我们捕捉到了几个关键词,Client,Server,其实这个交换层,就是做封装请求与响应之间的交互层.那么为什么需要这么个交互层呢?这么设计有什么好处呢?好,那我们打开阿里巴巴Java开发手册

我来举个例子,java web中传统的请求响应方式都是controller->service->dao,然后dao->service->controller,从手册我们知道,从dao传出来的是DO,但是controller需要的是VO,那么我们是不是需要一个中间的交互层来做这些转换?这个例子虽然不足以描述这种设计的好,但是比较可能比较好理解一些.(粗暴式点题,看源码学到了什么)

那我们继续往下走




下面就要注意了,我们要来到下一个关键词Transporter,这个从字面理解为传输层,那这个究竟是什么传输层?我们来看一下继承体系图(粗暴式点题,怎么看源码)

从这里就可以看出,这个是网络传输层,其中GrizzlyMinaNetty都是非常有名的NIO框架,想了解他们可以查一下相关资料(粗暴式点题,看源码学到了什么)

相关文章
|
3月前
|
存储 人工智能 数据库
新手用户购买阿里云服务器有哪些省钱方法?云服务器购买省钱攻略参考
本文基于老用户经验,总结了初次购买阿里云服务器的一些实用省钱技巧:一是利用新用户身份,以38元/年起抢购轻量应用服务器,或以99元/年、199元/年购经济型e实例和u1实例;二是领取优惠券、企业AI算力补贴等专项优惠;三是紧盯双11、618等大促及日常限量秒杀活动;四是根据业务需求精准选型,避免配置浪费;五是选择华北6、华南2等性价比更高的地域;六是长期业务选包年包月并尽量延长购买周期;七是善用购物车合并结算,关注续费同价政策;八是合理规划带宽,利用活动折扣锁定低价带宽,避免后期溢价。综合运用这些策略,可在保障业务需求的前提下有效控制上云成本。
新手用户购买阿里云服务器有哪些省钱方法?云服务器购买省钱攻略参考
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
可计算元认知文本分析:跨领域语义漂移的多层解释框架与实证研究
背景:跨领域语义漂移(semantic drift)是自然语言处理与知识融合中的核心障碍。前期研究已构建了三种量化手段——Jaccard(结构漂移)、Word2Vec(语义漂移)与 SBERT(句子级漂移),但仅提供“漂移多少”的数值,缺乏可解释性与因果解释。 结论:四层框架实现了从“是否漂移” → “漂移多少” → “为何漂移” → “如何漂移”的完整链路,为跨领域知识对话提供了量化 解释 因果 句子四维支撑。该框架可推广至其他多学科语料,助力AI Human 协同的可解释知识融合。 关键词:语义漂移;可解释性;大语言模型(LLM);因果推断;SBERT;可计算元认知
|
9月前
|
存储 人工智能 供应链
CoWoS、3D IC、Chiplet混战:先进封装的“技术路线之争“到底在争什么?
2025年,先进封装领域上演CoWoS、Chiplet与3D IC技术路线之争。台积电产能垄断、三星弯道超车、AMD借混合架构追赶,背后是性能、成本、供应链与生态标准的深度博弈,实则推动三者走向融合,重塑半导体产业格局。
|
3月前
|
人工智能 自然语言处理 算法
什么是模型即服务
“模型即服务”(MaaS)是AI普及的关键基础设施,指将大模型能力封装为可即时调用的云服务。它大幅降低AI使用门槛,让个人、中小企业无需自建算法团队或算力即可接入AI能力,赋能智能体、办公、创作等场景,正推动AI从技术红利走向全民基础能力。(239字)
|
9月前
|
canal 缓存 关系型数据库
|
9月前
|
负载均衡 算法 Java
|
9月前
|
缓存 Java 关系型数据库
|
3月前
|
人工智能 数据可视化 机器人
5个硬性指标:海外仓跨境呼叫中心选型,区域分配准确率98%+背后的技术能力盘点
本文深度解析海外仓跨境客服选型困境与方案,聚焦多渠道统一接入、区域/经理精准分配(≥98%)、AI对接物流接口、全链路质控、高稳定性(SLA≥99.9%)五大硬指标,横向对比合力亿捷等5家主流厂商,为中大型海外仓企业提供可落地的选型决策依据。(239字)
205 0
|
4月前
|
物联网 数据建模 测试技术
申请SSL证书一定要域名吗?
申请SSL证书不一定需要域名,IP地址同样可申请IP SSL证书。它支持HTTPS加密与身份验证,适用于无域名场景,如内网系统、IoT设备、测试环境等,主流CA品牌均已支持DV/OV类型。

热门文章

最新文章