架构设计—神一般存在的中间件

什么是中间件? 通过刚才的学习,我们知道了中间件的概念,它是为了解决系统中的技术需求,将技术需求与业务需求进行解耦,让我们专注于业务代码开发的一个个技术组件。中间件的存在,就是为了解决高并发、高可用性、高性能等各领域的技术难题。在项目中,合理引用中间件能极大提升我们系统的稳定性、可用性,但同时也会提升系统维护的复杂度,对我们的技术能力提出了更高的要求,我们必须要熟练掌握项目中引用的各种中间件,深入理解其工作原理、实现细节,提高对中间件的驾驭能力,否则一旦运用不当,很可能给系统带来灾难性的故障。 阅读详情

        初识中间件是CORBA,听主席在上面吹牛,感觉除了神奇还是神奇,又是跨语言、又是跨操作系统、还能跨网络,效率还高,伸缩性还强,真是银弹啊。可是在用的过程中除了感觉难用,还是难用。后识中间件是现在的工作单位使用tuxedo来发布各式各样的服务来构建系统。可是中间件到底是啥,翻了一下维基百科,看了一下中间件的定义,真可谓是含糊不清,五花八门各种定义都有。其实就是按照其中最BT的定义来说,我早在使用CORBA之前使用的ODBC、BDE也是属于中间件的,甚至各种带有网络通讯功能的COM控件仿佛也是,又或者只要不参与到具体的应用服务器或软件中的F5、nginx、apache也是,当我搜到ACE都堂而皇之成为中间件时,我就开始迷糊了为什么MFC、VCL只能称为framework,boost、libev、libevent只能称之为库?我们暂且不执着于中间件这个名词,就以数据库应用中笔者最感兴趣的中间件iBatis和库SOCI的功能来进行对比,实际体验一把差别。

         从支持的数据库产品角度来看,iBatis能够链接任意多的支持JDBC接口的数据库;SOCI可以链接任意多种提供了原生API支持的数据库(部分需要扩展),也可以通过ODBC连接任意多的支持ODBC接口的数据库。从OR maping来看,两者都支持OR mapping,一个通过配置文件进行OR maping规则指定,一个通过硬编码的方式进行OR mapping规则指定。另外SOCI支持直接书写任意SQL语句,提供SQL语言级别的支持。

        从上述比较看来,两者的区别实也就是车厘子和樱桃的差别,甚至SOCI库提供的功能支持看起来还比iBatis还多一些。一般情况下,当神走下神坛的时候,我们就会发现一大堆问题,比如中间件的维护问题,由厂商支持的还好,毕竟收了客户的钱,至少得敬业一些,可是如果遇到一些开源的中间件,那一旦出了问题,可是绝对要看心情办事。不看心情办事,修修改改就极有可能修改成自己的私有库。总的来说库的应用对数据库的使用带来了极大的便利,但是随之而来的也是对部分开发人员的编程技能要求的提高。更多的时候是随着库代码的日益庞大,当测试无法保证库代码质量时,开源就成了唯一的选择。但是开源就能避免这种崩溃的到来么?显然是不行的。

        这种代码级别的复用,复用的广度越大,底层的代码越是不能随意改动,有时一个bug的修复导致的系统重建的规模是翻天覆地的,真可谓是看似搭积木想法,其实是多米诺骨牌的布局。前不久的SSL的一个心率不齐,结果差点导致了互联网界的一场地震。可是这又怎么能挡住我们寻求安全复用代码的步伐呢,当静态的代码复用给我带来伤害时,那动态代码复用又是如何呢?

        先澄清一下什么是动态代码复用,动态代码服用是笔者自己杜撰的一个新词汇,用来表示那种不把已有的功能代码通过硬编码的方式嵌入到自己的宿主应用中,典型的应用就是UNIX下bash脚本,通过管道连连接一个个独立的程序来组合完成一项新的功能,在扩展一下就是现在时兴的web service调用或者RESTful服务调用,总之,就是功能代码是一个独立完整的进程实体,它的生命周期或长或短,但是和宿主程序的地位是相对对等的一种复用方式。关于这种方式《UNIX编程艺术》里面阐述的非常到位。不得不承认这是一个很接近于银弹的子弹。可惜,在应用的足够广泛时,类似于SSL心脏出血的弊端还是不可能解决,而且问题的发生或许更加隐蔽,就好比中国铁道部的在线网络购票系统竟然能导致远在万里之外的某个技术网站宕机一样。

        神一般的存在,一般都有神一般的威力。能量的守恒定律告诉我们这个世界上没有能够省功的方式,我们只能在省力和省距之间做权衡。这大概也是所有的中间件厂商能用世界100强、500强等等这些牛逼的企业的使用率来绑架用户的原因吧,各中理由已非技术能够解答。可是真正的科技公司,甚至有了一定技术积累的商务公司又有那个会相信这种鬼话呢。

