首页 文章 精选 留言 我的

精选列表

搜索[云端AI],共10000篇文章
优秀的个人博客,低调大师

云端高性能技术架构浅析

无论是国外的Google、Facebook、Amazon,还是国内的Baidu、Taobao等,这些高性能的服务器在处理高并发的请求时,都能快速、准确的给予应答。通过查阅资料,了解现有大型网站的技术架构,发现目前常用的技术有分层、缓存、负载均衡、数据库性能优化,分布式系统等等。接下类分别对这些技术进行简单介绍。 1 分层与服务分离 无论OSI的7层网络结构,还是计算机底层硬件与上层软件之间的分层,甚至于Web领域大家非常熟悉的MVC开发模式,分层在计算机领域无处不在。分层可以将不同的功能部件独立起来,下层为上层提供访问接口,支撑上层的功能;上层调用下层接口来完成服务。 分层也是服务器端采用的一种方法,通过将数据库、文件资源等与应用服务器分开,可以缓解服务器压力。 另外,根据业务需求的不同,将明显没有交集的业务分开,独立成不同的模块单独进行管理,也可以在很大程度上提升服务器性能。 2 缓存 缓存在计算机很多地方都有涉及,比如在内存与硬盘之间增加Cache、增加IO缓冲区来缓解速度之间的不匹配。缓存的出现主要是依据计算机中著名的二八定律。缓存的技术主要包括本地缓存、分布式缓存、CDN和反向代理。 根据二八定律,80%的操作集中在20%的数据上。网站将常用的数据缓存在本地应用服务器中,以后直接通过缓存中的数据来响应用户的请求,而不用再去计算。这样就可以减少响应时间。 分布式缓存相比本地缓存速度要慢,因为应用服务器要访问专门的缓存服务器来获取数据,但是应用服务器主要用于处理请求,其自身内存有限,如果缓存大量数据,应用程序的运行速度将受到明显影响。因此很多大型网站都使用远程分布式缓存,部署大内存的服务器作为专门的缓存服务器。 缓存的另外两种表现形式是CDN和反向代理。不同的地方在于,CDN部署在网络提供商(比如电信、移动、联通等)的机房,用户在请求网站服务时,可以直接从网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户的请求到中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中有相应资源的缓存,就将其直接返回给用户,而不用再去请求应用服务器。 3 负载均衡 负载均衡的原理就是去中心化。当用户并发请求量巨大时,如果将所有的请求都交给一个服务器去处理,很可能造成服务器宕机,即使能够正确响应,响应时间也可能会比较长,给用户造成不好的体验。 大型网站都是将一个域名绑定不同的服务器IP,这样表面上好像只有一台服务器在提供服务,实际则是一个服务器集群在提供相同的服务。负载均衡器接收所有用户的请求,再根据每台应用服务器正在处理的请求数量来对请求进行分配。这样就能在很大程度上提高系统的性能,同时扩展性也得到很大提升——当某台服务器宕机时,直接替换就可以,其它服务器继续相应用户请求;当用户请求量超过预定峰值时,也可以通过实时增加服务器来缓解压力。 4 数据库性能优化 使用缓存后,大部分的数据操作不需要通过数据库即可完成。但是仍有一部分读操作(缓存访问不命中,缓存过期)和全部的写操作需要访问数据库,在网站的用户达到一定规模时,数据库因为负载压力过高而成为网站的瓶颈。因而需要对数据库进行优化,常用的技术主要包括读写分离、结合非关系型数据库使用、分布式数据库等。 一般情况下,数据库读操作所需要的时间比写操作的要少很多,通过将数据库的读写操作分离可以明显改善数据库性能。目前很多大型网站都配置数据库主从关系,主数据库用于写操作并将数据同步更新到从数据库上,从数据库只负责读操作。例如,新浪云计算平台(SAE)给用户的数据库就进行了主从配置。 同时,可以利用非关系型数据库和搜索引擎对数据检索的优势,来减轻应用服务器直接访问关系型数据库的压力。 当对业务进行分离后,可以根据业务所涉及的数据,将数据库进行分库部署在不同的服务器上。 5 冗余 网站需要7x24小时连续运行,但是服务器随时可能出现故障,特别是服务器规模比较大时,出现某台服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可以继续服务,不丢失数据,就需要一定程度的服务器冗余运行,数据冗余备份,这样当某台服务器宕机时,可以将其上的服务和数据转移到其它机器上继续运行。 接下来,我们主要针对缓存中的Memcached技术进行介绍。 1 Memcached 1.1 Memcached简介 Memcached是一个高性能的分布式对象缓存系统,用于动态Web应用,以减轻数据库负载[1]。它通过在内存中缓存数据和对象来减少应用程序读取数据库的次数,从而提高网站的性能。如图1是Memcached在网站中的位置示意图。 图1 Memcached位置示意图 Memcached以键值对的形式将数据(或对象)缓存在内存中,虽然使用到了多个服务节点,但是和一般分布式缓存系统不同的是,每一份数据在Memcached中只存在一份,每个Memcached服务节点之间相互不可见。因此,Memcached中每份数据的键值是唯一的。 简而言之,Memcached类似于一个典型的非关系型存储系统,可以归入基于内容的键值对存储类型[2]。 1.2 Memcached工作原理 当高并发的外部请求访问服务器时,负载均衡服务器会根据各应用服务器的使用情况进行分配转发,如果需要对数据进行读取,应用服务器会按照一定的Hash算法计算键值的结果,并根据计算结果访问Memcached的某一个服务节点,服务节点再次计算键值的第二次Hash值,再根据计算结果对数据进行读取,如果缓存中有数据则直接返回给应用,否则需要从数据库获取数据,同时将获取到的数据写入到Memcached中[3]。 图2 Memcached工作原理 2 性能分析 在本机上安装Memcached,客户端使用Memcached提供的接口进行数据的存储与访问,并与直接通过MySQL获取数据的方式进行对比。 2.1 Memcached安装 由于Memcached主要用于服务器端,而服务器端操作系统大多用Linux,因此网上多数教程是关于在Linux上安装使用Memcached的。在Windows上安装更加简单,只需找到对应操作系统的版本即可[4]。 安装Memcached后,打开服务即可使用相应功能,Memcached默认监听11211端口,如果是在本机上,直接使用127.0.0.1:11211就可以访问了,这点和MySQL非常类似。 Memcached提供了很多高级语言的接口,可以根据这些接口来完成对数据的存储与访问。 2.2 Memcached和MySQL性能比较 为了比较使用Memcached前后访问数据性能的情况,进行以下模拟实验。 硬件条件: CPU:Intel Core 2.60GHz; 内存:2GB; 软件条件: 操作系统:Window 64; Memcached最大内存:64MB; Memcached最大连接数:1024。 MySQL中共有29120条记录,使用多线程模拟用户的并发访问,每个用户请求100次数据读取。表1是在用户数量为N的条件下,测试所有请求都处理完所用时间T的结果。 表1 测试结果 三种方法说明:MySQL表示所有的数据请求直接通过访问数据库返回;随机Mem表示在增加了Memcached缓存后,对于每个用户的100次请求,数据之间没有任何关系,完全随机;二八定律Mem表示用户的请求遵循二八定律,就是说平均100次请求中,有比较多的次数访问的是相同数据,这个可以通过程序模拟,在访问时控制相应次数访问相同的数据。 图3、图4分别对应表1的两种数据表示。 图3 柱状图显示结果 图4 折线显示结果 由于在完全随机访问的条件下,数据的命中率非常低(几乎为0),每次请求都需要从数据库中获取,同时还要将请求到的数据保存在缓存中,因此效率比直接从数据库中获取还要低。但是当用户多次请求相同的数据是,使用Memcached 明显比直接从MySQL中获取效率要高很多。 整个测试过程还存在着一些不足之处: 受实际条件限制,Memcached服务节点数只有1个; 另外,数据库中数据量级也不是非常大; 没有测试数据写入的情况 3 关键问题 通过上述分析可知,Memcached在一些条件下对提升数据访问效率有很大作用。对于那些不常变动访问频率又非常高的数据,将其放在缓存中,可以很好的缓解数据库的压力,进而提升系统性能。但同时,Memcached自身也还存在着一些不足之处: 由于Memcached是将数据缓存在内存中,当出现断电情况时,数据将立即消失; 所有数据在Memcached中只保存一份,因此可靠性不是很高,一旦某台服务节点出现故障,相应的数据将丢失; Memcached在设计之初每个key的value最大是1MB,随着目前数据量的快速增长,缓存数据量大的文件,比如音频、视频等有很大不足。 本文作者:佚名 来源:51CTO

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

