
每天一道面试题
坚持坚持
liushuang6018
个人简介
展开
-
2021-02-01 SPI规范解决了什么问题
SPI规范解决了什么问题SPI的全称是 Service Provider Interface,目的是为了方便面向接口的编程。定义了一个接口之后,具体的实现类可以在代码里实现这个接口,并在 META-INF/service/接口全限定名 这个文件下定义具体的实现。java.sql.Driver,common-logging都使用了SPI。dubbo的扩展是基于SPI做了一层封装,在META-INF/dubbo/services目录下定义了扩展的实现。代码中通过ServiceLoader.load(Sp原创 2021-02-01 15:01:13 · 247 阅读 · 0 评论 -
2021-01-29 Dubbo中都有哪些扩展点?怎么实现的?
Dubbo中都有哪些扩展点?怎么实现的?扩展点协议扩展调用拦截扩展(filter)负载均衡扩展合并结果扩展(Merger)注册中心扩展动态代理扩展dubbo的扩展点是基于SPI进行了一定的加强。扩展点放在 META-INF/dubbo/接口全限定名扩展点通过wrapper的方式自动包装扩展点自动装配,在setter中引用的扩展点可以自动加载扩展点自适应扩展点自动激活(@Active注解)...原创 2021-01-29 15:13:38 · 206 阅读 · 0 评论 -
2021-01-21 dubbo中注册中心有哪几种实现?
dubbo中注册中心有哪几种实现?Nacos服务发现和健康监测动态配置服务动态DNS服务及其元数据Zookeeper服务提供者启动的时候,向zk的特定目录写下自己的URL地址服务消费者启动的时候,也向zk写在自己的地址,并订阅服务提供者的地址监控中心启动时,订阅所有的提供者和消费者URL地址Multicast不需要启动中心节点,只要广播地址只适合小规模应用或开发阶段Redis使用redis的Key/Map结构存储数据map的key是URL地址,value是过期时间原创 2021-01-21 11:35:05 · 229 阅读 · 0 评论 -
2021-01-20 dubbo中泛化调用解决的问题?如何实现?
dubbo中泛化调用解决的问题?解决了通用api调用的问题。如果没有泛化调用,那么调用每一个provider都需要预先定义一个service。有了泛化调用可以在启动的时候不去定义,而是在运行时动态指定provider。例如通用API网关,会频繁的有service进行注册,如果没有泛化调用,那么每新增一个API就要修改网关的配置并重启。如何实现?RPC的调用本身就是通过provider的元信息(接口名,版本,参数个数,参数类型)来进行调用。泛化调用就是通过代码的方式动态设置这些元信息,然后进行实际的原创 2021-01-20 17:03:19 · 356 阅读 · 0 评论 -
2021-01-18 负载均衡策略?最少活跃调用数如何实现?
负载均衡策略?轮询加权轮询随机哈希最少连接数加权最小连接数最短响应时间一致性哈希最少活跃调用数如何实现?维护一个map,key是后端的real server,value是当前正在活跃的调用数。每次分配之前,查看这个map,找出value最小的那个对应的real server建立连接。并对value进行自增。...原创 2021-01-18 14:37:34 · 213 阅读 · 0 评论 -
2020-12-30 字节码和动态代理
javassist通过java编码的方式,操作字节码,可以生成新的类。ASM需要对class的底层结构、汇编有一定的了解。门槛比较高。性能高,维护性差。Cglib导入cglib依赖包,代理类实现MethodInterceptor使用Enhance类得到动态代理的实例,并执行指定方法。jdk动态代理只能针对接口代理,需要实现Invokhandler接口的invoke(Object proxy, Method method, Object[] args)接口...原创 2020-12-30 16:10:08 · 212 阅读 · 0 评论 -
2020-12-28 NIO框架对比
MinaApache Mina Server是一个网络通信应用框架,与Netty是同一作者。比较老了。Netty基于NIO实现API更简单功能强大,预制了很多编码方案定制能力强性能高成熟稳定GrizzlyNIO的简单封装原创 2020-12-28 16:29:28 · 127 阅读 · 0 评论 -
2020-12-22 Dubbo的序列化方式
可以通过serialization来进行指定,默认是用hessian2dubbo协议缺省为hessian2,rmi协议缺省为java,http协议缺省为jsonHessian2比较老,性能一般高效率,高压缩比,二进制Dubbo阿里尚未开发成熟的高效java序列化实现,阿里不建议在生产环境使用它JSON纯文本,自解释Java必须实现SerializableThrift有中间的的IDL,跨语言Kyro使用字节码生成机制,底层依赖asm,只支持java把类型信息也放在序列化的结果中原创 2020-12-22 10:26:34 · 351 阅读 · 0 评论 -
2020-12-18 dubbo的通信方式
dubbo的通信方式?dubbo支持多种协议,默认使用的是dubbo协议。dubbo缺省协议采用单一长连接和NIO异步通讯,适合小数据量大并发的服务调用,以及消费者机器数远大于服务提供者。反之,Dubbo缺省协议不适合传送大数据量的服务。使用mina,hessian,tbremoting交互单链接、长连接、TCP、NIO异步传输,Hessian二进制序列化rest基于标准的Java REST API- JAX-RS 2.0实现的REST调用支持http基于HTTP表单的远原创 2020-12-18 17:43:22 · 499 阅读 · 1 评论 -
2020-12-17 dubbo
Dubbo都有哪些组件?Provider服务的提供方Consumer服务的消费方Register服务注册和发现的组件Monitor:统计服务调用次数和调用时间的监控中心Container:服务的运行容器参考链接https://dubbo.apache.org/zh/docs/v2.7/user/preface/architecture/...原创 2020-12-17 09:26:19 · 80 阅读 · 0 评论