`
herman_liu76
  • 浏览: 100000 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对已有多个同类功能实现的集成经验总结

阅读更多
    经人提醒这一年写的文章不多,一方面是因为同类的技术如果没有自己的体会不写,太我简单的也不写。去年多在学习各种各样的新接触的技术,还没有足够的经验与体会总结。最近对各种已有技术的集成方面,总结点个人经验。

一、问题来源

    比如当我们的系统需要引入日志产品时,已经有多种日志的实现了,比如log4j,logback,还有日志门面slfj等,我们不需要自己会开发,但我们需要根据不同的条件,或者配置,或者参数,使用其中某一个具体的实现。而对上使用日志的上层,需要屏蔽具体产品的不同,需要抽象出一个通用的日志对象模型。

二、解决思路

    如下图所示:    

  •     对产品A,B所涉及到的类进行了适配,简单的说就是持有对应的类,每一个都进行了代理,从而有了产品A、B的适配。(绿色)
  •     由于调用客户端对具体实现的变化无感,所以要把适配的类都实现相同的接口,这样客户端只调用接口就行了。(绿色)
  •     需要一个类对不同的适配进行管理,一般就有一个manager类。(红色)




三、示例

1. dubbo作为微核心架构,具体实现都进行了集成,并通过extension进行加载。这里是比较简单的log部分。

  • 左边目录有4个具体的实现,每一个里面都包含两个适配类,包装了我们单独用时的logFactory与log
  • 外层目录主要有3个类,Logger/LoggerAdapter分别是上面说的两个类的接口。
  • LoggerFactory类似上图中的manager类。它根据配置加载具体的实现的适配类。

其实我更愿意把每个实现中的叫*logAdapter/*logFactory,把外层的LoggerFactory叫LoggerManager。



  • logFactory的适配类中得到一个log还是用具体原产品中的实现,再包装成自己的log适配类
  • log适配类的各种操作,都用的原产品中的实现。

 



2. dubbo中另一个例子

  • 同样有一个适配包,里面有所有类的适配类,通常叫api包
  • 这里的manager是一个@SPI加载的适配类,它会动态从源码编译并加载到系统中,会根据URL中的参数,选择真正的序列化管理类Serialization。




  • hessian2的Serialize会产生一个适配了Hessian2Output(原产品类,是阿里改良的)的类。各种write操作,实际都是用内部原产品的类来做。




四、其它关联的情况

  • dubbo中进行了全面的集成,其它地方还没看到这么多,非常有学习价值。
  • 除了人家做好各种产品,我们来适配,不如先做好标准api,大家按标准实现。这方面就比如java.sql标准了。DriverManager就是一个总的管理,通过getConnection()得到一个实现Connection接口的具体实现,进而得到各种其它接口的实现。
  • 阿里的druid连接池,为了做监控,要在sql的所有api的接口上,再包装一层,内外层之间再加上过滤器(责任链模式)。执行外层的时候,先执行过滤再执行内层。过滤器这种模式用的很多,web应用的filter就是最常用的。做重要业务中,要考虑到未来的扩展,中间加上可配置的过滤器,未来有新功能就改动很少。spring中的bean的生命周期中,也都会插入一些用户可配置的额外处理,所以满足各种特殊的变化要求。
  • 当然过滤器是静态的链条,常用的interceptor也是静态的。如果是动态代理,那也可以在代理类与真正类之间做很多事情,比如真正类前用缓存,比如真正类执行后,根据结果降级,或者进行TCC(分布式事务方案之一)补偿。
  • 适配后的manager中经常要缓存一下用到的适配类。
  • 一些代理中间件,比如代理读写分离的估计原理都差不多。大的功能完善的就是更动态选择,或者多种选择策略,中间再插入用户可配置的处理,比如性能统计,时间统计,校验...。



    后面提到的一些关联情况,因为有些也没有细看,凭着经验写的,如有错误欢迎指正。
分享到:
评论

相关推荐

    ASP求职招聘网站设计(源代码+论文+开题报告+外文翻译+文献综述).zip

    文献综述是对已有的相关研究和资料的总结,可以帮助学习者理解当前领域的理论基础,找到项目设计的依据,以及了解可能需要改进或创新的地方。 通过这个项目,无论是初学者还是有经验的开发者,都可以深入了解ASP...

    华为爱同步客户端调研

    - **任务栏功能**:任务栏中集成了多项实用功能,如“启动/卸载爱同步”、“显示网盘已使用空间”、“暂停/恢复同步”等。 - **右键菜单项**:用户可以通过右键菜单项快速访问各项功能,例如“打开同步文件夹”、...

    vim之IDE进化实录 V0.2

    - **Unix哲学**:Vim遵循Unix哲学,即“一个程序只实现一个功能,并将其做到极致”,这使得Vim能够通过与其他工具(插件)协作来完成复杂的任务。 - **灵活性与定制性**:相较于一些“品牌机”式的IDE,如CodeBlocks...

    高校学生信息管理系统

    《文献综述02.doc》可能包含了作者对高校学生信息管理系统领域相关研究的总结,讨论了已有的解决方案、存在的挑战以及该系统可能带来的改进。 外文翻译文档,如《外文翻译.doc》,可能是对国外同类系统或技术的介绍...

    基于ssm+mysql的在线收银系统源码数据库论文.docx

    1. 功能需求:系统应包含商品管理、订单处理、支付接口集成、用户管理、报表统计等多个模块,满足商家日常运营需求。 2. 系统总体建设:系统需具备良好的用户体验,支持多种设备访问,并具备高可用性、可伸缩性。 3....

    毕业论文jsp2095研究生导师信息管理系统mysql.doc

    在国内外,已有一些高校采用了类似的导师信息管理系统,但这些系统往往功能单一,更新不及时,无法满足现代社会对快速、准确信息查询的需求。JSP(JavaServer Pages)技术,结合Struts2框架和MySQL数据库,已经成为...

    基于android系统的手机地图app大学论文.doc

    - 国内外已有众多成熟的地图应用,如Google Maps、百度地图等,但仍有创新空间,例如在用户体验、功能集成或个性化服务上进行提升。 3. **Android系统相关技术**: - **开发语言**:主要使用Java或Kotlin作为开发...

    PyEMD-master(适用于python或matlab的emd分析工具箱)

    这对于习惯于MATLAB语法的科研人员来说,可以无缝对接到已有的代码和工作流程,提高工作效率。 4. **C语言实现**: C语言因其运行速度快和内存管理灵活而常被用于编写底层算法。PyEMD-master采用C语言实现EMD算法,...

    衡阳市政府英文门户网站新闻翻译板块建设现状及优化方案.docx

    1. 网站架构与内容:已设立7个一级栏目和30个二级栏目,内容丰富,注重规范化和标准化。未来应继续强化内容更新,增加热点新闻、视频、图片报道等多元化展示,提升用户体验。 2. 用户体验:优化导航,增设在线客服...

    某医药快批物流管理系统项目建设可行性论证报告(系统软件开发项目).doc

    技术开发状况显示,当前市场上已有部分成熟的物流管理系统,但针对医药快批的定制化解决方案仍有待提升。现有产业规模不断扩大,迫切需要高效、合规的管理工具。 二、项目产品与性能 医药快批物流管理系统主要服务...

    “神华神东信息化”----深度观察报告

    本文将基于详尽的调查研究,辅以丰富的图文资料,深入分析神华神东在信息化建设中的具体模式与实践策略,旨在为同类煤炭企业及其他行业从业人员提供有价值的参考。 #### 二、信息化建设背景 ##### 2.1 集团公司...

    软件可行性分析报告实施报告实施报告实施报告.doc

    本报告旨在详尽分析理财系统软件的可行性,从技术、经济、法律和社会等多个角度进行深入探讨。理财系统工程的目的是为了提供一个高效、安全且用户友好的平台,帮助个人及家庭进行资产管理、投资规划和财务分析。工程...

    GJB813可靠性模型的建立和可靠性预计

    模块级可靠性模型则是在元件级模型的基础上,考虑多个元件之间的连接方式以及相互作用,通过串联、并联等方式组合而成。这类模型能够更准确地反映复杂系统的可靠性特征。 ##### 3.3 整机级可靠性模型 整机级可靠性...

    站长亲测版YzmCMS内核简约时尚十分的出色的blog自媒体主题模板.txt

    ### YzmCMS内核简约时尚Blog自媒体主题模板详解 #### 一、引言 ...无论您是初学者还是有一定经验的开发者,都可以轻松上手并迅速搭建出一个既美观又实用的个人博客或自媒体平台。希望本文能对您有所帮助!

    创新能力教程.pptx

    功能组合则使得单一产品能够集成更多功能,如智能手机集合了通讯、娱乐、支付等多种功能。而方法组合则能通过整合不同的解决方案,提升问题解决的效率和效果,如将激光与超声波结合用于医疗灭菌。 教程强调,只有...

    电气自动化技术专业评审汇报ppt课件.ppt

    电气自动化技术专业评审汇报主要涉及了专业建设的多个方面,包括专业建设团队、专业定位、教学资源建设、人才培养方案、重点课程建设以及存在的不足。以下是对这些内容的详细阐述: 1. **专业建设团队**: 专业...

    国阳公司XXXX年地质测量部地测档案资料管理系统软件采购招标文件.doc

    此外,还要求有计算机信息系统集成二级及以上资质,并有同类项目业绩。 5. 合同条款:交货日期为合同签订后的90个日历天,需在##省##市矿区机关完成安装调试。合同通用条款和专用合同条款详细规定了双方权利和义务...

    《市场调查与预测》期末综合练习.ppt

    《市场调查与预测》是一门涉及商业决策的重要课程,它涵盖了市场研究的多个核心概念和技术。以下是基于课程内容的关键知识点的详细阐述: 1. **描述性调查**:这是市场调查的一种基本类型,主要目的是描述市场现状...

    惠州某广场可行性研究报告.docx

    - **大亚湾经济区**:集成了石油化工、新能源等多个产业,是惠州经济发展的重要引擎。 **1.5 惠州市在珠三角的地位和作用** - **战略位置**:作为连接粤东与珠三角的重要节点,对于促进区域协调发展具有重要作用。...

Global site tag (gtag.js) - Google Analytics