首页 文章 精选 留言 我的

精选列表

搜索[深度集成],共10000篇文章
优秀的个人博客,低调大师

Redis 深度历险:核心原理与应用实践

内容介绍 Redis 是互联网技术架构在存储系统中使用最为广泛的中间件,它也是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一,特别是那些优秀的、竞争激烈的大型互联网公司(比如 Twitter、新浪微博、阿里云、淘宝、知乎等),通常要求面试者不仅仅掌握 Redis 基础使用,更要求深层理解 Redis 内部实现的细节原理。毫不夸张地说,能把 Redis 的知识点全部吃透,你的半只脚就已经踏进心仪大公司的技术研发部。 但在平时经历的很多面试中,老钱发现大多数同学只会拿 Redis 做数据缓存,使用最简单的 get/set 方法,除此之外几乎一片茫然。也有小部分同学知道 Redis 的分布式锁,但也不清楚其内部实现机制,甚至在使用上就不标准,导致生产环境中出现意想不到的问题。还有很多同学没认识到 Redis 是个单线程结构,也不理解 Redis 缘何单线程还可以支持高并发等等。这也是老钱撰写这本小册的初衷,通过梳理总结自己的实践经验,帮助更多后端开发者更快更深入的掌握 Redis 技能。 老钱所在的掌阅科技,为了支撑海量(亿级)的用户服务,使用了上千个 Redis 实例,包含大约 100 个 Redis 集群 (Codis) 以及很多独立的 Redis 节点,因此,在使用 Redis 作为缓存和持久存储中间件上积累了较为丰富的实战经验,这些都将毫无保留的分享到这本小册中。 Redis 涉及到的知识点是非常繁多的,本小册将主要讲解其中最常见的 Redis 核心原理和应用实践经验,让读者在阅读之后可以快速武装自己并落地到平时的 Redis 项目开发中。除此之外,还会回顾一些底层的至关重要的计算机科学基础原理,以及技术应用的思考方式,这些基础的知识和技能将最终决定你的技术人生道路可以走多快走多远。 内容结构 本小册在内容结构上分为 Redis 基础应用、原理、集群、拓展学习和源码分析 5 个版块: Redis 基础应用占据篇幅最长,这也是对读者最有价值的内容,可以直接应用到实际工作中。 原理和集群版块适合对技术有着极致追求的开发者,他们希望透过简单的技术表面看到精致的底层世界。 拓展学习版块作为最核心内容之外的补充部分,主要用于进一步扩展- 技术视野或者夯实基础,便于进阶学习,作者会尽可能的在拓展篇持续扩充更多知识点。 源码分析版块主要满足高阶用户深入探索 Redis 内部实现的强烈渴望,这类读者坚信读懂源码才是技术实力的真正体现。 图文并茂、动画演示 原文发布时间为:2018-07-31本文来自云栖社区合作伙伴“Java架构沉思录”,了解相关信息可以关注“Java架构沉思录”

优秀的个人博客,低调大师

