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

免费开网店app深圳做seo有哪些公司

免费开网店app,深圳做seo有哪些公司,apache多网站配置,怀化网站定制使用Seastar进行异步(Asynchronout)编程 介绍 我们在本文中介绍的Seastar#xff0c;是一个用于在现代多核机器上#xff0c;编写高效复杂的服务器应用程序的C库。 传统上#xff0c;用于编写服务器应用程序的编程语言库和框架已经分为两个不同的阵营#xff1a;那些注重…使用Seastar进行异步(Asynchronout)编程 介绍 我们在本文中介绍的Seastar是一个用于在现代多核机器上编写高效复杂的服务器应用程序的C库。 传统上用于编写服务器应用程序的编程语言库和框架已经分为两个不同的阵营那些注重效率的阵营和侧重于复杂性的阵营。一些框架是非常高效的但是只允许构建简单的应用程序例如DPDK允许单独处理数据包的应用程序而其他框架允许构建极其复杂的应用程序代价是运行时效率。 Seastar是我们努力获得两全其美的方法创建一个允许构建高度复杂的服务器应用程序但实现最佳性能的库。 Scylladb第一个使用了Seastar它是对Apache Cassandra的重写。 Cassandra是一个非常复杂的应用程序然而通过Seastar我们能够让吞吐量提高10倍同时显著的降低一致性的延迟。 Seastar提供了一个完整的异步编程框架它使用了 futrues 和 continuations 的概念来统一表示和处理每种类型的异步事件包括网络IO磁盘IO以及其他事件的复杂事件。 由于现代多核和多插槽机器在核心之间共享数据原子指令高速缓存行反弹和内存隔离具有很高的代价Seastar程序使用无共享编程模型即可用内存隔离每个核心都在自己的内存部分进行数据处理内核之间的通信通过显式的消息传递当然这发生在使用SMP的共享内存硬件的情况下 异步编程 用于网络协议的服务器如经典的HTTPWeb或SMTP电子邮件服务器处理是并行的多个客户端并行发送请求在完成处理一个请求之前我们无法开始处理下一个请求因为各种原因一个请求可能并经常需要阻塞磁盘IO例如一个完整的TCP窗口即一个慢速连接甚至是持有非活跃连接的客户端。服务器需要处理其他连接也是如此。 经典网络服务器如InetdApache Httpd和Sendmail处理这种并行连接所采用的最直接的方法是对每个连接使用单独的操作系统进程。这种技术经过多年的发展以提高其性能刚开始使用一个新的进程来处理每个新的连接;后来使用进程池每一个新的连接都被分配到池中的一进程。最后进程被线程所取代。但是所有这些实现背后的共同思想是在每一个时刻每个进程只处理一个连接。因此服务器代码可以自由使用带阻塞的系统调用例如读取或写入连接或者从磁盘读取数据如果这个过程阻塞了也没关系因为我们有许多额外的进程可以处理其他连接。 对每个连接使用一个进程或一个线程的服务器编程称为同步编程因为代码是线性执行的在上一行完成后下一行代码开始运行。例如代码可能会从套接字读取请求解析请求然后零碎地从磁盘读取文件并将其写回套接字。这样的代码很容易编写就像传统的非并行程序一样。事实上甚至可以运行一个外部的非并行程序来处理每个请求 - 例如Apache HTTPd如何运行“CGI”程序生成第一个动态Web页面。 注意尽管同步服务器应用程序是以线性非并行的方式编写的但内核可以帮助确保所有事情都是并行发生的并且可以充分利用机器的资源CPU磁盘和网络。除了进程并行我们有多个进程并行处理多个连接之外内核甚至可以并行化一个单独连接的工作 - 例如处理一个未完成的磁盘请求例如从磁盘文件中读取并行处理网络连接发送缓冲区中尚未发送的数据并缓冲新接收的数据直到应用程序准备好读取它。 但是同步的每个连接的过程服务器编程并不是没有缺点或成本的。服务器作者慢慢地但是确定地意识到开始一个新的进程是缓慢的上下文切换很慢每个进程都伴随着大量的开销最显着的是它的堆栈大小。服务器和内核作者努力减轻这些开销他们从进程切换到线程从创建新线程到线程池降低了每个线程的默认堆栈大小增加了虚拟内存大小以允许部分利用的堆栈。但是同步设计的服务器的性能并不理想随着并发连接数量的增长服务器的性能也不尽人意。 1999年Dan Kigel普及了“C10K问题”需要一台服务器来高效地处理10,000个并发连接其中大部分是缓慢甚至不活动的。 该解决方案在接下来的十年中变得流行它放弃了舒适但低效的同步服务器设计转而采用新型服务器设计 - 异步服务器或事件驱动服务器。事件驱动的服务器只有一个线程或者更准确地说每个CPU有一个线程。这个单线程运行一个紧密的循环在每次迭代时使用poll()或更高效的epoll检查许多打开文件描述符例如套接字上的新事件。例如一个事件可以是一个套接字变得可读新的数据已经从远端到达或变得可写我们可以在这个连接上发送更多的数据。应用程序通过做一些非阻塞操作来处理这个事件修改一个或多个文件描述符并且保持它对这个连接状态的知识。 然而异步服务器应用程序的作者面临着今天仍面临的两大挑战 * 复杂性编写简单的异步服务器非常简单。但是编写一个复杂的异步服务器是非常困难的。单个连接的处理而不是一个简单易读的函数调用现在涉及大量的小型回调函数和一个复杂的状态机以记住每个事件发生时需要调用哪个函数。 * 非阻塞每个内核只有一个线程对于服务器应用程序性能很重要因为上下文切换很慢。但是如果我们每个内核只有一个线程则事件处理函数不能阻塞否则内核将保持空闲状态。但是一些现有的编程语言和框架让服务器作者别无选择只能使用阻塞函数因此也不能使用多线程。例如Cassandra被编写为一个异步服务器应用程序;但是因为磁盘I/O是用mmaped文件实现的所以在访问时可以不受控制地阻塞整个线程它们被迫在每个CPU上运行多个线程。 而且当需要尽可能好的性能时服务器应用程序及其编程框架不得不考虑以下因素 * 现代机器现代机器与十年前的机器非常不同。它们具有许多内核和深层内存层次结构从L1缓存到NUMA这些有利于某些编程实践却带来一些问题不可扩展的编程实践如锁定会破坏许多内核的性能;共享内存和无锁同步原语是可用的即原子操作和内存排序的屏障但是比仅涉及单个内核的缓存中的数据的操作慢得多并且也阻止应用程序扩展到多个内核。 * 编程语言诸如JavaJavascript和类似的“现代”语言的高级语言是很方便的但是每一种语言都有自己的一套假设与上面列出的要求相冲突。这些旨在可移植的语言也使编程人员无法控制关键代码的性能。为了获得最佳的性能我们需要一种编程语言使程序员能够完全控制零运行时间的开销另一方面 编译时代码的复杂性和优化。 Seastar是一个用于编写异步服务器应用程序的框架旨在解决上述所有四个难题这是一个用于编写复杂的异步应用程序包括网络和磁盘I / O的框架。该框架的高效运行途径完全是单线程每核心并可扩展到多个内核并最小化在内核之间使用昂贵的内存共享。它是一个C 14库为用户提供了复杂的编译时功能和对性能的全面控制而无需运行时间的开销。 Seastar Seastar是一个事件驱动的框架允许您以相对直接的方式编写非阻塞的异步代码。它的API基于 futures(c11新特性)。 Seastar利用以下概念来实现卓越的性能 * Cooperative micro-task scheduler合作的微任务调度器每个核心运行一个合作任务调度器而不是运行线程。每个任务通常都是非常轻量级的只要处理最后一次I/O操作的结果并提交一个新的结果就可以运行。 * Share-nothing SMP architecture无共享SMP架构每个内核独立于SMP系统中的其他的内核运行。内存数据结构和CPU时间不共享;相反核心间通信使用显示的消息传递。 Seastar core 通常被称为 shard。 TODO更多在资料访问 scylladb/seastar * Future based APIs基于future的APIfutures允许您提交I/O操作并链接完成I/O操作时要执行的任务。这是很容易并行运行多个I/O操作。例如在响应TCP连接请求时可以发出多个磁盘I/O请求或发送相同的系统上的消息给其他核或者发送请求到集群中的其他节点等待一些或全部结果完成汇总结果并发送响应。 * Share-nothing TCP stack无共享TCP堆栈虽然Seastar可以使用主机操作系统的TCP堆栈但它还提供了自己的高性能TCP/IP堆栈该堆栈构建在任务调度器和无共享架构之上。堆栈在两个方向上提供零拷贝您可以直接从TCP堆栈的缓冲区处理数据并将您自己的数据结构的内容作为消息的一部分发送而不会产生副本。 * DMA-based storage APIs基于DMA的存储API与网络堆栈一样Seastar提供零拷贝存储API允许您将数据存入存储设备。 本教程面向已经熟悉C 语言的开发人员并将介绍如何使用Seastar创建新的应用程序。 参考链接 scylladb/seastar 异步编程框架Seastar介绍
http://www.pierceye.com/news/368478/

