当前位置: 首页 > news >正文

证书查询官网全能优化大师

证书查询官网,全能优化大师,网站备案本人承诺,wordpress不能显示分类页mall4cloud-leaf 基于美团leaf的生成id服务 分布式id介绍具体代码及使用项目中的生成id模式具体代码分布式id生成使用 分布式id介绍 分布式ID#xff08;Distributed ID#xff09;是在分布式计算环境中生成的唯一标识符或标识号。在分布式系统中#xff0c;通常需要唯一标… mall4cloud-leaf 基于美团leaf的生成id服务 分布式id介绍具体代码及使用项目中的生成id模式具体代码分布式id生成使用 分布式id介绍 分布式IDDistributed ID是在分布式计算环境中生成的唯一标识符或标识号。在分布式系统中通常需要唯一标识不同的实体或数据以确保数据的一致性、唯一性和跟踪性。分布式ID的生成可以避免多个节点或服务生成相同的标识符从而避免数据冲突和不一致性。 分布式ID的好处包括 唯一性分布式ID是全局唯一的无论在系统中的哪个节点生成都不会与其他节点的ID冲突。 数据一致性分布式ID可用于唯一标识数据库中的记录确保不同节点的数据操作不会导致冲突或数据不一致性。 分布式系统中的跟踪通过在分布式系统中的操作和事件中使用唯一ID可以轻松跟踪和审计系统中发生的事情有助于故障排除和性能分析。 降低数据库压力分布式ID生成可以减少对数据库的写入压力因为不需要立即查询数据库以获取唯一ID。这有助于提高性能。 去中心化使用分布式ID生成服务而不是依赖于中心化的ID生成器有助于降低单点故障的风险。 提高性能分布式ID生成服务通常经过优化可以提供高性能的ID生成适用于高吞吐量的应用程序。通过使用Leaf服务生成唯一ID可以减少对数据库的写入请求因为不再需要插入数据后立即查询以获取生成的ID。 美团Leaf的实现方式可以基于Twitter Snowflake算法它的主要组成部分包括 时间戳Leaf服务使用时间戳来确保生成的ID在一定时间内是唯一的。时间戳通常占据了ID的高位以确保生成的ID是递增的。 数据中心ID数据中心ID是一个数字用于标识不同的数据中心。在大型分布式系统中可能存在多个数据中心每个数据中心中的节点需要具有唯一的数据中心ID。这有助于确保生成的ID不会与其他数据中心中的ID冲突。通常数据中心ID是分配给数据中心的唯一标识符如数字1、2、3等。 机器节点ID机器节点ID用于在同一数据中心内标识不同的节点或服务器。每个节点都应具有唯一的机器节点ID以防止在同一数据中心内的不同节点生成ID时出现冲突。通常机器节点ID是分配给机器或节点的唯一标识符 序列号序列号部分用于解决同一毫秒内的ID冲突。当在同一毫秒内多次请求ID时序列号递增以确保ID的唯一性。 也可以基于数据库方式生成项目中使用的是该方式 具体代码及使用 项目中的生成id模式 在本项目中使用的是Leaf-segment号段模式该模式是对直接用数据库自增ID充当分布式ID的一种优化减少对数据库的频率操作。相当于从数据库批量的获取自增ID每次从数据库取出一个号段范围例如 (1,1000] 代表1000个ID业务服务将号段在本地生成1~1000的自增ID并加载到内存。 由于号段模式依赖于数据库表我们先看一下相关的数据库表 biz_tag针对不同业务需求用biz_tag字段来隔离如果以后需要扩容时只需对biz_tag分库分表即可 max_id当前业务号段的最大值用于计算下一个号段 step步长也就是每次获取ID的数量 random_step: 每次getid时随机增加的长度 之后在nacos的配置只需连接数据库即可。 具体代码 在代码中leaf作为一个独立的服务获取id时都是通过fegin调用的。所以主要代码如下 FeignClient(value mall4cloud-leaf,contextId segment) public interface SegmentFeignClient {/*** 获取id* param key* return*/GetMapping(value FeignInsideAuthConfig.FEIGN_INSIDE_URL_PREFIX /insider/segment)ServerResponseEntityLong getSegmentId(RequestParam(key) String key);}RestController public class SegmentFeignController implements SegmentFeignClient {private static final Logger logger LoggerFactory.getLogger(SegmentFeignController.class);Autowiredprivate SegmentService segmentService;Overridepublic ServerResponseEntityLong getSegmentId(String key) {//通过不同服务的key获取分布式idreturn ServerResponseEntity.success(get(key, segmentService.getId(key)));}private Long get(String key, Result id) {Result result;if (key null || key.isEmpty()) {throw new NoKeyException();}result id;if (Objects.equals(result.getStatus(), Status.EXCEPTION)) {throw new LeafServerException(result.toString());}return result.getId();} }封装的fegin方法中主要就是通过key去获取id这个key就是表中的biz_tag。下面看一下leaf的具体代码。 Override public Result get(final String key) {// 检查初始化是否成功if (!initOk) {// 如果初始化失败返回异常结果return new Result(EXCEPTION_ID_IDCACHE_INIT_FALSE, Status.EXCEPTION);}// 从缓存中获取名为 key 的SegmentBuffer对象SegmentBuffer buffer cache.get(key);if (buffer ! null) {// 如果找到了缓存中的SegmentBufferif (buffer.isInitOk()) {// 检查SegmentBuffer是否已成功初始化synchronized (buffer) {// 同步块确保线程安全if (buffer.isInitOk()) {// 再次检查SegmentBuffer是否已成功初始化try {// 尝试从数据库中更新SegmentBufferupdateSegmentFromDb(key, buffer.getCurrent());logger.info(Init buffer. Update leafkey {} {} from db, key, buffer.getCurrent());// 更新成功后将SegmentBuffer的初始化标志设置为truebuffer.setInitOk(true);}catch (Exception e) {// 如果更新出现异常记录警告日志logger.warn(Init buffer {} exception, buffer.getCurrent(), e);}}}}// 从SegmentBuffer中获取ID并返回return getIdFromSegmentBuffer(cache.get(key));}// 如果未找到名为 key 的SegmentBuffer返回异常结果return new Result(EXCEPTION_ID_KEY_NOT_EXISTS, Status.EXCEPTION); } 这段代码来自类SegmentIDGenImpl后面我们加一篇对于leaf的源码分析文章。 分布式id生成使用 我们请求一个注册用户的接口之后通过fegin调用leaf接口产生用户id。 可以看到产生的id是106806。 之后向下请求它产生的id是上一个id增加1~10之间的随机数产生的数字和数据表中的random_step字段对应。
http://wiki.neutronadmin.com/news/111458/