网易工业级WebRTC应用实践深度解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/80994030 本文来自网易云信CTO赵加雨在LiveVideoStackCon2017上的分享,并由 LiveVideoStack整理而成。赵加雨阐述了网易在WebRTC上的探索和改进,以及如何与WebRTC进行互通。 文 / 赵加雨 整理 / LiveVideoStack 概览: 网易在音视频领域有10多年丰富经验的积累,在公司内部我们把自己的这一套工业级的功能完整的音视频技术方案称为NRTC,NRTC的意思就是NetEase RTC。近几年,WebRTC非常火热,尤其是2017年,苹果宣布在Safari 11里面支持WebRTC,所以说Web本身也变成了一个非常重要的入口,是音视频很重要的一个终端,对于我们来说,要在我们的NRTC里面实现对WebRTC的支持,也就是要能够支持Web这样一个终端和入口。 本次分享的主要内容: 1、简要介绍NRTC的技术方案 2、怎样理解WebRTC 3、如何实现NRTC支持WebRTC 1、NRTC技术解决方案 NRTC全称为NetEase RTC,是网易公司实现的一套工业级的功能完整的音视频技术解决方案。 1.1 NRTC技术架构图: 从架构图中,大家可以看到,我们有NRTC SDK,这是实时音视频通话的客户端SDK,有PC端、移动端的SDK,另外有我们的NRTC MCU,这是一个媒体服务器。在客户端上NRTC SDK会负责推拉流到NRTC MCU,NRTC MCU负责把媒体流中转给其它的客户端,同时它也会中转给 NRTC BMS,BMS其实就是互动直播服务器,在BMS上会做混音混屏,将音视频混成一路流后再推给NRTC LVS,LVS就是直播源站,最后再推给我们的NCDN网络,通过NCDN的海量分发,使用我们的NRTC Player就可以支持海量的用户拉流。在这里面大家可以看到左半边是UDP的方案,右半边是一个TCP的方案,同时我们在Server端有很多像录制、混屏、混音、转码,包括存储,后续还有基于存储的点播。 1.2 NRTC支持的功能: 实时音视频通话 直播 互动直播 点播 互动白板 短视频 1.3 音视频技术栈 信令: SDP、JSEP、SIP、Jingle、ROAP 传输: RTP、RTCP、DTLS、RTMP、FLV、HLS P2P: ICE、STUN、TURN、NAT 网络: UDP、TCP 音频: Opus、G711、AAC、Speex、3A 视频: H264、VP8 QoS: FEC、NACK、BWE Server: SFU、MCU 端: Capture、Render、各种适配 2、怎样理解WebRTC? WebRTC是由W3C和IETF定义的规范,简单来讲,就是一个在浏览器里面去实现音视频会话的框架(JavaScript API),它不需要安装,可以满足P2P传输。只要通过信令的协商,也可以和传统的音视频应用去做互联互通。另外,WebRTC也是一个开源项目,是由谷歌公司提供的基于C++的可以跨平台的开源的音视频框架,是功能完整的一个音视频SDK,一般用libwebrtc来表示这个开源项目。 2.1 WebRTC的体系结构 在这个简单的架构里面,主要包括了网络传输、音频引擎、视频引擎,,它主要的功能和内容其实是C++实现的,然后封装了一层JavaScript的API,让你用JavaScript能够调用到这些功能。 2.2 WebRTC的特点和局限 通过JavaScript的API在浏览器上调用 没有定义信令 基于客户端,没有SFU/MCU 完全基于标准 依赖浏览器来实现 2.3 如何使用WebRTC 1)方法一:基于JavaScript的API进行音视频的应用 完全基于JavaScrip去做,没有媒体相关的Server,可靠性或者功能会很受限,但可以控制很低的成本。 2)方法二:基于libwebrtc来实现 由于WebRTC本身这些C++的Code,没有很好的工程化,所以在异常保护,错误恢复等方面做得不太够。在真实的应用当中,可能要做很多的调整和改造。 3)方法三:兼容、支持WebRTC 对于一些有成熟的音视频框架体系的公司,可以在自己的体系上来兼容、支持WebRTC。 2.4 NRTC和WebRTC的比较 NRTC早于WebRTC NRTC是VoIP的完整解决方案,大概可以说NRTC SDK约等于WebRTC NRTC的实现更灵活,WebRTC是基于标准的,有很多受限的方面 NRTC是工业级的实现,技术框架更加成熟 3、如何实现NRTC支持WebRTC 3.1 在NRTC中连接WebRTC的原理 从图中的简要架构设计可以看出,如果想要NRTC的技术方案和Web端建立连接,可以通过WebRTC Gateway这种方式,WebRTC GateWay跟NRTC MCU之间是通过UDP协议传输NPDU的流媒体,另一端通过SRTP连接Web。 下面给大家讲解一下WebRTC GateWay: 在WebRTC GateWay里面主要包括两部分:信令和媒体,在信令方面,我们主要提供了WebSocket,信令是为了帮助两个端SDP和ICE去交互,由提供的WebSocket来进行连接;在媒体方面,要实现ICE框架和SRTP协议栈来建立网络通讯的连接,还要做一个包的转封装工作,把RTP的包和NPDU的包相互转换。有了这个WebRTC GateWay,经过我们的MCU就可以跟我们的其他的端实现互联互通。 3.2 实现NRTC兼容WebRTC所做的工作 实现浏览器的兼容 建立ICE框架 搭建RCTP协议栈,得到反馈值 确保Web端的可靠连接 拥塞控制 3.3 浏览器的“坑点” 1)利用adapter.js来实现浏览器的兼容 各种不同版本的浏览器实现这个规范的时候可能会接口会有些不一样,主要还是接口层的不一样,通过adapter.js可以兼容这些接口。 2)视频分辨率 有些浏览器支持视频分辨率的裁切,有些不支持。 3)媒体流的生命周期 浏览器上的媒体流的生命周期有限,有时得到的媒体是没有视频或音频。 4)请求得到用户媒体成功,却没有媒体流发过来。 3.4 Lite ICE框架 在ICE框架中包括NAT,STUN-RFC5389,TURN-RFC5766,ICE-RFC5245,TCP。在一个高可靠的网络连接中,还要能够支持TCP连接。当一方是Serve且有固定的公网IP,另外一方是客户端的这种情况下,可以使用Lite ICE框架。在Lite ICE这种情况下面,你只要给一个Host candidates,即当你的Server回来,给Server一个公网IP,不需要再去其他的探测,你只要给Server的Host candidates就可以了,在Lite ICE情况下面,是有Full peer这端会发起连通的检查,也就是由浏览器这一端发起连通检查,它只需要两步就可以完成连通检查。 3.5 网络监测 1)在信令中,WebSocket有断网事件通知 2)RTCPeerConnection有断网事件通知 3)在TCP连接上,有基于signaling channel的keepalive 3.6 断开重连 1)Start over Detach stream,销毁现有连接等 信令连接、鉴权、媒体连接 2)ICE restart 3.7 Multiplexing and bundle 减少UDP的连接数 减少UDP的连接有两个好处,第一,可以减少建立连接的时间,第二,在企业环境里面,很多UDP的一个端口连接需要找网管去配的,如果有多个连接,会加大配置和维护的难度。 3.8 丢包恢复和拥塞控制 1)GCC GCC是在WebRTC本身现有的一套拥塞控制框架,它是有两种模型,一种是基于丢包的模型,一种是基于时延的模型,从图中可以看出,发送端有一个叫丢包的模型,在接收端有一个基于时延的模型(在最新的WebRTC里已调整为都在发送端了);在发送端它会做带宽评估,评估管理以后流媒体送到接收端,那接收端之它有个基于延时的一个带宽评估,评估完以后,当它发现这个带宽受限,或者它需要调整码率,它通过REMB将消息送给发送端,让发送端重新调整码率,从而来实现一个带宽评估和自适应码率的过程。 2)如何在WebRTC GateWay中让GCC工作起来 REMB 先在接收端进行一个最大接收码率估测,在WebRTC Gateway上通过REMB消息,告诉发送端如何调整码率和带宽。 GCC feedbacks 通过反馈给Delay-based controller正确的Transport cc来让它计算正确的时延估计,以及带宽评估;通过反馈Loss-based controller两种RTCP的报文(SR/RR),来进行丢包的计算。 3)丢包重传(NACK) 实现一个双向的丢包重传,通过WebRTC GateWay和浏览器之间 发送NACK的RTCP feedback信息来进行丢包重传。 3.9 分享一个SDP的例子

