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

企业手机网站建设机构me域名免费注册

企业手机网站建设机构,me域名免费注册,游戏怎么开发,301不同类型网站1. 背景随着公司业务的发展#xff0c;核心服务流量越来越大#xff0c;使用到的资源也越来越多。在微服务架构体系中#xff0c;大部分的业务是基于Java 语言实现的#xff0c;受限于Java 的线程实现#xff0c;一个Java 线程映射到一个kernel 线程#xff0c;造成了高并… 1. 背景随着公司业务的发展核心服务流量越来越大使用到的资源也越来越多。在微服务架构体系中大部分的业务是基于Java 语言实现的受限于Java 的线程实现一个Java 线程映射到一个kernel 线程造成了高并发场景下线程资源的极大浪费线程成为提高系统并发和吞吐量的瓶颈。在微服务架构下使用同步编程模式时不仅造成了资源的极大浪费并且在流量发生激增波动的时候受制于系统资源而无法快速的扩容。本文将探索服务异步化在并发、吞吐量方面对系统带来的提升。2. 如何快速提高服务吞吐量首先以微服务架构中的RPC 服务调用举例测试和探索在微服务架构中异步架构如何提高服务的吞吐量和并发。ESA Stack 是OPPO 自研的基础框架技术栈ESA RPC 是自研的RPC 框架。本节测试服务我们使用ESA RPC 搭建。关于ESA RPC的详情可以参考我们之前发布的文章《Dubbo协议解析及ESA RPC实践》。2.1 服务架构下图所示为测试环境架构。其中Service A 既是服务端也是客户端它模拟了生产环境中大部分服务的角色。我们对Service A 分别采用同步模型和纯异步模型进行压测其中纯异步模型包含了客户端、服务端逻辑的异步处理。Service B 模拟一个耗时为N ms 的下游服务为Service A 的调用提供固定的延时响应。测试服务器的配置为8 核16G千兆网卡。2.2 同步异步模型对比测试场景1并发压测客户端200~8000服务耗时50ms分别对同步和异步架构进行压测对比TPS、服务耗时、CPU 上下文切换同步模式下线程数和并发客户端相同异步模式下使用框架默认的200 线程。测试数据如下。测试场景2并发压测客户端8000服务耗时50~500ms分别对同步和异步模式进行压测对比TPS、服务耗时、CPU 上下文切换同步模式下服务端8000 线程异步模式下使用框架默认的200 线程。2.3 服务扩展性对比并发指服务瞬时同时处理的任务数(包含处于IO 等待状态的任务)。服务端设置业务处理线程200那么同步模式下能提供的并发为200纯异步模式下服务并发不受线程限制IO密集型服务尤其收益。在系统流量突增的情景下异步模式具有更强的可扩展性(Scalability)。2.4 结论根据上面的测试数据可以做出以下对比同步模式线程数与并发成正比并发越高对线程的消耗越多异步模式提高并发不需要线程增加同步模式系统Context Switch 次数随并发提高而快速增加异步模式系统Context Switch 次数明显小于同步模式同步模式并发超过某个临界点后服务耗时快速上升系统吞吐量急剧下降异步模式吞吐量随着并发增加服务耗时上升速度明显低于同步模式从而得出以下结论可以通过异步化微服务架构提高相同资源配置下的服务吞吐量随着下游平均耗时的增加异步化带来的吞吐和耗时的提升作用减小线程资源有限(内核、内存)不能无限增加来提高并发能力异步化能极大提高系统瞬时并发能力(Scalability)结论分析高并发下同步模型大量线程在内核态度/用户态、不同CPU 核之间进行切换Context Switch 增加系统性能下降下游平均耗时增加时系统CPU 繁忙程度降低Context Switch 对性能系统影响下降3. 异步模型探索3.1 阻塞与非阻塞在操作系统中线程是CPU 调度的基本单位阻塞调用是指发起调用后线程进入阻塞状态(让出CPU)直到获得结果或异常返回非阻塞调用是指不等待结果调用不阻塞线程直接返回。3.2 同步与异步同步和异步关注的是消息通信机制同步就是在发起调用后就得到返回结果(未必是完整结果)也就是由调用者主动等待结果异步则是调用在发出之后直接返回通过信号通知、回调函数处理来通知结果。3.3 四种IO 模型非IO 系统调用层面 阻塞/非阻塞和同步/异步基本是同义词在IO 系统调用层面同步/异步和阻塞/非阻塞有以下组合同步阻塞调用线程同步等待阻塞调用结果同步非阻塞调用线程通过轮训获取非阻塞调用结果异步阻塞调用IO 事件阻塞IO 操作不阻塞异步非阻塞调用调用立即返回信号/回调处理结果我们通过一个简单的客户端来介绍四种IO 模型的代码写法同步阻塞IO非同步阻塞IO多路复用IOAsynchnorous IO对四中IO 模型有以下的对比同步阻塞式IO 模型编程简单但线程阻塞资源利用率低同步非阻塞式IO 模型需要轮训CPU浪费资源异步非阻塞AIO 模型不阻塞线程使用回调方式处理数据但是编程难度高多路复用IO 模型能够实现异步非阻塞IO且编程简单方便实现同步和异步调用因此成为RPC 框架的首选。4. 全链路异步编程指南4.1 全链路组成及现状微服务架构下的全链路包含了网关层、WEB 服务、RPC 服务、数据层等。目前公司的网关层已经实现了纯异步架构Web 框架和RPC 框架支持纯异步编程数据存储层目前异步方案还不成熟。4.2 网关异步化网关层由于其特殊性不需要访问业务数据库只做协议转换和流量转发目前已经使用了纯异步的架构其IO 密集型的特点特别适合纯异步的架构可以极大的节省资源。4.3 Web 服务异步化Web 服务作为微服务体系内的重要组成服务节点众多传统的Web 服务框架SpringMVC 不支持纯异步化编程OPPO 自研Web 框架Restlight 支持纯异步编程且性能远超SpringMVC。下面是性能对比及Restlight 异步实践。Restlight 框架异步编程实践通过Controller 方法返回值区分同步和异步调用且支持三种异步调用方式CompletableFuture、ListenableFuture(Guava)、Future(Netty)。4.4 RPC 调用异步化RPC 调用等待下游response 返回时线程不应处于block 状态作为微服务架构中数据流量最大的一部分RPC 调用异步化的收益巨大目前ESA RPC 已经具备了纯异步化的能力提供RPC 调用的服务一般既是客户端也是服务端因此包含了客户端异步调用能力和服务端异步处理能力为了兼容存量接口ESA RPC 既支持CompletableFuture 也支持普通返回值的接口。客户端异步化实践底层使用异步非阻塞IO 收发网路数据包使用CompletableFUture传递IO 事件以实现响应式编程客户端不被RPC 调用阻塞可继续调用其他服务。接口返回CompletableFuture 来实现异步调用普通接口使用ESARpcContext::asyncCall 实现异步调用服务端异步化实践通过服务端异步功能返回CompletableFuture 给框架以释放Biz 线程自定义线程池或者IO 线程池收到下游response 后完成返回给框架的Future。接口定义返回CompletableFuture 来实现异步调用普通接口通过ESARpcContext::startAsync 开启服务端异步4.5 存储层异步化数据操作是每个请求调用链的终点纯异步的架构必须使用异步存储层客户端目前OPPO 没有自研的存储层异步客户端但业界开源方案欣欣向荣数据库Vert.x JDBC 客户端RedisRedisson、LettuceQueue基本都支持异步调用4.6 纯异步与伪异步异步调用目的在于防止当前业务线程被阻塞。伪异步将任务包装为Runnable 放入另一个线程执行并等待当前Biz 线程不阻塞纯异步为响应式编程模型通过IO 实践驱动任务完成。他们的区别不在于是否将请求放入另一个线程池执行而在于是否有线程阻塞等待Response。5. 异步化未来发展5.1 异步化带来的问题相比于同步模型异步模型存在以下问题代码可读性和可维护性较差可能出现Callback Hell框架SDK 变得复杂使用门槛增加业务可能不清楚代码逻辑执行线程大量的ThreadLocal 需要手动export/import简单来说异步编程就是以编程的简单性(simplity)来交换性能(performance)。5.2 使用协程实现异步非阻塞目前在其他语言中Erlang、Go、Kotlin 等都支持了协程使用协程的好处是在语言层面支持了异步调用业务代码可以使用同步的写法达到异步的效果线程不被阻塞避免大量的CPU 上下文切换提升系统的性能。目前Java 对协程的支持也在进行中 Project Loom 就是Java 的协程项目http://openjdk.java.net/projects/loom/。主要有以下几个概念Fiber轻量级线程(用户态线程)基于Continuation 实现Continuation指令执行单元 阻塞时调用Continuation::yield 恢复时调用Continuation::runScheduler用户态Fiber 调度器(ForkJoinPool)使用有限Workers 线程执行任意数量Fibers开发者可以使用 Fiber 来执行业务代码块当遇到LockSupport::park、socket io 等阻塞调用时Fiber 中的代码单元执行会被阻塞但是底层的线程并不会被阻塞。由此达到了开发同步模式代码运行时达到异步执行的目的。未来ESAStack服务框架会支持协程。目前 Restlight框架已经支持协程并在内部开始试用ESARPC也有支持协程的计划。框架提供的服务线程使用 Fiber 执行业务逻辑业务实现中数据库请求、下游服务调用均在 Fiber 之中执行 其包含的 IO 等阻塞调用只挂起 Fiber 而不阻塞所在线程从而避免了过多的上下文切换提升 了吞吐量达到了和异步模式一样的效果。☆ END ☆招聘信息OPPO互联网基础技术团队招聘一大波岗位涵盖C、Go、OpenJDK、Java、DevOps、Android、ElasticSearch等多个方向请点击这里查看详细信息及JD。你可能还喜欢OPPO自研ESA DataFlow架构与实践Dubbo协议解析与ESA RPC实践自研代码审查系统火眼Code Review实践OPPO异地多活实践——缓存篇更多技术干货扫码关注OPPO互联网技术 我就知道你“在看”
http://www.pierceye.com/news/526202/

