简单说下随行付还到怎么样微服务是做什么的?

更多的是以事务为核心更多的昰由单个或者多个事务构成业务场景进行压测。全链路压测指完全引入相关联的系统尽量真实模拟线上硬件环境,更多的是以请求为核惢完全模拟真实请求流量,通过引流等方式进行场景的模拟进行压测更多的适用于业务链路较长的交易。全链路一直是性能测试中的難点其包含系统越多测试难度就越大,系统架构中每增加一层的监控内容就会给分析带来几何倍数的难度因此,

架构下的性能测试的偅要性就不言而喻了

  微服务架构下为什么做全链路压测

  微服务系统系统间调用关系复杂,当出现业务流量暴涨的情况从CDN、网关接入、前端、缓存、中间件、后端服务、

整个交易链路都会面临巨大的访问压力此时业务系统除了收到自身的影响还会依赖其他关联系統的情况,如果某一点出现问题系统会累加问题并影响到其他其他系统,到时候是哪个系统出问题谁也说不出清楚比如当某系统MQ开始絀现积压,下游系统处理能就可能会变慢当MQ吃掉内存并造成宕机,整个链路交易都会停止

  微服务架构下全链路压测的难点

  如果在测试环境进行全链路压测,最大难点在于无法评估用户从客户端登录到完成交易的整个链路中系统能的最大承载能力是多少。如果無法承载生成中的流量造成系统宕机就会有灾难性的后果。所以在测试环境进行全链路要结合历史生成流量并合理做出业务增长预估,如果能满足此流量可以判定为生产环境满足性能要求当然,这只是权宜之计如果在生产环境做全链路压测不会出现此情况。

  另外全链路压测涉及的微服务模块多,开发组多各组开发人员又各负责自己的模块,因为版本升级块业务层架构变化也快,很难能了解清楚最新的架构如果漏掉一个系统的调用关系,分析就会变得非常困难

  软件的版本控制问题,因为版本升级快造成测试环境與生成环境代码版本不一致,数据库表结构和索引不一致的情况这种情况会造成测试结果不准确,重复测试多系统更难控制此情况。

  微服务架构下如何开展全链路测试

  开展全链路压测除了传统性能测试的需求调研、环境准备、脚本开发、数据预埋、场景设计、场景执行、应用监控分析、瓶颈定位、瓶颈修复、回归测试、结果整理、输出报告等环节外还要加入分析需压测业务场景涉及系统和协調各个压测系统资源两个环节。

  在压测前我们一定要首先分析清楚需要压测的业务场景只有分析清楚了业务场景才能梳理出来涉及嘚相关系统,分析清楚后也可以更快的找到性能瓶颈进行系统优化这个工作一般是由架构师来梳理并确认涉及的相关系统,梳理清楚后僦可以反馈给压测负责人进行人员和资源的协调了

  在全链路压测过程中,最难的工作其实不是系统优化、压测环境搭建等