架构设计:Spring Cloud Alibaba之阿里云开源中间件概览及架构设计 分布式架构和云原生重塑了中间件的游戏规则,这给国内开发者提供了重新定义中间件的历史机遇。在分布式架构流行前,国外 IT 厂商引领着中间件市场的发展,且以闭源、重商业的服务形式为主;随着云计算和互联网的普及,阿里将 RPC 框架、消息队列、服务发现、配置中心、分布式事务、限流降级等核心应用中间件技术对外开源,加速了分布式架构在国内的落地,也使得开发者在 Spring 技术栈以外多了一种选择。而云原生则实现了中间件以 BaaS 或 SaaS 的形态出现,解决了分布式应用架构落地后,中间件在容量管理、交付、运维、 阅读详情

相关推荐

C++游戏开发实战:从零构建局域网联机对战系统(附完整代码解析)

本文详细介绍了如何使用C++开发局域网联机对战游戏系统,涵盖从环境搭建到实战代码解析的全过程。重点讲解了Winsock库的应用、Socket通信原理、服务端与客户端开发技巧,以及性能优化和安全防护方案,帮助开发者快速掌握C++游戏开发的核心技术。

weixin_42524945的博客 445

c# 中间件简说

中间件是一种装配到应用管道以处理请求和响应的软件。是介于request与response处理过程之间的一个插件(一道处理过程),相对比较轻量级,并且在全局上会影响到request对象和response对象的属性。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。每个组件:1、选择是否将请求传递到管道中的下一个组件。2、可在管道中的下一个组件前后执行工作。多个中间件时,中间件请求和响应的中间件顺序相反。

chihen的专栏 2576

揭秘 | 顶刊论文插图中的高级配色方案(附RGB/HEX码解析)

本文揭秘了顶级期刊如《Nature》《Science》插图的高级配色方案,详细解析了RGB/HEX码的应用技巧。从双色配色的黄金组合到复杂数据可视化的多色解决方案,提供了实用的配色法则和跨平台一致性建议,帮助科研人员提升图表专业度和视觉传达效果。

weixin_28523493的博客 987

消息中间件概述

消息中间件是基于**队列**与**消息**传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。

qq_39280718的博客 1526

用Python+ArcGIS分析厦门共享单车数据:5分钟搞定订单时长与距离分布的可视化

本文详细介绍了如何利用Python和ArcGIS Pro 3.x快速分析厦门共享单车数据,实现订单时长与距离分布的可视化。通过数据清洗、预处理和高级可视化技巧,揭示用户行为特征,为运营优化提供数据支持。文章还提供了环境配置、代码示例和业务洞察,帮助开发者高效完成数据分析任务。

weixin_28327051的博客 338

Virtualbox “Kernel driver not installed (rc=-1908)”问题全面解析与修复指南

本文全面解析了Virtualbox出现'Kernel driver not installed (rc=-1908)'错误的原因及修复方法。详细介绍了如何通过重新安装virtualbox-dkms、处理Secure Boot特殊情况等步骤解决该问题,并提供了预防措施与最佳实践,帮助用户避免类似错误再次发生。

weixin_30352645的博客 530

一个C#开发的非常实用的缓存中间件