安防监控将飘向云端

在高速运转的城市,视频监控在我们的生活中发挥着越来越重要的作用,让我们的安全多了一层保障。近年来,原有的模拟视频监控及模数混合组网的视频监控应用模式正在逐步被IP化、全高清的网络视频监控所取代,随着平安城市、智慧城市项目的建设发展,信息化建设对视频监控的存储与应用提出了新的要求。数据格式的升级与监控设备的增加,给传统视频监控存储带来压力可想而知。需求推动创新和发展,云存储的在安防监控领域的应用让问题迎刃而解。 2014年全球摄像头出货量达到5646万台,从社区、楼宇到金融银行、再从交通系统到大型平安城市的视频监控系统,我们几乎每时每刻都生活在摄像头的监控之下,以采用标准H.264压缩技术的高清网络摄像机为例,一部1080P高清摄像机,码流大约是8Mbps,24小时录像产生的数据量为84GB,30天录像数据量为2520GB,一年录像数据量为30TB,而全球监控设备产生的图像每天产生的视频监控数据量达160PB。而随着安防视频监控系统技术的进步和规模的增长对存储的要求也在发生深刻的变化,对存储系统的容量、扩展性、性价比、性能、管理性、稳定性等都提出了新的要求,传统的存储方式已经不能满足要求。于是云存储开始在视频监控行业落地生根遍地开花,尽管实现的技术路线不尽相同,但是安防行业对云存储的特质和能力已有了较为普遍的认识。 云存储使网络中各种不同类型的存储设备能够进行有效的结合,从而形成比以往强大的存储能力,更好的实现性能与容量的线性扩展,从而让IT领域中一直追求的"海量存储"变为可能。云存储管理可以实现自动化和智能化,所有的存储资源被整合在一起,客户看到的是单一存储空间;提高了存储效率,通过虚拟化技术可以自动重新分配数据,提高了存储空间的利用率,同时能够实现规模效应和弹性扩展,降低运营成本,避免资源浪费。 从云存储设备的解决方案上看,它并不是视频存储的简单堆积,而是作为视频数据存储与应用,能优化视频数据的管理,云技术还可以很好的实现智能视频的分析功能。尤其对于平安城市这样的超大规模监控系统来说,单纯的人工分析已经无法对每一个检测点进行有效的监控,因而智能系统分析则在这种管理中发挥着不可替代的作用。云存储不单纯依赖硬件,而是采用软件、硬件结合的多重可靠性设计,不会因硬件或是系统的问题造成数据丢失,在数据写入方式上,云存储将传统的RAID级别冗余提高到节点级冗余,支持故障自动恢复和负载均衡,更有效的保障数据安全性及数据完整性,所以在数据的安全性上云存储更是无可挑剔。 目前云存储已成为安防性能提升的最主要方式,甚至在很长一段时间里,是安防系统性能提升的唯一方式。怎样才能让躺在存储系统中宝贵的海量视频数据资源迸发出耀眼的光芒,选择一家成熟稳定的厂商提供解决方案就显得尤为重要。在众多的云存储厂商中,初志科技成立以来一直专注于云存储行业,特别是公安监控行业云存储需求,已经为多个地市级公安系统提供云存储解决方案。作为云存储专业委员会的副主任委员单位、公安行业云存储标准起草单位,初志科技对公安行业存储应用更为了解,能提供更完美的解决方案。从地区的派出所到市级的公安系统所需的网络视频监控系统,初志科技自主开发的云存储一体机系列的产品能够全方位覆盖,针对不同级别的安防要求,有多套解决方案。与同类产品相比,容量更大,性能更高,初志一体机系列还具备完善的图形化管理界面,云存储管理形象、直观、便捷,为客户提供更好的操作体验。 本文转自d1net(转载)

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