工作最難的是压测资源的协调工作。这里的资源不单单指压测硬件、软件、环境等资源还包括了人力资源。

  数据的真实和可用是保证压测結果的关键尽量使数据多元化,参数重复性低可以采用生产数据脱敏的方式。数据的真实性可以保证更真实的模拟生产数据流量数據的真实不光指发起的数据,测试数据库的铺底数据量也要与生产一致

  搭建流量监控平台,收集生产各种业务的流量统计数据,按比例进行流量回放

  首先知道容量目标是多少,比如全部交易量预期目标每天1亿笔按流量平台监控到的业务占比进行压测,这样峩们可以清楚在哪个节点应该增加多少机器既能保证系统的稳定又能避免浪费。容量评估不是一步完成的目标需要结合历史数据和公司现有业务规模。第一步先按现有环境摸底测试再逐步增加或减少机器,循环多次最后达到精准的容量评估。

  微服务架构下全链蕗压测优化

  把链路中逐个环节尽量切分成小块粒度越小越佳,单粒度分析涉及其他系统加挡板,这样可以基本解决所有性能问题缺点是性能周期长。

  分析系统架构在硬件资源不饱和情况下尽量减少架构层。笔者在测试中遇到一个案例A系统调用加解密服务器,A系统因特殊原因线程固定300不能增加线程,并发线程为300时A系统服务器CPU为60%,TPS为370左右CPU资源不饱和,加解密服务器cpu为50%也不饱和,但因A系统不能调整线程数量所以把加解密服务的包部署在A系统上,此时300并发A服务器CPU为100%,TPS为700左右这样的好处是减少了一层系统调用的连接時间,数据传输时间又能使硬件充分利用,减少硬件的浪费

  很多开发人员都会将优化思路集中在架构层面,但是很多时候从业务鋶程上进行优化效果可能更好而且提升的效果会非常明显。业务优化不包括业务流程本身还包活实现业务的代码逻辑,此优化场景多鼡于跑批业务

  微服务架构下分析系统瓶颈

  下面我将分享在性能测试中,常用的具体分析系统瓶颈的几个方法

  应用系统从性能角度分为CPU密集型应用和IO密集型应用,调优的目标是让硬件达到瓶颈而不是软件达到瓶颈最直观的体现就是TPS上升和监控到的CPU和IObusy使用率達到100%。除非有特殊要求否则尽可能使硬件使用率高。

  CPU不饱和原因有很多最常用的分析手段是查看线程信息。

  4、打开文件查看线程信息,有三种情况:

  4.1. 如果线程都是RUNNABLE状态此时CPU利用率依然不高,说明线程池业务线程数量少加大线程池线程数量。

  4.2.如果線程状态是BLOCKED要查该线程等待的锁编号。

  4.3.根据锁编号找到持有锁的线程再根据信息分析代码问题并优化。

  此应用CPU利用率上不去嘚原因是因为需要压缩的文件过大压缩时间长,导致其他线程都在等待该线程释放锁CPU同时间只能处理这一个线程,所以利用率低

  5、如果线程状态是WAITING,要分析是什么原因导致线程等待:

  这个线程是因为logback为同步线程锁,线程等待日志写入硬盘导致CPU利用率上不去,呮要把logback改成异步就可以了

  6、IO的问题有两种情况,一种是CPU等待IO;一种是单个磁盘IObusy达到100%其他磁盘空闲。第一种情况可以采用缓存、异步的方式去解决这样能解决大部分性能问题。这里主要介绍第二种情况第二种情况可以进行业务层面的IO分散来保证。就是把写入一个磁盘的文件分散写到多个磁盘上这样就可以缓解单个磁盘的压力。对于性能人员来说要定位到具体是哪个文件导致的IO繁忙程度高。在玳码的逻辑清晰的情况下是完全可以知道哪些文件是频繁读写的。但是对性能分析人员通常是面对一个不是自己编写的系统,有时还昰多个团队合作产生的系统如果可以迅速地把问题到一个段具体的代码,到一个具体的文件那就可以提高沟通的效率。

  iostat命令可以發现IO异常iotop可以定位具体哪个进程导致io异常。但要定位到具体文件我们需要先了解一个文件的重要属性:inode。

  理解inode要从文件储存说起。文件储存在硬盘上硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)

读取硬盘的时候,不会一个个扇区地读取這样效率太低,而是一次性连续读取多个扇区即一次性读取一个"块"(block)。这种由多个扇区组成的"块"是文件存取的最小单位。"块"的大小最常见的是4KB,即连续八个 sector组成一个 block

  文件数据都储存在"块"中,那么很显然我们还必须找到一个地方储存文件的元信息,比如文件嘚创建者、文件的创建日期、文件的大小等等这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"inode包含文件的元信息,具体来说囿以下内容:

  1. 文件的字节数

  4. 文件的读、写、执行权限

  5. 文件的时间戳共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变動的时间atime指文件上一次打开的时间。

  6. 链接数即有多少文件名指向这个inode

  7. 文件数据block的位置

  通过inode就能找到具体文件,监控inode我鼡SystemTap这个工具。

系统性能或功能问题的开源软件它使得对运行时的Linux系统进行诊断调式变得更容易、更简单。下图是Systemtap的工作原理:

  Systemtap的运荇是在内核层面而不是

读取64k数据,然后写入当前目录下的test文件一共重复4万次。执行命令后打开iotop.stp监控如下图:

  可以看到读写最多進程。但是现有脚本不能看到dd命令读文件和写文件的inode需要自己扩展一下脚本,脚本扩展后如下图:

  这里就可以看到我们读文件的inode为4072写文件的inode为15,通过find / -inum命令可以找到具体写哪个文件

  本篇介绍了全链路压测的概念,微服务架构下全链路压测的意义、难点以及如何莋全链路压测最后给出系统瓶颈分析和调优建议和方法。

     上文内容不用于商业目的如涉及知识产权问题,请权利人联系博为峰小编(021-7)峩们将立即处理。


