之前找工作之后,主管打电话问将来希望做哪个方向的技术,中间件还是linux还是云计算之类的,没头绪。发现自己其实对于这些方向的具体内容倒不明确了。其他的还好说,之前也有了解到淘宝中间件团队这样的,觉得很NB,但是对于这个中间件到底是什么,似乎没有深究。元旦正好空闲,查阅资料研究研究。
定义
维基百科定义:
提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务、面向服务的体系结构等中应用比较广泛。如数据库、Apache的Tomcat,IBM公司的WebSphere,BEA公司的WebLogic[[应用服务器],东方通公司的Tong系列中间件,以及Kingdee公司的等都属于中间件。
简单归纳:
业务应用 - 中间件 - 基础资源
- 中间件处于两者中间的的位置,封装基础资源,向上层提供更完善的功能。
- 基础资源包括硬的资源:如CPU、存储(分布式)、网络;我个人认为也包括进程、线程、消息队列、数据库这种软性资源,中间件对这些资源做了封装处理。
作用
- 封装
- 整合
- 屏蔽
- 容错
我个人归纳为这四个主要功能。封装和整合的是基础资源,使得难用的基础资源更便于使用,而不用考虑细节。(调用顺序、分布式、配置、初始化属性等等)。屏蔽的是底层细节,同时也屏蔽底层的差异(例如,JVM这种本质意义上其实也可算作中间件,通过JVM屏蔽不同系统的差异,从而能够无差异运行Java程序)。容错,则是中间件的另一个重要作用,保证上层无论如何调用,都会得到相应的处理,而不会将错误传递到底层去或直接消失。
常见种类:
- 分布式调用RPC:
- 消息队列
- 事务处理
- 数据库组件
- 安全组件
- 并发组件
- 应用容器组件
- 日志组件:Apache Kafaka
- 监控组件:Zookkeeper, Mesos,
阿里巴巴中间件的几个案例(本节来自阿里巴巴中间件团队博客)
- Diamond: 软负载配置中心,用于存储静态配置,并能够提供配置变更动态推送功能,结构简单,超高可用性。在全网被使用于存储不经常发生变化的配置信息。
- Notify, Meta: 消息中间件
- HSF: 阿里分布式服务框架,统一整个集团rpc的调用,包括服务方式的统一调用,软负载,服务治理等,提供一套简单方便,高性能的分布式服务框架。
- eagleeye: 淘宝分布式跟踪系统,该系统实现基于单链路的实时监控,系统依赖,性能调优,风险控制等
- Pandora: 淘宝隔离容器,该系统主要解决大规模富二方包升级,二方包隔离,二方包监控等问题。
- TDDL: 通用数据访问层,部署在客户端的jar包,用于将用户的SQL路由到指定的数据库中。目前有1000+应用在使用
- 精卫: 通用数据总线,用于将数据从一个数据节点迁移到其他一个或多个数据节点中,目前支持mysql,oracle,hbase等。目前有100+应用在使用
- 愚公: 数据自动迁移引擎,海量数据自动运维工具,可用于对用户无影响的自动扩容和缩容,数据平滑迁移,以及异构数据源迁移,目前已经完成了214次业务迁移或扩容。
- NewSQL: NewSQL系统,可以将SQL运行于传统MYSQL/Oracle关系数据库,也可以支持NoSQL数据库如bdb , hbase等。 可以实现其中的跨机合并和跨机交操作等复杂关系操作。
- CSP2.0: 持续稳定性平台帮助阿里系统保障高可用性,包含线上压测、容量规划、依赖治理、限流降级、监控报警、问题定位等模块。
- Hotspot: 性能分析平台通过对基础软件、服务端、前端加载、网络、CDN等方面的性能分析,来帮助阿里系统提升吞吐量、降低延迟时间、节约成本。
- TProfiler: TProfiler是可以在生产环境长期使用的性能分析工具,通过在Java层面记录代码执行热点、对象创建热点等数据,帮助系统定位性能瓶颈。
参考
https://zh.wikipedia.org/wiki/%E4%B8%AD%E9%97%B4%E4%BB%B6
阿里巴巴中间件团队博客