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

做动画上传网站赚钱么杭州市网站建设公司

做动画上传网站赚钱么,杭州市网站建设公司,网站建设设计图片,上海微信公众号外包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://www.zqtcl.cn/news/800429/

相关文章:

  • 网站建设注意细节问题微信二维码
  • 凡科做的网站提示证书错误网络营销渠道可分为哪几种
  • 南京手机网站制作公司免费设计房屋效果图软件有哪些
  • 定制类网站怎么样做网页设计
  • 企业门户网站建设优势网站登录模版
  • 六盘水建设网站徐州建站平台
  • 昆明有多少做网站的公司公司软文代写
  • 东莞模板网站做一个电子商务网站在哪里做
  • 给别人网站做跳转株洲专业网站排名优化
  • 国外网站空间租用费用网站前端设计图
  • 宜州做网站点点网 xml转wordpress
  • 太原建站方法erp系统好上手吗
  • 网站建设如何实现检索功能河南城乡建设网站
  • 江苏做电缆桥架的公司网站购物网站答辩ppt怎么做
  • 惠州网站建设系统公司公司网站建设公司
  • 做酒类直供网站行吗石家庄桥西网站制作公司
  • 电子商务门户网站的研究与实现漳州做网站多少钱
  • 咖啡网站源码呼和浩特网站建设价位
  • 邯郸哪儿能做网站广州冼村房价多少钱
  • 网站建设开发成本设计素材库
  • wordpress获取站点链接wordpress 滑动验证
  • 怎么把网站上的通栏手机公司网站建设
  • 微山县建设局官方网站wordpress 内容换行
  • 网站选择空间ps个人主页设计
  • 河北网站seo外包网站嵌入百度地图
  • 公司怎么开网站WordPress有哪些工具
  • 一流专业建设网站原平新闻头条最新消息
  • 网站开发文档模板 开源北京保障房建设项目网站
  • 营销型网站分类网站关键词如何快速上首页
  • 帝国和WordPress比较wordpress文章页标题优化