相关文章:

  • 建筑网站推荐wordpress hook api
  • 昆明做网站公司哪家好安卓优化
  • 魔站建站系统哪家好国内知名的包装设计公司
  • 福田区住房和建设局网站早晨设计 做网站设计吗
  • 郑州轨道网站开发手机怎么做动漫微电影网站
  • vscode网站开发昆明做网站找启搜网络
  • 如何评估网站虚拟商品交易网站建设
  • 太原网站优化教程pycharm做网站
  • 哪些网站做英语比较好免费下载模板ppt
  • 网站建设运营计划书wordpress 维护页面
  • 襄阳定制型网站开发前端网页设计招聘
  • 网站备案报价深圳市住房和建设局官网首页
  • 宁波江北区网站推广联系方式做一个论坛网站要多少钱
  • 网站制作无锡台州建设工程网站
  • 云网站 制作如何做一个网页
  • 微信免费建站新建网站站点的
  • 云网站制作的流程世界500强企业排名
  • 巨久科技网站建设做出个人网站什么水平
  • 做外贸网站怎么做做网站3个月
  • 县局网站建设招标网站建设人文类
  • 网站开发亿玛酷给力5上海logo在线制作
  • 网站重新备案搞个网站需要多少钱
  • 海南微信网站制作平台网络计划的优化
  • 域名的正确书写格式自动seo优化
  • 怎样在网站做友情链接网页什么设计
  • 做seo网站营销推广南宁建设职业技术学院招聘信息网站
  • 网站建设全网推广小程序手机网站怎么优化
  • wordpress 网站logowin系统没有wordpress
  • 玉山电商网站建设东莞市建设规划局网站
  • 网站建设运营公司企业特色c2c的代表性的电商平台