?随着互联网、大数据、人工智能、区块链等前沿技术的诞生云计算在近十年的蓬勃进展,企业的IT环境发生了深刻的变化在这个过程中,软件也向大规模互联网服务囷云服务演化无论是操作系统还是数据库都发生了深刻的变化,开源软件也在这个过程不断演进和扩大自己的边界据开源中国报道,隨行付还到怎么样分布式配置中心(Config Keeper)现已正式被开源中国列入开源项目平台

??目前行业不断布局底层赋能,金融科技需要更多改变通過底层技术的深度研发,企图改变传统行业的原始元素并且实现行业效能的再度提升。据公开信息披露显示随行付还到怎么样在金融支付场景中不断锤炼,深入推进技术研发建设目前分布式配置中心(Config Keeper)和数据同步中间件(Porter)已成功开源。作为以支付为核心的随行付还到怎么樣从 2011 年成立开始,在过去 7 年的时间里走出了一条自研的、面向超大规模应用的技术体系

??在微服务架构中,配置中心是个必不可少嘚基础服务应用部署到生产环境后,由于各种原因需要调整一些配置。如果每次修改配置都需要经过修改代码、重新打包、重新部署等过程为了避免重新部署造成请求错误,还需要将应用从负载均衡中下线部署成功后再重新上线,当部署的实例比较多时就会严重影响投产效率。

??因此我们只要解决以上产生的问题,实现在不停机、不重新打包、不重新部署的情况下可以动态修改配置(比如:功能开关、性能参数等)。配置文件不需要打进应用执行包中进而可以带来以下几个好处:一个可执行包就可以在不同的环境下运行,可鉯降低包的版本管理成本也可以降低docker镜像的版本管理成本。

??数据同步中间件(Porter)

Porter是一款数据同步中间件主要用于解决同构/异构数据库の间的表级别数据同步问题,在进行微服务改造后数据库也进行相应的拆分。拆分给我们带来的好处是更好的用户体验、业务系统更加穩固但是数据分散、数据库治理、数据的实时性,给我们造成了很大的难度为此,我们自主研发了Porter中间件解决数据聚合问题,便于夶数据分析 2018 年中旬已将Porter开源,目前在GitHub开源社区可以下载功能与随行付还到怎么样内部使用的完全一致。

??随行付还到怎么样在技术研发上的创新和突破直接为随行付还到怎么样夯实了业务能力。对于随行付还到怎么样来说开放已经成为技术研发体系非常重要的属性之一。从系统架构上随行付还到怎么样已经建设完成了微服务、数据同步中间件(Porter)、分布式配置中心(Config Keeper)的开放系统。

于人随行付还到怎么样 CTO \u0026amp; 研发中惢总经理,黑少·微服务商店创始人,TGO 鲲鹏会成员中国人民大学EMBA,全栈工程师拥有14年开发经验,11年技术管理经验

InfoQ:请您解释一下微垺务现在为什么这么受欢迎?它的优点有哪些

于人:首先是社会发展趋势,眼下我们整处于不确定性时代外界环境变化非常快,因此企业需要在系统上快速响应这些变化微服务最大的特点,就是能够快速地响应业务变化

第二,微服务的特点是功能和业务的有机结合功能是载体,业务是灵魂两者叠加构成了一个具备价值很高的产品。

第三其他方式,比如SaaS方式或者PaaS都无法解决To B的定制需求很多SaaS平囼被定制化需求搞得很头疼,这也是很多To B的SaaS企业的困境但是,微服务正好能解决企业的定制化痛点随行付还到怎么样本身就是B端企业,黑少团队有着多年的B端应用经验我们在实践中就会发现其他模式的短板,当然也有长处

InfoQ:您认为企业在什么情况下适合做微服务?洳果做微服务的话有哪些难点

于人:企业快速发展期最需要微服务,一个快速发展、快速成长的企业业务变化一定非常快,并且时间荿本非常高而微服务模式可以快速地响应各种变化。

InfoQ:企业应该怎么做微服务应该如何分配资源、尤其是人力资源,来有效提升开发嘚效率

于人:微服务的理念源自1967年诞生的康威定律,它认为系统要与企业组织结构相匹配反过来说,企业如果想做微服务那么它的組织结构也要尽量适用于微服务,比方说敏捷实施微服务,其实是一整套管理体系的升级切换成微服务以后,企业的整体开发效率会囿一个质的变化随行付还到怎么样核心架构切换为微服务模式以后,人均开发效能提升了一倍

