二:dubbo中SPI扩展实现

1:RPC协议扩展,封装远程调用细节

扩展接口:

com.alibaba.dubbo.rpc.Protocol

com.alibaba.dubbo.rpc.Exporter

com.alibaba.dubbo.rpc.Invoker

已知扩展:

com.alibaba.dubbo.rpc.injvm.InjvmProtocol

com.alibaba.dubbo.rpc.dubbo.DubboProtocol

com.alibaba.dubbo.rpc.rmi.RmiProtocol

com.alibaba.dubbo.rpc.http.HttpProtocol

com.alibaba.dubbo.rpc.http.hessian.HessianProtocol

2:调用拦截扩展

扩展接口:

com.alibaba.dubbo.rpc.Filter

已知扩展:

com.alibaba.dubbo.rpc.filter.EchoFilter

com.alibaba.dubbo.rpc.filter.GenericFilter

com.alibaba.dubbo.rpc.filter.GenericImplFilter

com.alibaba.dubbo.rpc.filter.TokenFilter

com.alibaba.dubbo.rpc.filter.AccessLogFilter

com.alibaba.dubbo.rpc.filter.CountFilter

com.alibaba.dubbo.rpc.filter.ActiveLimitFilter

com.alibaba.dubbo.rpc.filter.ClassLoaderFilter

com.alibaba.dubbo.rpc.filter.ContextFilter

com.alibaba.dubbo.rpc.filter.ConsumerContextFilter

com.alibaba.dubbo.rpc.filter.ExceptionFilter

com.alibaba.dubbo.rpc.filter.ExecuteLimitFilter

com.alibaba.dubbo.rpc.filter.DeprecatedFilter

3:引用监听扩展

扩展接口:(当有服务引用时,触发该事件)

com.alibaba.dubbo.rpc.InvokerListener

已知扩展:

com.alibaba.dubbo.rpc.listener.DeprecatedInvokerListener

4:暴露监听扩展

扩展接口:当有服务暴露时,触发该事件

com.alibaba.dubbo.rpc.ExporterListener

已知扩展:

com.alibaba.dubbo.registry.directory.RegistryExporterListener

5:集群扩展

扩展接口:(当有多个服务提供方时,将多个服务提供方组织成一个集群,并伪装成一个提供方)

com.alibaba.dubbo.rpc.cluster.Cluster

已知扩展:

com.alibaba.dubbo.rpc.cluster.support.FailoverCluster

com.alibaba.dubbo.rpc.cluster.support.FailfastCluster

com.alibaba.dubbo.rpc.cluster.support.FailsafeCluster

com.alibaba.dubbo.rpc.cluster.support.FailbackCluster

com.alibaba.dubbo.rpc.cluster.support.ForkingCluster

com.alibaba.dubbo.rpc.cluster.support.AvaliableCluster

6:路由扩展

扩展接口:(从多个服务提供者方中选择一个进行调用)

com.alibaba.dubbo.rpc.cluster.RouterFactory

com.alibaba.dubbo.rpc.cluster.Router

已知扩展:

com.alibaba.dubbo.rpc.cluster.router.ScriptRouterFactory

com.alibaba.dubbo.rpc.cluster.router.FileRouterFatory

7:负载均衡的裸站

扩展接口:(从多个服务提供者选择一个进行调用)

com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance

com.alibaba.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance

com.alibaba.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance

8:合并结果扩展

扩展接口:(合并返回结果,用于分组聚合)

com.alibaba.dubbo.rpc.cluster.Merger

已知扩展:

com.alibaba.dubbo.rpc.cluster.merger.ArrayMerger

com.alibaba.dubbo.rpc.cluster.merger.ListMerger

com.alibaba.dubbo.rpc.cluster.merger.SetMerger

com.alibaba.dubbo.rpc.cluster.merger.MapMerger

9:注册中心扩展

扩展接口:(负责服务的注册与发现)

com.alibaba.dubbo.registry.RegistryFactory

com.alibaba.dubbo.registry.Registry

已知扩展:

com.alibaba.dubbo.registry.support.dubbo.DubboRegistryFactory

10:监控中心扩展

扩展接口:(负责服务调用次数和调用时间的监控)

com.alibaba.dubbo.monitor.MonitorFactory

com.alibaba.dubbo.monitor.Monitor

已知扩展:

com.alibaba.dubbo.monitor.support.dubbo.DubboMonitorFactory

