首页
/ CosId:通用、灵活、高性能的分布式ID生成器使用教程

CosId:通用、灵活、高性能的分布式ID生成器使用教程

2026-01-18 10:35:24作者:傅爽业Veleda

项目介绍

CosId 是一个旨在提供通用、灵活且高性能的分布式ID生成解决方案的开源项目。它设计了多种分布式ID算法的支持,包括SnowflakeId、SegmentId以及SegmentChainId等,并兼容不同的分发机制,如Redis和JDBC,以便适应多样化的业务需求。CosId允许通过简单配置来切换不同的算法实现,从而更好地定制化以满足特定场景要求。其性能表现优异,特别是在SegmentChainId模式下,TPS性能接近AtomicLong,达到了约12743W+/s。项目遵循Apache 2.0许可。


项目快速启动

要快速开始使用CosId,首先你需要将其添加到你的项目依赖中。这里以Maven为例,添加CosId依赖(假设使用的版本是最新发布的版本替换$cosidVersion$):

<dependency>
    <groupId>me.ahoo.cosid</groupId>
    <artifactId*cosid-spring-boot-starter*</artifactId>
    <version>$cosidVersion$</version>
</dependency>

然后,在Spring Boot应用中启用CosId:

@SpringBootApplication
@EnableCosId
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

基础配置示例,例如使用SnowflakeId:

cosid:
  snowflake:
    zone-id: 0 # 数据中心ID
    worker-id: 1 # 工作节点ID

如果你想立即获取一个ID:

@Autowired
private IdGenerator idGenerator;

@Service
public class YourService {
    public Long generateId() {
        return idGenerator.nextId();
    }
}

应用案例和最佳实践

使用场景一:业务区分ID生成

对于不同的业务服务,推荐使用不同的IdGenerator。通过IdGeneratorProvider管理多个ID生成器,通过业务名称获取对应的ID生成器:

@IdGeneratorProvider
public interface MyIdGenerators {
    String BIZ_A = "bizA";
    
    @IdGenerator(value = BIZ_A)
    IdGenerator idGenerator BizA();
}

@Service
public class BusinessService {
    @Autowired
    private MyIdGenerators idGenerators;
    
    public Long generateBizAId() {
        return idGenerators.idGenerator(BIZ_A).nextId();
    }
}

高可用与性能最佳实践

  • 利用Redis或JDBC进行SegmentId的分布式存储,确保高可用性
  • 配置合适的worker-id避免冲突,尤其是在分布式环境
  • 开启自动初始化CosId表,简化数据库设置过程,示例配置:
    cosid:
      segment:
        distributor:
          type: jdbc
          jdbc:
            enable-auto-init-cosid-table: true
    

典型生态项目

CosId不仅独立工作,还融入了其他技术栈,例如:

  • CosId-MyBatis: 提供MyBatis插件,使得实体类中的ID可以直接由CosId生成。

    示例使用注解在实体类的ID字段上:

    @Entity
    public class User {
        @CosId(value = "userGen")
        private Long id;
        // 省略getters和setters
    }
    
  • CoSkyCoSecCoCache等:作为微服务治理体系的一部分,CosId与其他组件协同工作,支撑大规模分布式系统的需求,确保ID生成的一致性和效率。


通过以上步骤,你可以快速集成并开始使用CosId,进一步探索分布式ID生成的高效与灵活性。不断实践和调整配置,可以使CosId在你的项目中发挥最大效能。

登录后查看全文
热门项目推荐
相关项目推荐