在.Net支持缓存方式,也是非常多,还有其他中间件比如Redis、Memcache,每一种缓存使用方法、接口都不一样,如果我们需要改变缓存策略的时候,就需要修改代码。提供了统一的缓存接口,方便项目改变缓存策略时,不需要大量的修改代码。而且项目还提供了很多功能,例如缓存同步、并发更新、序列化、事件、性能计数器。3、支持缓存类别:MemoryCache、Redis 、Memcached 、Couchbase、System.Web.Caching。今天给大家推荐一个C#开发的非常实用的缓存中间件,支持各种缓存。

成长的足迹 1839

双层优化入门(1)—基本原理与求解方法(附matlab代码)

双层优化问题(Bilevel Programming Problems),也被称为双层规划,最早由Stackelberg与1934年在经济学相关研究中提出,因此也被称为Stackelberg问题。双层规划问题一般具有层次性、独立性、冲突性、优先性和自主性等特点。 本文介绍了双层优化的原理与求解方法,并提供了相应的matlab代码供参考学习。

配电网和matlab的博客 5万+

C# 面试问题高级:056 - 什么是中间件 ?

中间件的核心作用:中间件是ASP.NET Core中处理HTTP请求和响应的关键组件,能够灵活地定制请求处理流程。中间件的特点:中间件具有灵活性、扩展性和可插拔性,适合构建模块化和高性能的应用程序。实际应用场景:中间件广泛应用于日志记录、异常处理、静态文件服务和用户认证等领域,能够显著提升开发效率和代码质量。

caifox的博客 1448

告别音质玄学:实测ACM8625S搭配杰理AC695x,如何通过寄存器精准调出好声音

第一次听到ACM8625S驱动音箱发出的声音时,我有些失望——这个被厂商宣传为"高保真数字功放"的芯片,默认配置下的表现甚至不如一些廉价模拟功放。经过两周的反复调试,最终配置使这款售价不到200元的音箱达到了接近专业监听设备的音质水平。特别是在鼓点和电吉他表现上,既保持了足够的冲击力,又不会掩盖人声细节。例如,当频率响应曲线在10kHz有+2dB提升时,多数评测者认为听感最佳,尽管这会使THD略微增加0.05%。虽然厂商提供的配置工具能快速生成基础代码,但想要获得最佳音效还需要手动优化。

weixin_29655587的博客 355

AD9613操作控制

输出250M时钟给AD9613,过FPGA ILA逻辑分析仪将AD9613采集的两个通道ADC数据250M数据显示出来。其中AD9613输出的是LVDS数据,通过select IO核转为并行数据。 一,搜索IP核:selectIO interface wizad ,并双击配置 配置为input,DDR模式,数据位宽为12bit,IO类型为差分,这里配置的是12对数据差分对。然后配置外部差分时钟。 将tap setting 设置为13,将时钟的边沿对准数据的中间,以免数据出错 二,

wangjie36的博客 4048

Apache Camel

Camel 是一个开源的集成框架,能够让开发者快速、轻松地整合/集成不同的应用/系统,并作为中间件在各种系统之间消费或生产数据。之所以Camel能在多种技术栈的系统之间快速集成,打通信息流,那是因为其拥有一个丰富的组件库,包含超过320个组件(核心和非核心的组件)。组件就像一个插头,允许系统连接到外部系统,比如邮箱、磁盘、FTP服务等等。这样通过组件可用于解决简单的消息传递和数据传输问题,而且还可以提供数据安全性,不需要开发者在系统架构的基础设施层反复地造轮子。

qq_31856061的博客 2055

Qt EGLFS 图形后端详解

EGLFS (EGL Full Screen) 是Qt框架在嵌入式Linux系统中的高性能图形显示后端,它提供了直接基于EGL和OpenGL ES的硬件加速渲染解决方案。

浩瀚之水的专栏 513

中间件助力多智能体协作:架构设计与实践

【摘要】本文深入探讨了中间件在多智能体系统中的核心作用与架构设计,分析了其协作机制与行业实践,并结合天枢InterGPT等案例分享最佳实践,展望未来技术趋势。

