第一次发帖,发现还需要做一个发帖小测试,满有意思的!好了进入正题!
刚才看http://www.iteye.com/topic/1114846 做了一个循环流水号的实现,实际上我最近也遇到的关于流水号的需求,觉得他的实现太过于简单.这里说说我的实现想法,请大家点评,欢迎拍砖!
首先: 流水号通常是唯一的如果重启后如何保证流程号的连续性.
其次: 没有考虑集群环境,在多机部署的情况下没有同步流水号会出来流水号重复现象.
再次: 高并发访问,既是我们通过数据库来记录流程号,如用Oracle的sequence频繁的数据访问会造出很大的IO效率问题,同时事务问题也不好控制.
这里我就想了一个实现是这样的.
首要解决的事高并发和重启后保证流水号不连续性问题.
我们在数据库中存放流水号的生成规则如(流水号格式,流水号缓存大小,流水号重置规则),以及当前流水号的最大值.
采用单实例每一类流水号生成唯一的流水号提供服务类.按照流水号缓存大小一次性加载需要缓存的流水号到内存中.
仅当消费的流水号超过了内存中最大的缓存数时,才向数据库中写入前流水号的最大值.并且再次一次性生成缓存值大小的流水号到内存中或者当服务器关闭时也写入写入前流水号的最大值.
这样做的目的仅仅是解决了高并发访问效率问题,减少了数据读写的操作,如当我设置缓存值为500时,只有当缓存中所有的流水都被消费完了,才会一次性再向数据库申请500个流水号.
但是这样做还不能解决集群问题,由于集群下每个JVM虚拟机拥有自己独立的实例,那么单实例每一类流水号生成唯一的流水号提供服务类互相之间还要解决同步问题,可以通用ehcache的集群同步机制, 将流水号服务类交给ehcache管理.
保证在各个集群下不同JVM拥有相同的流水号提供服务类.解决流水号重复现象.
分享到:
相关推荐
在IT行业中,集群环境流水号设计是一个至关重要的环节,特别是在分布式系统中,它涉及到数据的一致性和业务的正确性。本文将围绕这个主题展开,详细解释集群环境下如何设计高效的流水号生成策略,以及如何通过源码...
单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在单例模式中,类的构造函数是私有的,防止外部直接创建对象,而是通过静态方法获取该类的唯一实例。单例模式的唯一性通常是在进程范围内,...
1. 高并发网站架构:高并发网站指的是能够处理大量同时访问的网站,这种网站架构设计是为了应对大量用户同时请求数据或服务时的性能和稳定性需求。高并发网站通常采用多种技术手段,如负载均衡、分布式部署、缓存...
在构建高并发、高可用的网站架构时,面临的关键挑战是如何处理大量的用户访问和并发请求。以下是一些针对高并发设计和集群设计的核心知识点: 1. **HTML 静态化**: - 静态HTML页面是性能最优的选择,因为它减少了...
在构建企业生产环境中的50-100台规模高并发网站集群架构时,我们需要考虑多个关键因素,包括系统的稳定性、可扩展性、安全性以及性能优化。以下将详细阐述搭建过程中涉及的重要知识点。 1. **集群的需求**: - 高...
在IT行业中,数据库高并发集群是应对大规模用户访问...以上是“数据库高并发集群笔记”的主要知识点,通过理解并掌握这些内容,开发者可以更好地设计和实施高并发环境下的数据库解决方案,为用户提供稳定、高效的服务。
总结起来,这个基于Java应用的高并发高可用集群服务器设计充分利用了现有开源技术,通过精心规划和组件选择,实现了高效、稳定的服务运行环境。监控、备份、故障转移等机制确保了系统的可靠性和业务连续性,适应了...
Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持10万并发,已用于生产环境 技术体系:(使用 netty 实现通信及协议解析,使用 nutzboot 提供依赖注入及属性配置,使用 redis 实现消息缓存,集群,使用 ...
【基于Node.js的高并发电商购物系统设计与实现】 在当今互联网时代,电子商务网站面临着日益增长的并发访问压力,特别是由于直播营销和各种电商节日活动的兴起,这使得企业对高性能、高并发的系统需求更加迫切。...
kettle集群(cluster)在多个服务器上并发执行是指通过将kettle部署在多个服务器上,实现分布式数据处理和排序的目的。这种方法可以大大提高数据处理的效率和速度,特别是在大数据量的情况下。 以下是kettle集群在...
Redis,作为一个高性能的键值数据存储系统,常被用作数据库、缓存和消息代理,其高可用性和高并发特性使其在分布式系统中备受青睐。本篇将详细讲解Redis集群如何实现这两个关键特性。 首先,我们要理解Redis的集群...
本项目实战教程涵盖了高并发、集群以及分布式系统架构等关键知识点,旨在帮助Java架构师提升技能,实现高性能、高可用和可扩展的电商系统。 1. **Java基础与高级特性** - Java的基础语法、面向对象编程、异常处理...
本教程将探讨如何在Windows环境下,利用Nginx作为反向代理和负载均衡器,与Tomcat应用服务器配合,搭建一个负载均衡和集群环境。这种配置能够提升系统的稳定性和处理能力,确保即使在服务器压力大的情况下,也能为...
Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持10万并发(有群友实现了130万在线)。使用 netty 实现通信及协议解析,使用 nutzboot 提供依赖注入及属性配置,使用 redis 实现消息缓存,集群,使用 kafka ...
标题中的“NETTY+ACTIVITYMQ实现高用户并发”表明我们正在探讨如何使用Netty和ActiveMQ结合来处理大量并发用户请求。Netty是一个高性能、异步事件驱动的网络应用程序框架,而ActiveMQ是Apache出品的一款开源消息...
在本实战应用中,我们将深入探讨如何构建一个企业级的秒杀系统,特别是在应对高并发场景时,如何利用Redis集群来优化性能。 首先,让我们了解一下秒杀系统的挑战。在秒杀活动中,短时间内会有大量用户涌入,对系统...
6. **考虑高可用与数据持久化**:在生产环境中,Redis可能需要配置为集群模式以保证高可用性,同时为了防止数据丢失,可以开启Redis的数据持久化。 通过以上步骤,我们可以利用Spring Boot和Redis构建一个集群式...
5. **事务与重试机制**:在实际应用中,可能会遇到并发问题,例如多个线程同时尝试获取锁。这时,可以引入重试机制,确保在一定次数内获取到锁。同时,配合Spring的事务管理,确保在发生异常时能够回滚操作,释放已...