分布式全局唯一ID生成方案
一、相关背景分布式架构下,唯一序列号生成是我们在设计一个系统,尤其是数据库使用分库分表的时候常常会遇见的问题。当分成若干个sharding表后,如何能够快速拿到一个唯一序列号,是经常遇到的问题。在携程账号数据库迁移MySQL过程中,我们对用户ID的生成方案进行了新的设计,要求能够支撑携程现有的新用户注册体量。本文通过携程用户ID生成器的实现,希望能够对大家设计分库分表的唯一id有一些新的思路。二、... …… 阅读全文
一、相关背景分布式架构下,唯一序列号生成是我们在设计一个系统,尤其是数据库使用分库分表的时候常常会遇见的问题。当分成若干个sharding表后,如何能够快速拿到一个唯一序列号,是经常遇到的问题。在携程账号数据库迁移MySQL过程中,我们对用户ID的生成方案进行了新的设计,要求能够支撑携程现有的新用户注册体量。本文通过携程用户ID生成器的实现,希望能够对大家设计分库分表的唯一id有一些新的思路。二、... …… 阅读全文
application 应用程式 应用、应用程序application framework 应用程式框架、应用框架 应用程序框架architecture 架构、系统架构 体系结构argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量array 阵列 数组arrow operator arrow(箭头)运算子 箭头操作符assembly 装配件a... …… 阅读全文
今天要谈的主题是关于求职,求职是在每个技术人员的生涯中都要经历多次。对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦。在跳槽季来临之前,特地做这个系列的文章,一方面帮助自己巩固下基础,另一方面也希望帮助想要换工作的朋友。相关概念面向对象的三个特征封装,继承,多态,这个应该是人人皆知,有时候也会加上抽象。多态的好处允许... …… 阅读全文
传统Spring+Quartz实现的定时器一般都是通过配置文件中配置的,这就意味着如果我们修改了定时任务的时间,就得重新启动一下Tomcat,而且每次新建一个任务就得在spring中添加相关的配置信息,非常麻烦。基于上面的问题,这边给大家介绍一下Spring+Quartz如何实现动态定时器,如何避免创建多个定时任务的配置文件。1.在开始之前,我们需求引入Quartz相关的依赖,pom.xml文件如... …… 阅读全文
一、定义1.悲观锁:即很悲观,每次拿数据的时候都觉得数据会被人更改,所以拿数据的时候就把这条记录锁掉,这样别人就没法改这条数据了,一直到你的锁释放。2.乐观锁:即很乐观,查询数据的时候总觉得不会有人更改数据,等到更新的时候再判断这个数据有没有被人更改,有人更改了则本次更新失败。二、实现过程2.悲观锁:悲观锁的实现采用的数据库内部的锁机制,一个典型的倚赖数据库的悲观锁调用:select * from... …… 阅读全文
一、使用分布式锁要满足的几个条件:系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL)同步访问(即有很多个进程同事访问同一个共享资源。没有同步访问,谁管你资源竞争不竞争)二、应用的场景例子 管理后台的部署架构(多台tomcat服务器+redis【多台... …… 阅读全文
本篇博客的由来,之前我们学习大话设计,就了解了代理模式,但为什么还要说呢?原因:1.通过DRP这个项目,了解到了动态代理,认识到我们之前一直使用的都是静态代理,那么动态代理又有什么好处呢?它们二者的区别是什么呢?2.通过学习动态代理了解到动态代理是一种符合AOP设计思想的技术,那么什么又是AOP?下面是我对它们的理解!代理Proxy:Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接... …… 阅读全文
1.此篇文章简介说在前面的话朋友,你经历过部署好的服务突然内存溢出吗?你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗?你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗?我知道,你有过!但是我还是要来说说我的故事..................背景:有一个项目做一个系统,分客户端和服务端,客户端用c++写的,用来收集信息然后传给服务端(客户端的数量还是比较多的,正常的有几千个)... …… 阅读全文