专栏名称: macrozheng
专注Java技术分享,解析优质开源项目。涵盖SpringBoot、SpringCloud、Docker、K8S等实用技术,作者Github开源项目mall(50K+Star)。
今天看啥  ›  专栏  ›  macrozheng

美团二面:如何在10亿级别用户中检查用户名是否存在?

macrozheng  · 公众号  · 电商 互联网安全  · 2024-09-24 10:32
    

主要观点总结

该文章介绍了微服务项目学习中对于用户名唯一性验证的三种解决方案:数据库方案、缓存方案和布隆过滤器方案。文章详细描述了每种方案的实现原理、优缺点以及具体代码示例。

关键观点总结

关键观点1: 数据库方案

通过数据库查询来验证用户名的唯一性,但存在性能问题、数据库负载过高和可扩展性差等缺点。

关键观点2: 缓存方案(Redis缓存)

为了解决数据库调用性能问题,引入Redis缓存来缓存用户名,但存在内存占用过大的问题。

关键观点3: 布隆过滤器方案

布隆过滤器是一种用于快速检查元素是否存在于大型数据集中的数据结构,具有内存占用小、高效查找的优点,但存在误判率和不能删除元素的缺点。Redis支持布隆过滤器的数据结构。

关键观点4: 微服务实战项目mall-swarm介绍

介绍了Github上标星11K的微服务实战项目mall-swarm,包括整套视频教程的内容、架构以及应用布隆过滤器等技术的更多应用场景。


文章预览

微服务项目学习: cloud.macrozheng.com 前言 不知道大家有没有留意过,在使用一些app注册的时候,提示你用户名已经被占用了,需要更换一个,这是如何实现的呢?你可能想这不是很简单吗,去数据库里查一下有没有不就行了吗,那么假如用户数量很多,达到数亿级别呢,这又该如何是好? 数据库方案 第一种方案就是查数据库的方案,大家都能够想到,代码如下: public   class   UsernameUniquenessChecker   {      private   static   final  String DB_URL =  "jdbc:mysql://localhost:3306/your_database" ;      private   static   final  String DB_USER =  "your_username" ;      private   static   final  String DB_PASSWORD =  "your_password" ;      public   static   boolean   isUsernameUnique (String username)   {          try  (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) {          ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览