sofa rpc
为什么需要需要rpc而不是简单的http
- 但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销;
- 其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。
- 第三个来说就是安全性。最后就是最近流行的服务化架构、服务化治理,RPC框架是一个强力的支撑
注册中心的配置
SOFABoot RPC 也提供一个缓存文件(目前暂不支持),当 Zookeeper 不可用时,使用该缓存文件进行服务发现。配置该缓存文件的方式如下:
1 | com.alipay.sofa.rpc.registry.address=zookeeper://xxx:2181?file=/home/admin/registry |
编译过程
facade包、怎么编译进去的
对方引facade能成功调用的原因
MISC
META-INF/services/sofa-rpc/com.alipay.sofa.rpc.filter.Filter这个文件有什么用
META-INF/services/sofa-rpc/com.alipay.sofa.rpc.filter.Filter
是一个与 Apache SOFA (Scalable Open Financial Architecture) RPC 框架相关的配置文件。具体来说,这个配置文件遵循 Java 的服务发现机制(Service Provider Interface,SPI),用于声明实现 com.alipay.sofa.rpc.filter.Filter
接口的类。
文件作用
声明服务提供者: 这个文件包含了一个或多个实现 com.alipay.sofa.rpc.filter.Filter 接口的类的完全限定名。如:
com.example.MyCustomFilter
自动加载: 当框架或应用启动时,基于 SPI 机制,SOFA RPC 框架会自动加载并注册这些实现类,不需要手动在代码中指定。
扩展功能: 过滤器(Filter)通常用于对RPC调用进行拦截和处理,比如进行日志记录、性能监控、权限验证等。通过这个文件,你可以轻松地添加自定义的过滤器,增强框架的功能。
文件内容示例
假设你有一个自定义的过滤器类 com.example.MyCustomFilter
,你可以在 META-INF/services/sofa-rpc/com.alipay.sofa.rpc.filter.Filter
文件中写入:
com.example.MyCustomFilter
每行一个类名。如果你有多个过滤器,可以在文件中写多行:
代码详情
1 | com.example.MyCustomFilter1 |
实现自定义过滤器
创建过滤器类: 你的类需要实现 com.alipay.sofa.rpc.filter.Filter
接口,并实现相应的方法。
代码详情
1 | package com.example; |
配置文件: 在资源目录下的 META-INF/services/sofa-rpc/
目录中创建文件 com.alipay.sofa.rpc.filter.Filter
,并写入你的类名。
总结
通过 META-INF/services/sofa-rpc/com.alipay.sofa.rpc.filter.Filter
文件,您可以利用 Java 的SPI机制轻松地扩展和定制SOFA RPC 框架的功能,无需修改框架本身的代码。
Log4j的配置加载顺序?
框架里的代码读的配置文件的配置
MDC
MDC(Mapped Diagnostic Context) 是一个在日志记录系统中使用的重要概念,用于在每个线程中存储特定于线程的上下文信息。每个线程都有独立的MDC数据,不会与其他线程混淆。这在处理多线程应用程序时尤为有用,因为你可以根据某一上下文信息(如请求 ID、用户 session 等)来追踪日志消息。
疑问
为什么这个没有实现类?
org.apache.logging.log4j.core.async.AsyncLogger.TranslatorType#log(java.lang.String, java.lang.StackTraceElement, org.apache.logging.log4j.Level, org.apache.logging.log4j.Marker, org.apache.logging.log4j.message.Message, java.lang.Throwable)