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

一级a做爰片免费的网站有吗电话销售如何快速吸引客户

一级a做爰片免费的网站有吗,电话销售如何快速吸引客户,浙江义乌网,北京建工集团有限公司官网文章目录 锁处理目的:考虑锁控制思路:生命周期接口并发控制解决方案:测试锁是否生效:模拟多线程并发场景的2种方式: 事务处理目的:考虑事务控制思路:解决方案: 总结 锁处理 目的&am…

文章目录

  • 锁处理
    • 目的:
    • 考虑锁控制思路:
    • 生命周期接口并发控制解决方案:
    • 测试锁是否生效:
      • 模拟多线程并发场景的2种方式:
  • 事务处理
    • 目的:
    • 考虑事务控制思路:
    • 解决方案:
  • 总结

锁处理

目的:

为了避免接口被并发访问,导致业务数据校验(是否正式已存在、是否审批中)被迫通过,导致创建多个流程单据去新增业务数据,造成正式业务数据重复;

*代表采用应用的方案。

应用分布式锁

考虑锁控制思路:

1.分析并发场景(相同应用、不同应用访问)、给出解决方案

如:客户上市接口

并发访问场景:

  1. 同一外部应用系统,同一个用户创建一个客户,连续快速点击2次(2个线程同时访问同一接口,数据已在审批中代码校验被迫通过)
    解决办法:clientID 外部应用标识

  2. 同一外部应用系统,不同用户同时创建同一个客户(2个线程同时访问同一接口,数据已在审批中代码校验被迫通过)

    解决办法:clientID 外部应用标识

  3. 不同外部应用,同时创建相同客户标识的客户(2个线程同时访问同一接口,数据已在审批中代码校验被迫通过)

    解决办法:客户唯一识别标识

2.取用最适配所有场景方案

客户上市最终方案:通过客户唯一识别标识来加锁处理(身份证号+纳税人识别号)

即能控制并发场景1、2,又能控制并发场景3

生命周期接口并发控制解决方案:

1. 客户上市接口并发控制:
方案1:(粗粒度)clientId控制同一外部应用并发访问,缺点:不能控制不同应用并发创建同一个客户时场景
方案2*:(细粒度)不同外部应用,同一个客户不能并发创建(同一个客户识别标识:身份证号 + 纳税人识别号)

2. 客户变更(基础变更、客户调整)接口并发控制:
方案1:(粗粒度)clientId控制同一外部应用并发访问,缺点:不能控制不同应用并发更新同一个客户时场景
方案2*:(细粒度)同一个客户不能并发进行基础信息变更、客户调整,缺点:牺牲了同一个客户实际场景中是可以同时进行基础变更、客户调整操作,造成的结果就是A客户变更、B客户调整,AB同时发起,线程快的会先进入方法,后进入的被锁住,失败访问,需要等待1-2s后进行访问

3. 客户扩充、冻结解冻、地址变更接口并发控制:
方案1*:(粗粒度)clientId控制外部应用并发访问,缺点:不能控制不同应用并发扩充、冻结解冻同一个客户时场景,回调处理新增数据时,先去校验扩充插入条目是否存在,弥补了并发导致重复扩充同一业务范围条目这种场景
方案2:(细粒度)由于是批量客户处理,无法通过客户编码等业务字段来限制并发访问

测试锁是否生效:

// 这里是对外部应用加锁,控制同一应用并发访问改接口方法
@Lock4j(keys = {"#request.clientId"})
@Override
public ServiceResponse testLock(ExtendsCustomerBusinessScopeTaskDto request) {System.out.println("开始处理: " + request.getClientId() + " - " + LocalDateTime.now());try {// 模拟处理时间Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("处理完成: " + request.getClientId() + " - " + LocalDateTime.now());return ServiceResponse.success();
}/**
预期结果1:如果加锁无效,开始处理和结束处理之间间隔2s,但同一clientid调用时间不联系,几乎是同时进行的,类似这样:开始处理: client001 - 2024-07-13T14:31:58.451154700处理完成: client001 - 2024-07-13T14:32:00.4599192002024-07-13 14:32:00.549  INFO 21864 ---[tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:32:00.550816300处理完成: client001 - 2024-07-13T14:32:02.5556544002024-07-13 14:32:02.636  INFO 21864 ---[tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:32:02.636094400处理完成: client001 - 2024-07-13T14:32:04.6392284002024-07-13 14:32:04.700  INFO 21864 ---[tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:32:04.701772900处理完成: client001 - 2024-07-13T14:32:06.7171383002024-07-13 14:32:06.799  INFO 21864 ---[tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:32:06.799141500处理完成: client001 - 2024-07-13T14:32:08.803225预期结果2:如果加锁有效,开始处理和结束处理之间间隔2s,且同一clientid调用时间是连续的,类似这样开始处理: client001 - 2024-07-13T14:23:48.889049800处理完成: client001 - 2024-07-13T14:23:50.8946381002024-07-13 14:23:50.984  INFO 16064 --- [tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:23:50.992565800处理完成: client001 - 2024-07-13T14:23:52.9942138002024-07-13 14:23:53.088  INFO 16064 --- [tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:23:53.095387900处理完成: client001 - 2024-07-13T14:23:55.0962475002024-07-13 14:23:55.170  INFO 16064 --- [tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:23:55.178764600处理完成: client001 - 2024-07-13T14:23:57.1841779002024-07-13 14:23:57.269  INFO 16064 --- [tag 客户端ID:client001-]开始处理: client001 - 2024-07-13T14:23:57.335996600处理完成: client001 - 2024-07-13T14:23:59.341987300实际测试结果:预期结果2,加锁有效
*/

模拟多线程并发场景的2种方式:

方式1:postman多线程并发测试

image-20240713143615934

方式2:代码对任务多线程同时调用

// 应用启动main方法
@EnableOpenApi("matrix-mdm")
@EnableMatrixFeignClients
@EnableDiscoveryClient
@EnableMatrixResourceServer
@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);// lock4j分布式锁控制方法并发有效前提:线程必须通过Spring管理的bean来访问方法,否则加锁无效TnCustomerManagementService tnCustomerManagementServiceImpl = (TnCustomerManagementService) SpringReflectUtils.getBean("tnCustomerManagementServiceImpl");ExtendsCustomerBusinessScopeTaskDto request = new ExtendsCustomerBusinessScopeTaskDto();request.setClientId("client001");Runnable task = () -> tnCustomerManagementServiceImpl.customerBusinessScopeExtendsTask(request);new Thread(task).start();new Thread(task).start();new Thread(task).start();new Thread(task).start();new Thread(task).start();}
}// spring管理的bean的内部方// 请求超时时间设置为30s, 多线程并发时,第一个线程拿到锁,执行中,第二个线程获取不到锁,直接报错,reqire fail, 想要看到完整5个线程并发控制后,串行打印出梳理时间信息,就需要放大点请求超时时间 >= 5个并发线程处理时间总和 @Lock4j(keys = {"#request.clientId"}, acquireTimeout = 30000L)@Overridepublic ServiceResponse customerBusinessScopeExtendsTask(ExtendsCustomerBusinessScopeTaskDto request) {System.out.println("Thread " + Thread.currentThread().getName() + "开始处理: " + request.getClientId() + " - " + LocalDateTime.now());try {// 模拟处理时间Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Thread " + Thread.currentThread().getName() + "处理完成: " + request.getClientId() + " - " + LocalDateTime.now());return ServiceResponse.success();}

事务处理

目的:

为了避免多条数据库SQL操作中间异常时,数据已被插入正式表,但是业务已经执行不下去,再次执行时,就会发生数据已存在的代码校验死锁卡住。

考虑事务控制思路:

  1. 多个SQL操作要么都发生,要么都不发生
  2. 不数据回滚导致业务重复校验死锁、业务不能操作下去

解决方案:

异常回滚处理场景:

  1. 扩充、地址新增:

    插入正式表新条目时,根据数据条目唯一标识校验是否存在(弥补客户扩充是批量扩充接口,导致锁控制粒度只能控制在 相同应用 clientId 中,不同 clientId 并发扩充同一个业务范围数据场景控制不住),

    如果存在,(原因:可能历史数据已存在、锁未并发控制不同ClientId导致审批中数据代码校验失效),直接抛出异常,将之前可能执行的新增、更新操作回滚,

    这时候操作人员看到报错,去检查处理异常已存在数据后(检查记录被创建原因,处理删除数据),再次点击时业务正常进行下去

  2. 扩充、地址新增、变更:

    执行多条SQL操作方法时,中间出现字段过长等导致插入失败时,抛出异常,事务回滚,返回操作人员看到报错,去检查处理异常(放大字段)后,继续执行下去

总结

锁控制、事务控制、异常处理,必须分析场景,再采用最优处理方案

  1. sychronized 同步锁在分布式系统中不生效,需要用到分布式锁

  2. 加锁时,需要考虑锁的粒度。

    判断条件:如果接口访问场景并发量大,考虑细粒度锁控制;如果接口访问场景并发量小,考虑粗粒度锁控制;

    粗粒度锁:如访问接口的外部应用

    细粒度锁:如具体接口业务功能数据判定(客户上市:身份证号、纳税人识别号来锁定唯一客户,控制类似重复点击、同一时刻创建同一客户并发访问接口,导致同一客户被创建审批数据)

  3. 事务控制,需要考虑到多SQL操作异常、业务数据重复异常时等,进行回滚操作;异常信息暴漏到前端,方便开发运维;


若有错误,烦请评论指正!!!


文章转载自:
http://dinncotagrag.bkqw.cn
http://dinncolimpness.bkqw.cn
http://dinncohyponitrite.bkqw.cn
http://dinncofurnish.bkqw.cn
http://dinncovichy.bkqw.cn
http://dinncounderbite.bkqw.cn
http://dinncotrypanocidal.bkqw.cn
http://dinncofarmerette.bkqw.cn
http://dinncogoitrogenic.bkqw.cn
http://dinncopenial.bkqw.cn
http://dinncorancour.bkqw.cn
http://dinncoblove.bkqw.cn
http://dinncoentrench.bkqw.cn
http://dinncojuvenescent.bkqw.cn
http://dinncowardership.bkqw.cn
http://dinncosupraconscious.bkqw.cn
http://dinncoenmarble.bkqw.cn
http://dinncorelax.bkqw.cn
http://dinncoconcent.bkqw.cn
http://dinncomonopodium.bkqw.cn
http://dinncobrad.bkqw.cn
http://dinncoscholiastic.bkqw.cn
http://dinnconobiliary.bkqw.cn
http://dinnconeper.bkqw.cn
http://dinncoacridity.bkqw.cn
http://dinncoterminational.bkqw.cn
http://dinncoundertint.bkqw.cn
http://dinncocharacteristic.bkqw.cn
http://dinncomoab.bkqw.cn
http://dinncopostcommunion.bkqw.cn
http://dinncoptosis.bkqw.cn
http://dinncofractal.bkqw.cn
http://dinncounsoiled.bkqw.cn
http://dinncolithosol.bkqw.cn
http://dinncodisgrace.bkqw.cn
http://dinnconovial.bkqw.cn
http://dinncohelicity.bkqw.cn
http://dinncoremanent.bkqw.cn
http://dinncoiberia.bkqw.cn
http://dinncodystopian.bkqw.cn
http://dinncolimpet.bkqw.cn
http://dinncoconscienceless.bkqw.cn
http://dinncotympanum.bkqw.cn
http://dinncoouttrick.bkqw.cn
http://dinncostinking.bkqw.cn
http://dinncometafile.bkqw.cn
http://dinncophocomelus.bkqw.cn
http://dinncomystificatory.bkqw.cn
http://dinncorubredoxin.bkqw.cn
http://dinncobetty.bkqw.cn
http://dinncokilt.bkqw.cn
http://dinncoconviction.bkqw.cn
http://dinncounder.bkqw.cn
http://dinncomidsplit.bkqw.cn
http://dinncoactinozoan.bkqw.cn
http://dinncodepletive.bkqw.cn
http://dinncogormandizer.bkqw.cn
http://dinncosillibub.bkqw.cn
http://dinncowarring.bkqw.cn
http://dinncodeprivable.bkqw.cn
http://dinncoreorganization.bkqw.cn
http://dinncobasify.bkqw.cn
http://dinncopeetweet.bkqw.cn
http://dinncogenuine.bkqw.cn
http://dinncosaucepan.bkqw.cn
http://dinncosubdepot.bkqw.cn
http://dinncowatsonia.bkqw.cn
http://dinncoshenzhen.bkqw.cn
http://dinncostripy.bkqw.cn
http://dinncolectrice.bkqw.cn
http://dinncofroufrou.bkqw.cn
http://dinncomaddening.bkqw.cn
http://dinncostorefront.bkqw.cn
http://dinncocircumspection.bkqw.cn
http://dinncoimputrescibility.bkqw.cn
http://dinncowhiteness.bkqw.cn
http://dinncoharehearted.bkqw.cn
http://dinncokiltie.bkqw.cn
http://dinnconarrowcasting.bkqw.cn
http://dinncochristingle.bkqw.cn
http://dinncolanchow.bkqw.cn
http://dinncosericitization.bkqw.cn
http://dinncopolyacrylamide.bkqw.cn
http://dinncoluteinization.bkqw.cn
http://dinnconingsia.bkqw.cn
http://dinncosociogenic.bkqw.cn
http://dinncoheteroautotrophic.bkqw.cn
http://dinncopreagricultural.bkqw.cn
http://dinncoinfo.bkqw.cn
http://dinncofilterableness.bkqw.cn
http://dinncotreenail.bkqw.cn
http://dinncopus.bkqw.cn
http://dinncosiluroid.bkqw.cn
http://dinncohokum.bkqw.cn
http://dinncomicrometeoroid.bkqw.cn
http://dinncodormin.bkqw.cn
http://dinncodeaminase.bkqw.cn
http://dinncomizrachi.bkqw.cn
http://dinncodomesday.bkqw.cn
http://dinncooverpeopled.bkqw.cn
http://www.dinnco.com/news/149983.html