11:扩展点加载扩展

扩展接口:(扩展点本身的加载容器,可从不同容器加载扩展点)

com.alibaba.dubbo.common.extension.ExtensionFactory

已知扩展:

com.alibaba.dubbo.common.extension.factory.SpiExtensionFactory

com.alibaba.dubbo.common.config.spring.extension.SpringExtensionFactory

12:动态代理扩展

扩展接口:(将Invoker接口转换成业务接口)

com.alibaba.dubbo.rpc.ProxyFactory

已知扩展:

com.alibaba.dubbo.rpc.proxy.JdkProxyFactory

com.alibaba.dubbo.rpc.proxy.JavassistProxyFactory

13:编译器扩展

扩展接口:(JAVA代码编译器,用于动态生成字节码,加速调试)

com.alibaba.dubbo.common.compiler.Compiler

已知扩展:

com.alibaba.dubbo.common.compiler.support.JdkCompiler

com.alibaba.dubbo.common.compiler.support.JavassitCompiler

14:消息派发扩展

扩展接口:(通道信息派发器,用于指定线程池模型)

com.alibaba.dubbo.remoting.Dispatcher

已知扩展:

com.alibaba.dubbo.remoting.transport.dispatcher.all.AllDispatcher

com.alibaba.dubbo.remoting.transport.dispatcher.direct.DirectDispatcher

com.alibaba.dubbo.remoting.transport.dispatcher.message.MessageOnlyDispatcher

com.alibaba.dubbo.remoting.transport.dispatcher.execution.ExecutionDispatcher

com.alibaba.dubbo.remoting.transprot.dispatcher.connection.ConnectionOrderedDispatcher

15:线程池扩展

扩展接口:(服务提供方线程的实现策略,当服务器收到一个请求时,需要在线程池中创建一个线程去执行服务提供方业务逻辑。)

com.alibaba.dubbo.common.threadpool.ThreadPool

已知扩展:

com.alibaba.dubbo.common.threadpool.FixedThreadPool

com.alibaba.dubbo.common.threadpool.CachedThreadPool

16:序列化扩展

扩展接口:(将对象转化成字节流,用于网络传输;以及将字节流转化为对象,用于在收到字节流数据后还原成对象。)

com.alibaba.dubbo.common.serialize.Serialization

com.alibaba.dubbo.common.serialize.ObjectInput

com.alibaba.dubbo.common.serialize.ObjectOutput

已知扩展:

com.alibaba.dubbo.common.serialize.dubbo.DubboSerialization

com.alibaba.dubbo.common.serialize.hessian.Hessian2Serialization

com.alibaba.dubbo.common.serialize.java.JavaSerialization

com.alibaba.dubbo.common.serialize.java.CompactedJavaSerialization

17:网络传输扩展

扩展接口:(远程通讯的服务器及客户端传输的实现)

com.alibaba.dubbo.remoting.Transporter

com.alibaba.dubbo.remoting.Server

com.alibaba.dubbo.remoting.Client

已知扩展:

com.alibaba.dubbo.remoting.transport.transporter.netty.NettyTransporter

com.alibaba.dubbo.remoting.transport.transporter.mina.MinaTransporter

com.alibaba.dubbo.remoting.transport.transporter.grizzly.GrizzlyTransporter

18:信息交换扩展

扩展接口:(基于传输层之上,实现Request-Response信息交换语义。)

com.alibaba.dubbo.remoting.exchange.Exchanger

com.alibaba.dubbo.remoting.exchange.ExchangerServer

com.alibaba.dubbo.remoting.exchange.ExchangerClient

已知扩展:

com.alibaba.dubbo.remoting.exchange.exchanger.HeaderExchanger

19:组网扩展

扩展接口:(对等网络节点组网器)

com.alibaba.dubbo.remoting.p2p.NetWorker

已知扩展:

com.alibaba.dubbo.remoting.p2p.support.MulticastNetworker

com.alibaba.dubbo.remoting.p2p.support.FileNetworker

20:Telnet命令扩展

扩展接口:(所有服务器均支持telnet访问,用于人工干预)

com.alibaba.dubbo.remoting.telnet.TelnetHandler

已知扩展:

com.alibaba.dubbo.remoting.telnet.support.ClearTelnetHandler

com.alibaba.dubbo.remoting.telnet.support.ExitTelnetHandler

