【最新Dubbo3深入理解】Dubbo3源码中的一些小技巧

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!

在我后台回复 「资料」 可领取编程高频电子书

在我后台回复「面试」可领取硬核面试笔记

文章导读地址:点击查看文章导读!

感谢你的关注!

最新 Dubbo3 深入理解原理系列

Dubbo 源码中的一些小技巧

快速判断端口是否被占用

Dubbo 在暴露应用元数据服务的时候,有可能服务默认端口会被占用,那么就需要判断默认端口是否被占用,如果被占用了就换一个端口

那么判断端口占用其实就是在这个端口上创建一个 Socket 连接,如果失败抛出异常了,说明这个端口被占用:

java 复制代码
int port = 20880;
while (true) {
    try (ServerSocket isBusy = new ServerSocket(port)) {
        // ...
    } catch (IOException e) {
        // 抛出异常说明端口被占用,再试试下一个端口
        port += 1;
        continue;
    }
}

transient 关键字使用

Dubbo 中服务暴露的时候需要向注册中心放一些信息,通过 Netty 将数据信息传输到注册中心进行注册

在 Java 中一般是使用一个类来存放这些信息的,但是有些字段只是在 Dubbo 内部使用,而不需要放到注册中心中去,这时可以使用 transient 关键里来不对这些字段进行序列化

要将数据传给注册中心都是需要对数据进行序列化的,我们就可以在序列化的时候通过 transient 关键字跳过那些不需要注册的数据

java 复制代码
public class User {
    private String name;
    // 不对 password 进行序列化
    private transient String password;
}

因此也就不会通过 Netty 传输到注册中心了

相关推荐
装不满的克莱因瓶2 天前
【Java架构师】各个微服务之间有哪些调用方式?
java·开发语言·微服务·架构·dubbo·restful·springcloud
他们叫我技术总监4 天前
从开发者视角深度评测:ModelEngine 与 AI 开发平台的技术博弈
java·人工智能·dubbo·智能体·modelengine
CodeLongBear4 天前
Day02计算机网络网络层学习总结:从协议到路由全解析
学习·计算机网络·dubbo
编啊编程啊程8 天前
【018】Dubbo3从0到1系列之时间轮流程图解
rpc·dubbo
编啊编程啊程8 天前
【020】Dubbo3从0到1系列之服务发现
rpc·dubbo
静止了所有花开9 天前
虚拟机ping不通百度的解决方法
dubbo
helloworld_工程师9 天前
Dubbo应用开发之FST序列化的使用
后端·dubbo
百度智能云技术站9 天前
百度亮相 SREcon25:搜索稳定背后的秘密,微服务雪崩故障防范
微服务·架构·dubbo
问道飞鱼12 天前
【微服务组件】Springboot结合Dubbo实现RPC调用
spring boot·微服务·rpc·dubbo
helloworld工程师15 天前
Dubbo应用开发之RPC直连开发
网络协议·rpc·dubbo