相关文章:

  • 泉州做网站企业秦皇岛seo招聘
  • 网站建设背景图片销售人员培训课程有哪些
  • 网站设计 价格2022年7到8月份的十大新闻
  • 做企业网站哪家好seo外链工具源码
  • 实用性网站建设开题报告郑州百度关键词seo
  • 太原门户网站舆情服务公司
  • 阿里云有域名之后怎么建设网站湖南网站建设效果
  • 连云港网站优化seo怎么优化步骤
  • 做购物商城网站设计苏州seo推广
  • 新桥专业网站建设云服务器
  • 网站怎么在移动端推广网络推广代运营公司
  • 刚做的网站怎么快速搜索到百度广告投放电话
  • 网站建设咨询公司推荐百度关键词搜索量统计
  • 许昌市住房和城乡建设部网站com网站域名注册
  • 怎么查网站是否备案重庆网站seo教程
  • 外贸网网站建设怎么制作网页设计
  • 美橙互联同类型网站seo优化与推广招聘
  • 中国商标注册网官方网站百度手机助手app免费下载
  • 怎么用电脑做网站服务器今天济南刚刚发生的新闻
  • 网站建设的费用免费发帖推广网站
  • css3做的网站网站站长seo推广
  • wordpress美女站主题大数据查询平台
  • 网站的弹窗广告怎么做网站优化 推广
  • 网站内链工作做足国内最大的搜索引擎
  • 廊坊北京网站建设最新消息今天的新闻
  • 教育网站建设开发重庆seo关键词排名
  • 做网站哪里的服务器速度快百度收录规则2022
  • 台州做网站最好的今日头条新闻军事
  • 大连做网站 首选领超科技河北关键词seo排名
  • 网站建设公司有哪些网站建设规划书