相关文章:

  • 凡科 360免费建站首页html模板
  • c 网站开发项目北京工商网上登记申请平台
  • 网站设计一般多长时间静态网页模板简约
  • 域名 网址 网站名称成都网站建设 3e
  • 南昌制作网站的公司吗wordpress 调用GPS
  • 宁波企业网站搭建图片公司网站制作内容
  • 6入空间网站免费观看手机模板制作软件app
  • 怎么做二手房网站美的公司网站建设的目的
  • 遂宁商城网站建设报价专业网站制作公司招聘
  • 学校联系我们网站制作哪个网站名片做的号
  • 做ppt图片用的网站上海做网站的公
  • 网站开发自学资料上海网站建设领导品牌
  • 电子商务网站建设报价阿里巴巴企业邮箱登录入口
  • 深圳网站建设龙华1有免费建网站
  • 成都网站建设哪家好文章公众号如何开通
  • 广东网站开发公司电话建设标准 免费下载网站
  • 网站建设属那种营业广告sdk接入
  • 有做外贸的平台网站吗网站首页做跳转
  • 网站站欣赏建站系统加盟
  • ps怎么做电商网站wordpress添加qq聊天
  • 定制网站建设公司价格ps怎样做网站详情页
  • 微网站 开发仿淘宝网站
  • 对网站政务建设的建议服装设计学什么
  • p2p网站建设应注意的问题网站开发公司专业
  • 摄影网站的模板温州网站建设公司公司哪家好
  • 绵阳网站建设网站建设设计在线官网作品欣赏
  • 上线了 建立网站想学企业管理课程
  • 手机网站cms在哪可以建一个网站
  • 北京做电子系统网站的公司免费素材app
  • 个人网站取名哪家网站专门做折扣销售