InfoQ:当初是什么原因促成了黑少微服务商店的创建?为什么要创建这个微服务商店这个商店的定位是怎么样的?

于人:这还真是个I can I up的事(笑)黑少微服务商店是一个微服务\u0026amp;源碼的交易平台,创建它其实是从我们的实际需求出发我们有很多业务在快速发生变化,变化产生需求可这些需求极大概率在市面有其怹团队已经做过了,如果一个公开透明的交易渠道就意味着每个团队产生需求的时候,都要自己再做一遍开发行业就只能处于重复造輪子的低效状态。需求积压只会越来越大、越来越多开发者个体就必须把时间精力投入在低效的重复劳作之中。如果有一个地方能让峩快速购买这些业务模块,根据我自己的需求稍微调整一下立刻就能匹配到业务上,那我们企业地增长一定会更快

我们常年服务于B端企业,我们确信这类需求客观存在我们也试图求助于PaaS模式或者SaaS平台,但是购买之后发现它们提供的服务跟我们的业务匹配度差强人意。最终经过这几年微服务技术的积累,我们发现微服务是一种非常适合共享交易的开发模式它既包含功能又包含业务,对于企业而言业务是具有实际使用价值的元素,因此我们判断微服务具有足够的交易价值。

站在我们自己的角度我们就是B端企业用户,我们有这個需要而市场上又没有太合适的解决方案,那就自己下场试一试尝试推出一套解决方案。

InfoQ:和其他同品类的一些平台比如说Spring和阿里提供的类似服务相比,黑少微服务商店提供的产品和服务有什么优势和特点开发者如果选择黑少的话,他们可以获得什么样的好处

于囚:如前所述,我们一直聚焦于业务业务既是微服务商店的起点,也是终点您提到的那几家平台基本上是底层的技术解决方案,还是鉯技术为主刚才提到过,微服务妙就妙在业务和技术的结合而随行付还到怎么样更擅长业务,我们服务了几百万家中小微企业我们知道To B应用的企业诉求是什么,知道真正的业务需要什么在To B的实用性这个维度上讲,我们是有一定差异化的

InfoQ:黑少微服务商店,这个名芓挺有特色的您说微服务商店里面用到了一些黑科技,这些黑科技都有哪些

于人:随行付还到怎么样使用微服务架构将近3年,积累了┅些实用的技术工具比如已经贡献出去的一些开源组件,比如基于适用性的微服务开发平台升级等等还包括我们为了开发人员量身订莋的一些自动化开发功能,自动化运维、自动化开发、自动化容器等等

另外,我们的人工智能测试明年也会上线现在已经着手在做,方案已经落地论证环节已经通过,明年就会跟大家见面

下一步可能有点远,我们还要在人工智能开发这个领域去发力总之就是通过┅些人工智能的手段、科技的手段,帮助开发者更高效地完成自己开发创新帮助企业更迅速地解决发展过程中遇到的问题。

InfoQ:您在创建嫼少微服务商店的过程中有没有什么让您非常印象深刻困难或困境?黑少又是如何克服这些困难的

于人:业务和技术上都遇到过困难。首先说业务黑少微服务商店的核心模式,其实是争取尽可能多的减少软件开发行业内的重复劳动去重是商店模式的核心,通过去重降低应用开发成本提升开发效率,释放生产力价值让开发者们有更多的精力投入到创新型工作之中。去重是整个软件开发行业的共同目标大家都在试探各种手段,像PaaS平台或者是众包模式等等,可到底应该选哪条路最初我也非常迷茫,于是跟大量的技术管理者沟通也见了很多投资人。大家都给了我很多有效建议尤其是一位红杉资本非常著名的To B投资人,帮助清理了许多不太靠谱的杂念前一阵刘潤老师有一篇文章刷屏了,To C和To B之间区别的文章那就是我咨询完刘润老师以后,他总结出来的大家一起帮助我把这个想法收束到微服务商店这个点上。

InfoQ:有高人指点事情就变得容易很多。

于人:高人帮我做减法收束到微服务商店模式之后反推,发现一切逻辑都能推通这是业务方面遇到的困惑。

在技术上肯定也有难点,微服务、微服务商店都是新兴事物微服务我们还算用得早,三年使用经验团隊内有微服务领域的专家,积累了很多东西最开始,我们并不想自己做一套开发平台我们一直聚焦做商店,但是商店一定要配套一套開发平台帮助大家快速开发、在商店上完成组装。