相关文章:

  • wordpress the7.6搜索引擎优化工作原理的先后顺序
  • 淘宝不允许 网站建设微网站如何做宣传
  • 海西高端网站建设价格怎样开通微信小商店
  • 学校校园网站建设方案南宁有做门户网站的公司吗
  • 一般电商都是在哪些网站上做wordpress 获取所有子页面
  • 长沙岳麓区网站开发网址大全首页
  • 学网站建设难不难专业网页美工招聘
  • 网站制作的公司有哪些四川成都有什么好玩的
  • 网站做wanzhihou专门做课件的网站
  • 如何做app网站中国建筑第八工程局有限公司
  • 网站设计素材网站cpa个人网站怎么做
  • 做徽标的网站做软件去哪个网站
  • 网站初始开发的步骤自己做的网站有排名吗
  • 山东建设厅官方网站一级建造师有什么网站可以做代理的
  • 哪个网站公司做的好百科网站推广
  • 网站首页做很多个关键词做羊水亲子鉴定网站
  • 漳州 做网站东昌府区住房和城乡建设局网站
  • 网站前台首页无法显示济南市网站
  • c2c网站开发毕业设计东莞网站营销公司
  • 网站维护企业wordpress数字分页
  • 怎么判断一个网站做的好不好discuz 企业网站
  • 编程入门自学网站中国室内设计网站排名
  • 北京房山网站建设产品更新培训如何用手机编程游戏
  • 重庆城乡建设网站神马搜索seo优化排名
  • 北京响应式网站制作公司一个网站的建设流程有哪些资料
  • 专做淘宝的网站全部网站
  • 济南网站app开发的相册网站建设目的
  • 哈尔滨网站优化推广公司wordpress引用js插件
  • 网站优化软件排名器制作文字图片
  • 广州十大网站建设怎么做网站的301