云端干货|如何使用Docker制作镜像

上一讲,我们引入了Docker的学习环境,并且运行了一个 “Hello world”。本期内容,我们将开始制作镜像,并且把它运行起来。 基于云原生开发的云资源优化服务 SpotMax 无缝集成了k8s、Docker等工具,可便捷实现容器的管理与发布,并实现用云降本增效。==>>​​戳链接了解 SpotMax 准备代码 首先我们需要准备一份简单的代码。前往SpotMax文档中心(Welcome - Spotmax文档中心),打开学习文档,我们已经为你准备好了代码。它是一个简单的http服务代码,采用Node app.js的语法: ·如果你的本地有Node环境,也可以运行测试一下 note app .js。 在这里,你需要将它存到 app.js这个文件里面: ·curl一下,它就会打开一个端口8080,并显示你的机器名: ·在下方我们可以看到“安装Node环境”,你可以根据自己的需求,选择是否安装这个环境: 现在,让我们回到上述的页面,复制我们为你提供的代码,打开Docker Playground开始玩耍~ 制作镜像与运行 在Docker Playground中,我们touch一个代码,把它放在 app.js文件里面,将上述复制的代码粘贴过来,保存、退出。如此,代码就准备好了: 因为在这里是Node的环境,我们要需要进行打包。在文档中心找到“构建与运行你的第一个应用”,复制代码: 并放在Dockerfile中,保存、退出。 现在,我们已经准备好了Docker file,可以开始运行指令了。我们要制作一些自己的Docker build,在文档中心复制粘贴代码docker build-t: 这里我们起个名字叫Kubia。请注意kubia后面需要有一点“.”这个点是代表“当前目录”。因为“当前目录”下面包括Dockerfile,以及 app.js。 如下图所示,现在已经成功完成build,将我们这个 app.js做成了一个镜像。 完成后,让我们来看一下自己的镜像长什么样子? 在文档中心复制docker images命令,粘贴到终端并运行。 如下便可见镜像: 现在,我们已经build好了Kubia。接下来我们去运行一下容器。 在文档中心找到下图所示的docker run指令,粘贴到终端并运行: 接下来,输入docker ps,我们就可以看到刚才制作的镜像 app.js已经开始运行了,同时,可以看到node环境也已经被打包进去、端口已经打开: 现在我们来试着访问一下端口。输入curl http://local host:8080/ 并运行——可以看到成功显示了You’ve hit 96d8883f7c15 (即当前机器的Host)。 一个简单的镜像就制作并运行完成啦! 想要了解更多?“扫码关注“云上说禅”吧

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