欢迎来到运通链达的官方博客!我们深度探讨人工智能技术与应用,贯彻科技向善理念,推动科技进步与社会福祉和谐共生。 853

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

常用中间件

中间件 什么是中间件 中间件(Middleware)顾名思义是系统软件和用户软件之间连接的软件,以便于软件各部分之间的沟通,特别是应用软件对于系统软件的集中逻辑,是一种独立的系统或者服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件在客户端服务器的操作系统、网络和数据库之上,管理计算机资源和网络通信。总的作用是为处于自己上层的应用软件提供运行和开发的环境,帮助用户灵活、高效的开发和集成复杂的应用软件 关于中间件,我们可以理解为:是一类能够为一种或者多种应用程序合作互通、资源共享同时还能够

qq_45796208的博客 3760

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

AI Agent中间件架构设计与治理实践

中间件作为系统架构中的核心组件,通过拦截器模式实现横切关注点的统一治理。其洋葱模型执行机制允许在请求/响应生命周期中插入处理逻辑,在AI Agent领域尤其适用于工具权限管理、上下文记忆维护等场景。本文以DeepAgents框架为例,详解三段式中间件管道设计(Base-User-Tail分段)如何解决工具注册与过滤的时序依赖问题,并展示FilesystemMiddleware实现动态工具暴露与路径权限控制的具体实践。这种架构模式显著提升了Agent系统的可维护性和扩展性,适用于需要复杂业务治理的智能体开发场

weixin_30411819的博客 965

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

中间件架构的优雅实现(9017)

Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, TCP communication, and redirection features, making it ideal for building modern

m0_52796585的博客 973

详谈软件架构设计(四)之构件与中间件技术以及Web架构设计

题外话:本篇文章讲的是软件架构设计中的最后一章节,构件与中间件技术以及Web架构设计等内容。 一:构件与中间件技术 1、构建的定义: 定义1:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装。 定义2:构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能。 ......

华星详谈的博客 4597

中间件架构的优雅实现(1626)

Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, TCP communication, and redirection features, making it ideal for building modern

m0_52796585的博客 1081

中间件架构的优雅实现(5681)

Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, TCP communication, and redirection features, making it ideal for building modern

m0_52796585的博客 1401

中间件架构的优雅实现(8501)

Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, TCP communication, and redirection features, making it ideal for building modern

m0_52796585的博客 803

架构设计到底是什么?

架构设计,是中高级研发工程师逃不开的一环,也是成为架构师的关键。那到底什么是架构设计。从概念来说比较宽泛,也不容易理解,这时候可以转换方向利用分类思想,架构设计包括哪些主要内容呢不断堆积调查研究材料,不断丰富我们的主题。以上6个模块就比较完整地说明架构设计是什么?

善守者 992

中间件架构的优雅实现(4568)

Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, TCP communication, and redirection features, making it ideal for building modern

m0_52796585的博客 854

RocketMQ - 消息中间件架构设计:构建高可用消息平台

RocketMQ高可用消息平台架构设计摘要:本文深入探讨基于Apache RocketMQ构建高可用消息中间件的关键技术与实践。从现代分布式系统面临的并发、解耦等挑战出发,分析了高可用消息平台的核心价值。详细解析了RocketMQ的核心组件(NameServer、Broker、Producer/Consumer)及其协作机制,重点阐述了主从复制、消息持久化等保障高可用性的关键技术。通过配置示例展示了Master-Slave部署方案和存储策略优化,为构建稳定可靠的分布式消息系统提供了完整解决方案。文章兼顾理论

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

中间件架构的优雅实现(2122)

Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, TCP communication, and redirection features, making it ideal for building modern

m0_52796585的博客 642

中间件架构的优雅实现(0943)

Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, TCP communication, and redirection features, making it ideal for building modern

m0_52796585的博客 642
上一篇: 架构设计—数据库的性能与建模
下一篇: 架构设计—又见架构之SOA
FlyAnyWhere
博客等级 码龄24年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值