com.alibaba.dubbo.remoting.telnet.support.HelpTelnetHandler

com.alibaba.dubbo.remoting.telnet.support.StatusTelnetHandler

com.alibaba.dubbo.rpc.dubbo.telnet.ListTelnetHandler

com.alibaba.dubbo.rpc.dubbo.telnet.ChangeTelnetHandler

com.alibaba.dubbo.rpc.dubbo.telnet.CurrentTelnetHandler

com.alibaba.dubbo.rpc.dubbo.telnet.InvokerTelnetHandler

com.alibaba.dubbo.rpc.dubbo.telnet.TraceTelnetHandler

com.alibaba.dubbo.rpc.dubbo.telnet.CountTelnetHandler

com.alibaba.dubbo.rpc.dubbo.telnet.PortTelnetHandler

21:状态检查扩展

扩展接口:(检查服务依赖各种资源的状态,此状态检查可同时用于telnet的status命令和hosting的status页面。)

com.alibaba.dubbo.common.status.StatusChecker

已知扩展:

com.alibaba.dubbo.common.status.support.MemoryStatusChecker

com.alibaba.dubbo.common.status.support.LoadStatusChecker

com.alibaba.dubbo.rpc.dubbo.status.ServerStatusChecker

com.alibaba.dubbo.rpc.dubbo.status.ThreadPoolStatusChecker

com.alibaba.dubbo.registry.directory.RegistryStatusChecker

com.alibaba.dubbo.rpc.config.spring.status.SpringStatusChecker

com.alibaba.dubbo.rpc.config.spring.status.DataSourceStatusChecker

22:容器扩展

扩展接口:(服务容器扩展,用于自定义加载内容。)

com.alibaba.dubbo.container.Container

已知扩展:

com.alibaba.dubbo.container.spring.SpringContainer

com.alibaba.dubbo.container.spring.JettyContainer

com.alibaba.dubbo.container.spring.Log4jContainer

23:页面扩展

扩展接口:

com.alibaba.dubbo.container.page.PageHandler

已知扩展:

com.alibaba.dubbo.container.page.pages.HomePageHandler

com.abliaba.dubbo.container.page.pages.StatusPageHandler

com.alibaba.dubbo.container.page.pages.LogPageHandler

com.alibaba.dubbo.container.page.pages.SystemPageHandler

24:缓存扩展

扩展接口:(用请求参数作为key,缓存返回结果。)

com.alibaba.dubbo.cache.CacheFactory

已知扩展:

com.alibaba.dubbo.cache.support.lru.LruCacheFactory

com.alibaba.dubbo.cache.support.threadlocal.ThreadLocalCacheFactory

com.alibaba.dubbo.cache.support.jcache.JCacheFactory

25:验证扩展

扩展接口:(参数验证扩展点)

com.alibaba.dubbo.validation.Validation

已知扩展:

com.alibaba.dubbo.validation.support.jvalidation.JValidation

26:日志适配扩展

扩展接口:(日志输出适配扩展点)

com.alibaba.dubbo.common.logger.LoggerAdapter

已知扩展:

com.alibaba.dubbo.common.logger.slf4j.Slf4jLoggerAdapter

com.alibaba.dubbo.common.logger.jcl.JclLoggerAdapter

com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter

com.alibaba.dubbo.common.logger.jdk.JdkLoggerAdapter

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 0 准备 安装注册中心:Zookeeper、Dubbox自带的dubbo-registry-simple;安装Du...
    七寸知架构阅读 13,966评论 0 88
  • 所谓“给觉知留下空间”,就是说在理解自己时,先去好好觉知,充分觉知,要把觉知这件事做到足够。 怎样做会破坏觉知的空...
    Joycty阅读 196评论 0 0
  • 反常识: 知识不需要完全确定后才是有用的——即便某些知识不能预测个体的具体统计情况,但如果能对群体的总体趋势有预测...
    夏达人阅读 834评论 0 0
  • 清代的袁枚在《黄生借书说》中对前来借书的黄允修说:“书非借不能读也”。可知古人借书阅读是求学的一项重要内容,毕竟穷...
    涛涛老师阅读 416评论 0 2
  • 阿尔茨海默症不仅仅是失忆,还伴随各种前兆症状。如果发现自己或周围人有以下10个症状,一定不能忽视,和医生预约一个时...
    许远山阅读 3,274评论 1 0