优秀的个人博客,低调大师

阿里云朱金童:深度揭秘ET大脑

2018年1月6日云栖社区数据智能技术论坛上,来自阿里云大数据事业部高级专家朱金童带来阿里云ET大脑的相关揭秘。本文主要从AI到ET的进化开始谈起,分析了构建类大脑网络的过程,接着重点分享了ET大脑在生活中的应用,包括城市大脑、农业大脑、航空大脑。 以下是精彩视频内容整理:阿里云ET大脑作为全球首个类脑架构的人工智能,突破单点使全局智能变成现实,更大的格局从此被打开,多维感知世界、全局洞察问题、最优定制决策,阿里云ET大脑不断学习进化,更深入同时更广阔,更多人得到科技助力,更多行业因创新而赋能。它,开创新零售在交易中学会交流,使商业更懂人心;它,激发工业活力,加速产业升级,使机器拥有智力;它,激活散落的孤立数据,为城市治理与服务模式开创革新,使城市学会思考;它,为环境构建算法,自然不再无言,使生态学会表达。思考因突破而兴奋,科技因现实而动人。 AI到ET的进化 回首ET大脑足迹历历在目,城市、工业、航空、环境各方面无不体现出ET大脑的重要创新性。随着图像识别、传感设备、智能终端设备等技术的飞速发展突破,我们可以更好的感知现实社会,ET大脑就是感、智、动的结合,采集到的数据通过机器学习模型把机器学习算法理解的数据变成智慧,最终与实际场景相联动。 要承载庞大的事务就需要良好的技术底座,包括智能语音交互、计算机视觉和自然语言处理,ET大脑拥有强大的技术底座作支撑,有许多眼睛触角帮助我们了解真实世界。 阿里在人工智能部分已经做出了一些成绩,那么,是不是有了这么多人工智能技术,就可以变成ET大脑呢?其实远远不够,AI到ET还有如图中所示的诸多过程,需要与行业相结合,比如车辆交通检测,过去只能感知到有多少辆车通过路口,但并不知道车通过的速度,以及 车的动向;当分析道路交通状况时,单个路口盯着摄像头看即可,但如果需要解决道路拥挤问题,需要了解该路口车辆排队情况,以便优化红绿灯的停留时间,而且单个路口在大数据系统中并不是孤立存在的点,道路交通是网状的,相邻路口间的车辆汇集也是需要考虑的,因此,多个路口对某个路口的理想权重等都需要进行复杂建模,才能解决整个风险区的交通拥堵问题。 AI技术帮助我们知道单点发生了什么事情,进而构建类似人的大脑网络,人脑认知过程如图,人脑中有许多神经元,当你的眼睛看到一张图片,一部分神经元开始反映图片的形状,一部分神经元反映图片的颜色,还有一部分神经元反映物体的名称等,这与构建交通大脑网络不谋而合。 所以,ET大脑的重中之重就是构建类人脑神经网络,从物理世界的数据孤岛收上来变成逻辑数据,规整后放到数据仓库中去,接着最重要的是构建知识模型,做到与人脑认知世界一样。比如做工业大脑时,需要得到ERP数据、机器振动、工厂环境温湿度等参数,像大脑神经元一样,一些神经元可以控制机器的角度,可以控制添加原料的配比,将这些固定的信息建立相互的联系,如同建立人的知识图谱。 因此,构建知识地图是ET大脑中关键的一步,我们不仅仅要了解机器学习算法,我们最终解决的问题不是检测精确度,而是确定某个精确度与其它数据的关系,以及如何影响最终结果。 比如帮助工厂提高产量,预测燃煤效率,燃烧效率与其中若干工序又有什么关系呢?这就是我们要构建ET大脑的过程,我们将ET大脑产品化,沉淀下来许多工具,包括机器学习平台、数据采集、数据分析、数据计算工具,在这之上就是知识图谱。 阿里在做电商、蚂蚁等时候也是运用了类似的方法,在内部构建了很大的数据中台,每天阿里系产生数据都是PB级的,这些数据都在中台上,我们将数据进行关联抽取,去建立标签体系——用户标签体系、产品标签体系、商家标签体系、位置标签体系等,每个标签体系中含有几千个标签,当天猫从业人员想做推荐,那么,推荐精确程度取决于标签复杂度。同样道理,我们在做工业大脑、城市大脑时,首先也是与客户一起建立知识图谱,基于图谱构建神经网络,才能做到实时反馈。 聚焦数据密集型产业 ET大脑聚焦在城市、企业和民生。 城市大脑 以前的交通视频检查都是由人工切换镜头来监测,屏幕眼花缭乱,工作较繁重;基于视频自动巡检如图,我们可以做视频实时分析,包括道路拥堵识别、车辆违规识别和交通违规识别等,机器可以对所有的摄像头实施24小时监管,事故发生时可以自动报警,还可以进行视频定位追踪。 杭州城市大脑如图,可以看到每天交通情况,有许许多多个点,当某个地方发生交通事故时,该点就会变色提醒,城市大脑设计了多个指标对拥堵指数进行判别,并对路口进行排名,使用户方便看到哥哥路口的状况,如果想了解更加详细的情况,可以深入点击查看甚至调出视频。 农业大脑 基于图像识别,农业大脑对玉米生长周期进行监测,我们将玉米生长周期进行分类,根据叶绿素的浓度判断玉米处在哪一个生长周期,并与正常在该生长周期的状态进行对比,从而判断是否为病态。 某企业农业大脑如图,通过农业大脑的图像分析等,对农作物的生长阶段监测、产量预测、病虫害识别等都进行了分析并得出结果。 航空大脑 当有异常情况发生时,航空大脑帮助航空公司快速做出决策。我们不仅仅要考虑机场调度网络,还要考虑航线网络,也就是不光要安排飞机停靠位置,还要考虑天上有多少架飞机正在飞以及飞机的大小,因此,航空问题相对复杂,对建立航空大脑的约束条件达上百个,有时我们会选择暴力读码,有时也会选择用上一步的变化对输入做变化,实际需要考虑事情非常多,需要逐步积累经验。 ET航空大脑价值巨大,首都机场每天有1700+航班,50秒就要给出机位分配,每天节约旅客时间达5000+小时。 目前,人工智能异常火爆,阿里只是做了一小部分事情,我们希望把企业做透、把行业做穿。只要把企业中的一个点做好,就会持续做更多事情,只要把一个行业做的多,积累更多经验,也将会做更多事情。 本文由云栖社区志愿者小组毛鹤整理编辑,程弢审核 活动相关文章 蚂蚁金服西亭:智能金融的技术挑战与方案 阿里巴巴阿外:客服全链路智能解决方案 阿里巴巴少杰:大数据处理实践 浙江大学杨洋:社交网络中的群体用户行为分析与表示学习 阿里巴巴iDST杨森:智能决策在电商平台的应用 阿里巴巴布民:图计算是生产力

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册