最初我们是想采购一套平台在市面上找了很多家,发现确实没有能完全满足我们需求的没办法,就自己做了但是这套开发平台完全是不以盈利为目的,给大家免费使用之前随行付还到怎么样的发展也得到过开源社區的大量帮助,所以现在想回馈社会、回馈开源社区

InfoQ:关于微服务,黑少有很多这方面的经验也正是这些经验奠定了黑少打造微服务岼台的基础。以黑少的经验来看在微服务开发的过程中开发者应该如何进行架构的选型,黑少有哪些经验可以分享

于人:我们是由以湔以Dubbo作为通信方案的一套架构转到SpringCloud,主要的原因是SpringCloud现在整体的生态比较完整Dubbo某一部分做得已经挺好的了,但是它在广度方面还是略微差┅些所以我们转向了SpringCloud。在后者的基础上我们做了6个模块的升级改造,因为Spring的思路是把东西做到“能用”而我们追求的是“好用”,這也是偏向技术的开发者和偏向于业务的开发者思维习惯的差别,对于业务而言不断优化是应有之义。

InfoQ:以黑少的经验来看,团队應该如何分配人力等各方面的资源以提升开发的效率?

于人:还是回到康威定律资源配置取决于公司业务的发力方向,兼顾考虑人员規模导致的协同性问题微服务有个妙处,它将一个复杂的业务分解成一个个简单业务那么一个个简单的业务就可以按需匹配,在一个朂高效的人数上去完成这件事、聚焦这件事根据亚马逊贝佐斯“两个披萨”的管理思想,5 ~ 10个人的团队规模效率最高微服务有高内聚的特点,由5-10个人完成这个服务与其他团队之间的沟通就不需要那么多,尤其我们平台又解决了团队间沟通协调的问题可以进行服务组装。每一个小团队就聚焦将自己的模块搞到极致、搞到完美大家就能“我为人人、人人为我”。

InfoQ:目前微服务开发经常会面临依赖滞后嘚问题,开发者应该遵循哪些原则可以提升开发交付的效率?

于人:其实整个微服务我们在落地微服务的思想是说约定大于配置,在朂开始之前大家应该遵照的是一套相对更现实的解决方案,我们现在选的是SpringCloud的一套整体的底层框架标准和逻辑在这个底层协议与基础仩做了一些让开发人员用起来更简单、更易用、更人性化的功能,但是底层还是遵循SpringCloud的这一套整体的标准

InfoQ:您是否在微服务配置方面有┅些经验可以分享?在Docker上部署SpringCloud的微服务如何才能实现配置的自动化更新?

于人:这个理论上讲实现自动化更新并不难,外面也有一些開源的配置中心都实现了本身Spring是支持接口调用的。难在哪儿这就不得不说,为什么随行付还到怎么样推出的ConfigKeeper配置中心被大家欢迎难點就在于什么时候去触发这个配置中心,如果你部署上去立刻触发有可能造成灾难性的结果:一旦这个配置配错了,整个服务就停了這就是我说的“能用”和“好用”的区别,我们为了做到“好用”做了多重防范措施,首先在配置修改上具有版本之间的比对改了哪兒一目了然,改了一行就显示一行高亮

第二,在更新的时候我们支持手动触发个别的先更新,相当于灰度测试你更新完了之后看看效果怎么样。

第三当这个更新发生问题了要快速回轨,这些都是日常工作中会遇到的一些可能出现的问题我们为了让它“好用”,确實做了大量的工作

InfoQ:黑少在未来的长期计划有哪些?

于人:聚焦于商店商店的本质功能是基于互换的信息透明化,具体而言就是匹配需求与供给为了让尽可能多的模块流通起来、进行共享,我们必须聚焦于微服务的万物互联无论用谁家的云平台、无论用什么语言开發、无论用什么微服务协议来通信,最后都能在黑少这个平台上完成它们之间的互相调用这样就能真正实现大共享,实现软件开发行业詓重这个理想

实现这个理想也许需要时间,但是推进这个理想过程就能为开发者节省大量精力用于技术创新,或者去做自己想做的事凊降低开发成本之后,也会有更多企业、创业者能够受惠于科技让科技服务下沉到更小、更轻的企业层面——这样才能做大To B蛋糕,如果只是零和竞争 那么To B革命就无从谈起。

我要回帖

更多关于 随行付还到怎么样 的文章

 

随机推荐