精华内容
下载资源
问答
  • 并发的应用
    千次阅读
    2021-02-19 08:40:33

    数据传输:

    1.尽力可靠 音视频通话

    2.无序可靠   文件传输,迅雷下载文件,分片下载

    3.有序可靠   金融转账(包到达并有序,然后才开始处理)

    腾讯移动游戏技术++UDP可靠性设计    KCP优秀博文选读  用户态+协议栈深度解析 视频

    1.udp使用场景   

       音视频通话    实时考虑

       游戏 比如王者荣耀  实时性考虑

      工业物联网  传感器,5秒钟获取传感器数据,然后上传到服务器,但平常时间是休眠状态   实际有效包只有一个   使用udp发送一个包即可,减少了三次握手,四次挥手的耗能

    2.如何选择tcp和udp

    udp能否提高带宽?要提高带宽,还是选用tcp比较好

    udp实时性,高山流水,流速快     游戏里面udp可靠性设计,灵活,实时,低延迟

    tcp 数据传输可靠,带宽高   大江大河

    3.协议设计

    协议设计 header + body,udp封装在IP报文中的body中

         IP封装   header +  UDP数据报

    IP数据报
    headerUDP数据报(8字节数据)+UDP数据
    20字节
    8字节UDP数据
    16位源端口号 16位目的端口号数据
    16位UDP长度 16位校验和

     

    20字节1500字节

    UDP一次能传输多少数据?抓包工具?

           MTU 以太网数据帧的长度在46-1500字节之间,由物理网卡的特性决定的,这1500字节被称为链路层的MTU(最大传输单元)

           1500-20-8=1472字节数据长度   20是ip报文头

            有的包还会先设计为运营商+IP数据报,并且因特网上标准MTU值为576字节   所以在设计传输字节上  一般推荐1400字节长度,游戏推荐500字节

    数据传输分类

          CF手游中并非所有的数据都要求可靠,按游戏逻辑需要,只有不到50%的协议有。

    4.udp收数据和tcp有什么区别?udp能否一次只收半个包的数据?

    tcp可以收半个包,buffer不够了可以加buffer,然后再收数据

    udp不可以。收完再去收,数据就没有了,数据丢失了。udp一次必须把整个包读走

    udp和tcp区别
    udptcp
    没有重传机制重传机制
     应答机制
     序号重排
     拥塞控制

     

     

     

     

     

     

     

    更多相关内容
  • 锤子用于测试高负载、高并发应用程序的负载工具
  • 采用Redis高并发应用系统设计与实现方法.pdf
  • 并发应用的容器技术架构实践 技术创新变革未来 P A G E 43 THANKS
  • 并发应用性能调优与实践交流 什么是高并发应用 架构设计 系统优化思路 资源争用解决方案 系统调优实践
  • Java7并发编程指南——第八章:测试并发应用程序@(并发和IO流)Java7并发编程指南第八章测试并发应用程序 思维导图 项目代码思维导图项目代码GitHub:Java7ConcurrencyCookbook

    Java7并发编程指南——第八章:测试并发应用程序

    @(并发和IO流)

    思维导图

    Java7并发编程指南——第八章:测试并发应用程序

    项目代码

    GitHub:Java7ConcurrencyCookbook

    展开全文
  • 大型高并发网站的性能除了受硬件设施影响外,高性能的软件技术应用和高度优化的 系统架构的作用也格外重要。文章首先讨论外网中在全国范围使用的镜像网站,CDN 内容分 发网络等加速技术,其次着重对本地服务器内网中...
  • c 实现用于应用多线程并发,源码实现
  • Java并发编程经典教程,适合于中高级程序员学习使用
  • 并发秒杀:商品秒杀、抢红包分布式锁:商品库存、账户资金增减这两种应用场景技术解决方案,无论是常规的系统,还是现在火热的区块链、物联网开发,都是必须且很有用的技术选型! 在本课程中,主要会讲到如下内容...
  • 并发学习应用

    2021-02-25 06:11:07
    并发学习应用
  • yarn调优-提升并发应用

    千次阅读 2017-03-02 14:26:00
    后来发现一个问题,在集群资源充裕的情况下,yarn中的并发applicaiton都特别少,在hive管理界面上,查看应用状态,提示:“ACCEPTED:waiting for AM contrainer to be allocated,launched and register with RM.”...

    架构:yarn+hive

    问题:yarn中使用capacity scheduler做任务调度,创建了三个队列分别为不同的场景提供服务。后来发现一个问题,在集群资源充裕的情况下,yarn中的并发applicaiton都特别少,在hive管理界面上,查看应用状态,提示:“ACCEPTED:waiting  for AM contrainer to be allocated,launched and register with RM.”查资料后,我的理解应该是application在等待任务contrainer,由于拿不到资源,导致pending,同时检查memory used和vcores used两个指标均只用了一半资源,集群利用效率上不去

    解决:在检查yarn的队列配置中主要有两个参数用来控制application的资源分配

    yarn.scheduler.capacity.<queue-path>.user-limit-factor:每个用户能使用队列资源的上线,默认是10,即:10%,因为我们的场景都是单用户使用该队列,我们调到了100;

    yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent:队列资源拿多少资源出来分配给application(注意:yarn中container有两种用途,一种是分配给application,另外一种是分配给map或者reducer任务)

    重启服务器后,观察队列的使用情况,集群效率低的问题得到了很大的改善。

    转载于:https://my.oschina.net/psuyun/blog/849457

    展开全文
  • 并发编程_应用.pdf

    2021-06-15 17:13:42
    并发编程_应用.pdf
  • 秒杀场景需要考虑这些关键词:高并发、响应时效性、流程削峰、恶意流量攻击、秒杀原子操作与数据安全、服务高可用(应对雪崩)等。 【1】秒杀业务场景分析 ① 秒杀/抢购业务场景 比如商品秒杀、商品抢购、群红包、抢...

    秒杀场景需要考虑这些关键词:高并发、响应时效性、流程削峰、恶意流量攻击、秒杀原子操作与数据安全、服务高可用(应对雪崩)等。

    面试题:设计一个10000并发的秒杀方案,9.9秒内秒杀100个商品。

    【1】秒杀业务场景分析

    ① 秒杀/抢购业务场景

    比如商品秒杀、商品抢购、群红包、抢优惠券、抽奖等等。

    ② 秒杀/抢购业务特点

    秒杀商品价格低廉、抢购商品很好|抢手、大幅推广|广为人知、瞬时售空、一般是定时上架、持续时间短、瞬时并发量高等。

    ③ 秒杀/抢购技术特点

    高并发、读多写少、资源冲突(容易导致超卖问题)。

    概览一下技术实现:
    在这里插入图片描述

    削峰利器-异步MQ

    如下所示,将用户请求通过消息中间件转发到秒杀服务器,通知秒杀系统一个个处理。
    在这里插入图片描述
    队列

    可以使用Java内部队列来控制用户请求并保证公平性–先到先得,然后将队列转发给秒杀系统处理。
    在这里插入图片描述


    ④ 系统基本架构与秒杀配套解决方案

    不同于OSI的七层架构模型,这里应用系统架构分为五层,如下所示:
    在这里插入图片描述
    其中按钮控制、图形验证码是为了尽可能屏蔽恶意流量,比如机器人请求、脚本自动请求。

    四层负载均衡

    • 四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。

    七层负载均衡

    • 七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

    在这里插入图片描述


    【2】秒杀技术方案落地实现

    ① 秒杀人群、并发规模的预估

    为什么要估算?当然是为了确定一个最终的技术选型以及服务器容量。

    那么如何估算呢?

    平均并发用户数为C=nL/T,秒杀的并发规模就要根据公司活动历时以来的最高峰值再扩容。

    ② Nginx限流算法

    常见限流算法有"漏桶算法"和“令牌桶算法”,Nginx提供了一个叫ngx_http_limit_req_module的模块进行流量控制,Nginx是基于漏桶算法实现。
    在这里插入图片描述

    ③ 从前到后流程示意如

    在这里插入图片描述


    ④ 乐观锁和悲观锁

    乐观锁如使用version控制,悲观锁则如Select count from tb_goods where id=1 for update

    乐观锁如下所示:
    在这里插入图片描述

    在高并发秒杀场景中,乐观锁是不太适合的。因为其冲突频率、重试代价所带来的性能消耗是大于悲观锁的。


    【3】秒杀技术特点/优化

    ① 页面/静态资源的优化

    动态页面静态化其实就是将传统的jsp或者thymeleaf、freemarker转换HTML+AJAX。静态页面可以缓存到客户端(比如浏览器),通过AJAX发送请求获取数据然后渲染页面。

    静态资源优化

    • JS/CSS压缩,减少流量;
    • 多个JS/CSS组合减少连接数(或者说多个JS/CSS请求组合为单个请求-参数Tengine);
    • CDN支持

    页面缓存

    比如使用thymeleaf时,把页面缓存到redis一段时间,前端请求过来时先去redis获取页面。代码示例如下:

    //取缓存,如果有直接返回
    String html = redisService.get(GoodsKey.getGoodsDetail, ""+goodsId, String.class);
    if(!StringUtils.isEmpty(html)) {
    	return html;
    }
    //如果没有就生成并放入redis
    SpringWebContext ctx = new SpringWebContext(request,response,
    request.getServletContext(),request.getLocale(), model.asMap(), applicationContext );
    //后台自己解析页面并缓存起来
    String html = thymeleafViewResolver.getTemplateEngine().process("goods_detail", ctx);
    if(!StringUtils.isEmpty(html)) {
     	redisService.set(GoodsKey.getGoodsDetail, ""+goodsId, html);
     }
    

    通常现在项目中都是采用前后端分离模式开发,比如前端的VUE。那么部署的时候采用动静分离分别部署即可。

    参考博文:Java 高并发解决方案(电商的秒杀和抢购)

    展开全文
  • 并发库高级应用\多线程\Java
  • 主要介绍了golang通过context控制并发应用场景实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 基于移动互联网的票务应用服务,是近年来兴起的一个电子商务前沿分支,向用户提供便捷的查询、...从而设计出一种新型的票务应用系统,以减少高并发压力下对原生票务系统的访问流量冲击,降低原生票务系统的访问压力。
  • Netty聊天室(2):从0开始实战100w级流量应用之客户端介绍 Java 聊天室:仿QQ客户端 ByteBuf(图解1) ByteBuf API(图解之 2)| 秒懂 【分布式 聊天室】 【架构篇】 基于 Netty打造 亿级流量 高并发 仿微信 IM后台...
  • 并发场景设计与解决方案

    千次阅读 2022-05-01 14:34:51
    并发场景定义,高并发初中级场景与解决方案,高并发高级场景与解决方案
  • go线程池实现百万级高并发

    千次阅读 2020-12-10 11:04:52
    Elastic Load Balancers完全启动后,我们看到ElasticBeanstalk 应用服务于每分钟1百万请求。 通常情况下在上午时间有几个小时,流量峰值超过每分钟一百万次。 我们一旦部署了新的代码,服务器的数量从100台大幅 下降...
  • * *
  • java并发需要掌握的技术和类的关系梳理图,下载(Mindjet MindManager)打开
  • 针对在多租户中间件上存在的租户隔离、资源侵占的问题, 提出一种面向多租户中间件的应用并发控制方法。首先分析了现有并发控制方法的局限性, 然后介绍了一种基于工作管理器的多租户请求处理模型的原理及设计, ...
  • Java并发编程精讲

    2021-06-16 03:15:48
    课程会讲解Java中并发相关技术的基础、原理和应用,从线程安全、线程(池),锁实现和并发容器等高并发Java实现,去深入理解在并发编程中,一些最容易被忽视的点,这些点也是我在多年编程经验中实际用到,对于每个小节...
  • 大致内容包括: Java内存模型 Java内存交互协议 Java的线程 Netty的并发编程分析 正确的使用锁 volatile的正确使用 CAS指令和原子类 线程安全类 读写锁的应用
  • 第1章课程准备;...第14章高并发应用拆分思路 第15章高并发应用限流思路 第16章高并发之服务降级与服务熔断思路8 第17章高并发之数据库切库分库分表思路 第18章高并发之高可用手段介绍 第19章课程总结
  • 里面讲了并发编程的基本概念,原理,模式,应用,等
  • 大型网站应用之海量数据和高并发解决方案总结.docx
  • 经典Java多线程与并发库高级应用经典Java多线程与并发库高级应用经典Java多线程与并发库高级应用经典Java多线程与并发库高级应用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 905,601
精华内容 362,240
关键字:

并发的应用