java开发中的各种中间件技术
1.什么是中间件
我们平时在应用开发中经常会遇到各种中间件的使用,现在我们经常听到的一句话是“面向消息队列编程”,其中消息队列就是一类中间件。对于初学者而言可能对“中间件”这个专有名词还不太了解。我这里先讲一下中间件出现的背景:
一个大型企业同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境。现在的问题是,如何把这些信息系统结合成一个有机地协同工作的整体,真正实现企业跨平台、分布式应用。这个时候中间件就出现了,中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。
2.中间件分类
中间件按功能分类:
序号 | 分类 |
---|
1 | RMI(Remote Method Invocations, 远程调用) | 2 | Load Balancing(负载均衡,将访问负荷分散到各个服务器中) | 3 | Transparent Fail-over(透明的故障切换) | 4 | Clustering(集群,用多个小的服务器代替大型机) | 5 | Back-end-Integration(后端集成,用现有的、新开发的系统如何去集成遗留的系统) | 6 | Transaction事务(全局/局部)全局事务(分布式事务)局部事务(在同一数据库联接内的事务) | 7 | Dynamic Redeployment(动态重新部署,在不停止原系统的情况下,部署新的系统) | 8 | System Management(系统管理) | 9 | Threading(多线程处理) | 10 | Message-oriented Middleware面向消息的中间件(异步的调用编程) | 11 | Component Life Cycle(组件的生命周期管理) | 12 | Resource pooling(资源池) | 13 | Security(安全) | 14 | Caching(缓存) |
3.在项目中什么时候使用中间件技术
在项目的架构和重构中,使用任何技术和架构的改变我们都需要谨慎斟酌和思考,因为任何技术的融入和变化都可能人员,技术,和成本的增加,中间件的技术一般现在一些互联网公司或者项目中使用比较多,如果你仅仅还只是一个初创公司建议还是使用单体架构,最多加个缓存中间件即可,不要盲目追求新或者所谓的高性能,而追求的背后一定是业务的驱动和项目的驱动,因为一旦追求就意味着你的学习成本,公司的人员结构以及服务器成本,维护和运维的成本都会增加,所以需要谨慎选择和考虑。
4.开发中常用的中间件
如下中间件在开发中经常使用
- 消息中间件 ActiveMQ
- 消息中间件 RabbitMQ
- 消息中间件 Kafaka
- 消息中间件 RocketMQ
- 负载均衡中间件(Nginx/Lvs)
- 缓存中间件(Memcache/Redis)
- 数据库中间件(ShardingJdbc/Mycat)
- 任务调度中间件(xxl-job)
|