对比云端NoSQL数据库类型

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 对于社交网络、流媒体内容、新闻发布和零售,全球可扩展在线服务的出现极大地改变了对应用基础设施和软件架构的要求。最重要的转变之一是系统存储、整理和访问数据的方式。 传统的关系数据库管理系统(RDBMS)(例如甲骨文数据库)不太适合Web应用程序,因为这些应用程序需要分布式横向扩展群集基础架构。NoSQL数据库更适合松散耦合的设计,其中应用程序数据和可执行代码分布在多个机器和数据中心。基础设施即服务(IaaS)提供商的根源是在开源社区和云原生开发,他们已经构建了各种NoSQL数据库类型来适应不同的数据和用例。 优点和缺点 由于Web应用程序和服务是NoSQL开发背后的主要驱动因素,因此,与RDBMS相比,各种类型的NoSQL数据库都更具优势。这些优势包括以下: 可处理各种数据类型; 更高的性能和更低的延迟性; 非常适合非结构化数据,例如文本、图像、音频和视频; 更适合水平扩展的松耦合系统; 非常适合时间序列或其他流数据,例如事件日志和物联网数据; 可处理不同形式的NoSQL系统和非结构化数据模型的可用性; 可访问广泛的开源或低成本部署,比复杂的RDBMS更便宜。 然而,这些好处是有代价的。例如,RDBMS系统通过ACID模型确保更直接的一致性和可靠性,ACID模型是指原子性、一致性、隔离性和持久性。而NoSQL数据库则遵循BASE模型:基本可用性、软状态和最终一致性。此外,这些非关系数据库缺乏内置机制来检查数据完整性;它必须在外部代码中完成。***,通常不支持复杂的SQL操作,例如复合选择语句或表连接。 NoSQL数据库类别 NoSQL并不是特定类型的数据库,而是具有几种变体的数据库类别: 键值存储:也称为哈希表,此存储范例整理数据为一列记录,这些记录按键或哈希值索引,指向一个或多个数据对象或记录。这类似于字典,每个键可以有不同数量的值,而不是固定长度。 内存缓存:这是完全适合系统RAM的一种键值存储。通过消除仅为处理特定应用程序功能或情景而扩展整个数据库的需要,这可加速性能并降低成本。 文档存储:虽然它是键值数据库的子集,但文档存储中的值遵循预定义的层级结构,该结构嵌入有关存储内容的元数据。文档存储通常以文本格式编码,例如XML、YAML或JSON,或二进制变体,例如Microsoft Office文件或PDF。 搜索数据库:一种专用文档存储,其中文档索引可以分片并分布在多个节点,以提供大量可扩展性,以加速特定条目的检索。 基于列的存储:此存储按列而不是行整理数据。列被分组为相关数据系列,可共同访问。 图形数据库:这种类型的数据库不采用通用行列结构,而是支持条目集合及其相互关系。 NoSQL数据库对比 随着云基础架构成为部署Web应用程序的流行选择,AWS、微软和Google Cloud纷纷构建了NoSQL服务和产品,以更好地适应不同的数据类型和用例。每种产品的具体细节会有所不同,下表展示了每种NoSQL数据库产品的情况: 正如NoSQL数据库比较表所示,每种NoSQL数据库类型都有几种流行的开源和商业产品。每个第三方选项都具有特定的功能和优势,而云替代方案不一定提供。例如,MongoDB可以进行配置,使复制的数据立即与读取保持一致,而不是最终的一致性。 但是,最重要的区别是部署模型:私有管理(内部部署或托管基础架构)与云服务。这里取决于企业是否更喜欢自我管理、高度可配置和受控制的软件,还是托管云服务,以消除前期资本支出和持续的基础架构管理开销。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册