• 关于

    系统响应时间有什么用

    的搜索结果

回答

首先,你的代码没有问题,肯定是启动了3个线程来执行任务的。其次,分析下直接用main线程顺序执行三个操作,为什么比同时启动三个线程执行速度快呢?我认为这又可能跟操作系统处理IO的方式有关系,多线程并发处理IO时,操作系统底层响应IO的速度会影响线程的操作的。单线程环境下,顺序执行IO,操作系统可能不涉及到对IO请求的调用问题,但是多个线程同时发出IO请求命令时,操作系统底层的调度也有影响。你可以修正下你的测试内容,把Action中的Runnable的任务换成其他长时间计算任务,例如休眠操作,或者大数据计算操作,那么多线程的优势就体现出来了。修正测试内容: public void writeToTxt(String text) { int j=0; for(int i =0;i<1000000;i++){ j=i ; } System.out.println(Thread.currentThread().getName()+j); }最后,多线程提高效率体现在对整个功能完成时间上,是并行,而不会是纠结于单个任务完成过程中的处理时间;从理论上说,一个Runnable中执行完成的时间应该是差不多的,多线程的优势就是N个任务并行时,需要的总时间近似于完成一个任务的时间;而单线程时间则是N倍的单个任务的时间。而且多线程要考虑到线程池创建和调度的时间损耗,还是需要权衡的。像这种类似任务可以用java的线程池,可以免去线程创建和销毁的损耗。

蛮大人123 2019-12-02 02:39:56 0 浏览量 回答数 0

问题

性能测试:软件测试的重中之重

云效平台 2019-12-01 21:45:09 5839 浏览量 回答数 1

回答

--- 没人回答啊,自己顶一下,另外精简一下问题。 想知道Nginx Proxy Cache对内存和磁盘的使用,是否是内存存索引,磁盘存文件,既然文件已经是按hash key做了md5存目录,为什么还要用到内存存索引。(为了存过期时间等meta信息?) 如果无法用到内存存具体返回体,那就算全部命中也会在大压力下有太多随机文件访问,性能应该会有问题。是否是这样? 另外,通常的squid,vanish等来做反向代理,与Nginx Proxy Cache相比,性能上有什么不同。在做反向代码缓存静态资源方面,大家有何推荐。 非常感谢~######我也在用proxy_cache,系统隔半小时load就会跑满,不知何故######我也遇到同样问题,每隔一段时间nginx 响应慢导致 load 高,楼上的查出原因没有

kun坤 2020-05-29 18:00:40 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

用异步实现,具体可以看下netty或者xsocket,两者都有proxy的实现###### JVM调整只是一方面,最重要的还是从代码入手,使用并发包、NIO等,另外在linux上java程序的性能比在windows上好得多。###### 问题补充说明下: 操作系统:linux   内存:8G  CUP: 两块 JDK:1.5 程序以经没什么可调整的了(我自个觉得,最主要是想从JVM这方面把它往上调,能调多少调多少),现在主要是布署在服务器上我的JVM如何调整认其响应速度更快,就目前,(非专业)我自个测下来的情况下2*24H  400个并发(最起码保证有200个足的并发下),接收请求2亿多次,响应才2千多万多点差不多三千那个样子,这个响应比太小了,能否优化JVM把这一性能再往上走进一步呢,(已试过优化JVM确实能提高,之前没优前更差), 但就目前,本人能力和限优不下去了: -server -Xms2048m -Xmx2048m -Xmn768m -XX:+UseTLAB -XX:+UseParNewGC \ 目前的设置如上,朋友们可否指点指点啊!###### 把JDK升级到1.6,因为支持epoll###### 回头去试试###### 一般来说,考虑性能问题,都先要分析清楚到底性能的瓶颈在哪里,哪几个阶段的性能不够,如何针对这几个阶段进行优化,这样大家也才好给你更具体的建议###### 把JDK升级到1.6,因为支持epoll 试了,JDK换了个1.6的性能确实有了点变化###### 你先把性能瓶颈找到再考虑其他的。 例如你这个例子,2亿多的请求,实际只响应了几千万条,说明程序的处理能力不够,资源不够。导致程序只能处理一部分的请求,多余的请求丢掉了。是每一个请求的处理时间和资源消耗太大,还是说怎么?如果一定要同步的请求和响应,那么如果你认为你程序没问题的话,也就是加资源的问题。CPU,内存,该加的加吧。 如果不一定非要请求响应同步,可以把请求和响应异步起来,这样你的并发就可以达到一个很可关的数字。######        类似的压力己做过,现在我主要的任务是调JVM,因为其它情况下的模拟以经做,最主要原因还是想在现有的硬件配置基础上,把JVM调到最优,对于这个应用而言        之所以才有这么些响应(应该更多一些,请求是人为做的,目的是让程序在里边做处理过滤掉没意义的部分),但按照预测,不应该这么低,在调试中,遇到JVM有崩掉情况,后发现是内存泄漏导致所至,现在主要是想把JVM调到最优化,有相关经验的可否能分享分享###### 个人觉得还是找到瓶颈,有时候一句不正确的代码都有可能使你的内存用光,可以用jprofile调试下

爱吃鱼的程序员 2020-06-03 20:58:28 0 浏览量 回答数 0

问题

(update_non_index/flush_log=0) 响应时间, 95 percentil

kun坤 2020-06-14 13:59:23 0 浏览量 回答数 0

问题

windows 2008 IIS升级PHP5.3后执行PHP慢的解决办法

ap2836i0b 2019-12-01 20:23:38 9126 浏览量 回答数 4

问题

会话保持常见问题

行者武松 2019-12-01 21:43:17 3972 浏览量 回答数 0

问题

健康检查常见问题

行者武松 2019-12-01 21:43:15 3573 浏览量 回答数 0

问题

运维人员处理云服务器故障方法七七云转载

杨经理 2019-12-01 22:03:10 9677 浏览量 回答数 2

问题

如何快速定位云主机的故障

firstsko 2019-12-01 21:43:10 10637 浏览量 回答数 1

问题

SLB科普

cevin 2019-12-01 21:19:21 11489 浏览量 回答数 6

问题

Nginx性能为什么如此吊

小柒2012 2019-12-01 21:20:47 15038 浏览量 回答数 3

回答

详细解答可以参考官方帮助文档HTTPS 监听使用什么端口没有特殊要求,建议使用443端口。 HTTPS 支持什么格式的证书HTTPS 支持 pem 格式的证书,如果是其它格式的证书,请参考 转换证书格式。 HTTPS 双向认证中的服务器证书和 CA 证书的区别是什么 服务器证书:用于用户浏览器检查服务器发送的证书是否是由自己信赖的中心签发的,服务器证书可以到阿里云云盾证书服务购买,也可以到其他服务商处购买。服务器证书需要上传到负载均衡的证书管理系统。 CA 证书:服务器要求用户浏览器发送客户端证书,收到后服务器用 CA 证书验证客户端证书,如果没有通过验证,拒绝连接。开启双向认证功能后,CA 证书和服务器证书都需要上传到负载均衡的证书管理系统。 关于如何生成这些证书,请参考“用户指南”中的 生成证书。 如何配置 HTTPS 证书参考配置HTTPS单向认证和配置HTTPS双向认证。 为什么HTTPS协议实际产生的流量会比账单流量多一些如果用户使用HTTPS协议,将会使用一些流量用于协议握手,因此其实际产生的流量会比账单流量更多一些。 HTTPS ticket 保持保持时间设置为300秒。 一个会话ticket是一个加密的数据blob,其中包含需要重用的TLS连接信息,如会话key等,它一般是使用ticket key加密,因为ticket key服务器端也知道,在初始握手中服务器发送一个会话ticket到客户端,存储到客户端本地,当重用会话时,客户端发送会话ticket到服务器,服务器解密然后重用会话。 HTTPS 监听上传 DH PARAMETERS线上slb 七层https使用的ECDHE算法簇支持前向保密技术,不支持用户将DHE算法簇所需要的安全增强参数文件上传,即pem证书文件中含BEGIN DH PARAMETERS字段的字串上传。 HTTPS 监听是否支持 SNISNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展,目前SLB https监听不支持SNI 的功能,如有强需求,请用户改用TCP监听并在后端ECS上实现SNI功能。 HTTP 协议访问转 HTTPS 协议功能建议创建http监听时开启 SLB监听协议 附加HTTP头字段。 开启后后端ECS 可以获取到http X-Forwarded-Proto头字段,根据这个取值若是http协议访问则返回为https的访问域名响应即可。 HTTPS 页面在浏览器地址栏提示不安全访问链接的 HTTPS 的页面中是否有 HTTP 的链接引用,如果有则会引起此不安全的提示。

2019-12-01 23:10:46 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档HTTPS 监听使用什么端口没有特殊要求,建议使用443端口。 HTTPS 支持什么格式的证书HTTPS 支持 pem 格式的证书,如果是其它格式的证书,请参考 转换证书格式。 HTTPS 双向认证中的服务器证书和 CA 证书的区别是什么 服务器证书:用于用户浏览器检查服务器发送的证书是否是由自己信赖的中心签发的,服务器证书可以到阿里云云盾证书服务购买,也可以到其他服务商处购买。服务器证书需要上传到负载均衡的证书管理系统。 CA 证书:服务器要求用户浏览器发送客户端证书,收到后服务器用 CA 证书验证客户端证书,如果没有通过验证,拒绝连接。开启双向认证功能后,CA 证书和服务器证书都需要上传到负载均衡的证书管理系统。 关于如何生成这些证书,请参考“用户指南”中的 生成证书。 如何配置 HTTPS 证书参考配置HTTPS单向认证和配置HTTPS双向认证。 为什么HTTPS协议实际产生的流量会比账单流量多一些如果用户使用HTTPS协议,将会使用一些流量用于协议握手,因此其实际产生的流量会比账单流量更多一些。 HTTPS ticket 保持保持时间设置为300秒。 一个会话ticket是一个加密的数据blob,其中包含需要重用的TLS连接信息,如会话key等,它一般是使用ticket key加密,因为ticket key服务器端也知道,在初始握手中服务器发送一个会话ticket到客户端,存储到客户端本地,当重用会话时,客户端发送会话ticket到服务器,服务器解密然后重用会话。 HTTPS 监听上传 DH PARAMETERS线上slb 七层https使用的ECDHE算法簇支持前向保密技术,不支持用户将DHE算法簇所需要的安全增强参数文件上传,即pem证书文件中含BEGIN DH PARAMETERS字段的字串上传。 HTTPS 监听是否支持 SNISNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展,目前SLB https监听不支持SNI 的功能,如有强需求,请用户改用TCP监听并在后端ECS上实现SNI功能。 HTTP 协议访问转 HTTPS 协议功能建议创建http监听时开启 SLB监听协议 附加HTTP头字段。 开启后后端ECS 可以获取到http X-Forwarded-Proto头字段,根据这个取值若是http协议访问则返回为https的访问域名响应即可。 HTTPS 页面在浏览器地址栏提示不安全访问链接的 HTTPS 的页面中是否有 HTTP 的链接引用,如果有则会引起此不安全的提示。

2019-12-01 23:10:46 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档HTTPS 监听使用什么端口没有特殊要求,建议使用443端口。 HTTPS 支持什么格式的证书HTTPS 支持 pem 格式的证书,如果是其它格式的证书,请参考 转换证书格式。 HTTPS 双向认证中的服务器证书和 CA 证书的区别是什么 服务器证书:用于用户浏览器检查服务器发送的证书是否是由自己信赖的中心签发的,服务器证书可以到阿里云云盾证书服务购买,也可以到其他服务商处购买。服务器证书需要上传到负载均衡的证书管理系统。 CA 证书:服务器要求用户浏览器发送客户端证书,收到后服务器用 CA 证书验证客户端证书,如果没有通过验证,拒绝连接。开启双向认证功能后,CA 证书和服务器证书都需要上传到负载均衡的证书管理系统。 关于如何生成这些证书,请参考“用户指南”中的 生成证书。 如何配置 HTTPS 证书参考配置HTTPS单向认证和配置HTTPS双向认证。 为什么HTTPS协议实际产生的流量会比账单流量多一些如果用户使用HTTPS协议,将会使用一些流量用于协议握手,因此其实际产生的流量会比账单流量更多一些。 HTTPS ticket 保持保持时间设置为300秒。 一个会话ticket是一个加密的数据blob,其中包含需要重用的TLS连接信息,如会话key等,它一般是使用ticket key加密,因为ticket key服务器端也知道,在初始握手中服务器发送一个会话ticket到客户端,存储到客户端本地,当重用会话时,客户端发送会话ticket到服务器,服务器解密然后重用会话。 HTTPS 监听上传 DH PARAMETERS线上slb 七层https使用的ECDHE算法簇支持前向保密技术,不支持用户将DHE算法簇所需要的安全增强参数文件上传,即pem证书文件中含BEGIN DH PARAMETERS字段的字串上传。 HTTPS 监听是否支持 SNISNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展,目前SLB https监听不支持SNI 的功能,如有强需求,请用户改用TCP监听并在后端ECS上实现SNI功能。 HTTP 协议访问转 HTTPS 协议功能建议创建http监听时开启 SLB监听协议 附加HTTP头字段。 开启后后端ECS 可以获取到http X-Forwarded-Proto头字段,根据这个取值若是http协议访问则返回为https的访问域名响应即可。 HTTPS 页面在浏览器地址栏提示不安全访问链接的 HTTPS 的页面中是否有 HTTP 的链接引用,如果有则会引起此不安全的提示。

2019-12-01 23:10:46 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档HTTPS 监听使用什么端口没有特殊要求,建议使用443端口。 HTTPS 支持什么格式的证书HTTPS 支持 pem 格式的证书,如果是其它格式的证书,请参考 转换证书格式。 HTTPS 双向认证中的服务器证书和 CA 证书的区别是什么 服务器证书:用于用户浏览器检查服务器发送的证书是否是由自己信赖的中心签发的,服务器证书可以到阿里云云盾证书服务购买,也可以到其他服务商处购买。服务器证书需要上传到负载均衡的证书管理系统。 CA 证书:服务器要求用户浏览器发送客户端证书,收到后服务器用 CA 证书验证客户端证书,如果没有通过验证,拒绝连接。开启双向认证功能后,CA 证书和服务器证书都需要上传到负载均衡的证书管理系统。 关于如何生成这些证书,请参考“用户指南”中的 生成证书。 如何配置 HTTPS 证书参考配置HTTPS单向认证和配置HTTPS双向认证。 为什么HTTPS协议实际产生的流量会比账单流量多一些如果用户使用HTTPS协议,将会使用一些流量用于协议握手,因此其实际产生的流量会比账单流量更多一些。 HTTPS ticket 保持保持时间设置为300秒。 一个会话ticket是一个加密的数据blob,其中包含需要重用的TLS连接信息,如会话key等,它一般是使用ticket key加密,因为ticket key服务器端也知道,在初始握手中服务器发送一个会话ticket到客户端,存储到客户端本地,当重用会话时,客户端发送会话ticket到服务器,服务器解密然后重用会话。 HTTPS 监听上传 DH PARAMETERS线上slb 七层https使用的ECDHE算法簇支持前向保密技术,不支持用户将DHE算法簇所需要的安全增强参数文件上传,即pem证书文件中含BEGIN DH PARAMETERS字段的字串上传。 HTTPS 监听是否支持 SNISNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展,目前SLB https监听不支持SNI 的功能,如有强需求,请用户改用TCP监听并在后端ECS上实现SNI功能。 HTTP 协议访问转 HTTPS 协议功能建议创建http监听时开启 SLB监听协议 附加HTTP头字段。 开启后后端ECS 可以获取到http X-Forwarded-Proto头字段,根据这个取值若是http协议访问则返回为https的访问域名响应即可。 HTTPS 页面在浏览器地址栏提示不安全访问链接的 HTTPS 的页面中是否有 HTTP 的链接引用,如果有则会引起此不安全的提示。

2019-12-01 23:10:46 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档HTTPS 监听使用什么端口没有特殊要求,建议使用443端口。 HTTPS 支持什么格式的证书HTTPS 支持 pem 格式的证书,如果是其它格式的证书,请参考 转换证书格式。 HTTPS 双向认证中的服务器证书和 CA 证书的区别是什么 服务器证书:用于用户浏览器检查服务器发送的证书是否是由自己信赖的中心签发的,服务器证书可以到阿里云云盾证书服务购买,也可以到其他服务商处购买。服务器证书需要上传到负载均衡的证书管理系统。 CA 证书:服务器要求用户浏览器发送客户端证书,收到后服务器用 CA 证书验证客户端证书,如果没有通过验证,拒绝连接。开启双向认证功能后,CA 证书和服务器证书都需要上传到负载均衡的证书管理系统。 关于如何生成这些证书,请参考“用户指南”中的 生成证书。 如何配置 HTTPS 证书参考配置HTTPS单向认证和配置HTTPS双向认证。 为什么HTTPS协议实际产生的流量会比账单流量多一些如果用户使用HTTPS协议,将会使用一些流量用于协议握手,因此其实际产生的流量会比账单流量更多一些。 HTTPS ticket 保持保持时间设置为300秒。 一个会话ticket是一个加密的数据blob,其中包含需要重用的TLS连接信息,如会话key等,它一般是使用ticket key加密,因为ticket key服务器端也知道,在初始握手中服务器发送一个会话ticket到客户端,存储到客户端本地,当重用会话时,客户端发送会话ticket到服务器,服务器解密然后重用会话。 HTTPS 监听上传 DH PARAMETERS线上slb 七层https使用的ECDHE算法簇支持前向保密技术,不支持用户将DHE算法簇所需要的安全增强参数文件上传,即pem证书文件中含BEGIN DH PARAMETERS字段的字串上传。 HTTPS 监听是否支持 SNISNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展,目前SLB https监听不支持SNI 的功能,如有强需求,请用户改用TCP监听并在后端ECS上实现SNI功能。 HTTP 协议访问转 HTTPS 协议功能建议创建http监听时开启 SLB监听协议 附加HTTP头字段。 开启后后端ECS 可以获取到http X-Forwarded-Proto头字段,根据这个取值若是http协议访问则返回为https的访问域名响应即可。 HTTPS 页面在浏览器地址栏提示不安全访问链接的 HTTPS 的页面中是否有 HTTP 的链接引用,如果有则会引起此不安全的提示。

2019-12-01 23:10:46 0 浏览量 回答数 0

问题

性能测试技术怎么进行?

猫饭先生 2019-12-01 21:26:08 1341 浏览量 回答数 0

回答

1、阿里云扶持型套餐为什么只能绑定两个域名啊?能不能多绑定几个啊?       (目前不能,应该是考虑到备案人工成本高) 2、云主机只能安装PHPWIND程序吗?我想用其他程序建站可以吗?        (你可以安装其他程序,按官方说法,你需要有一个才有phpwind搭建的站点,不过你可以随意在二级域名下安装一个应付) 3、阿里云主机续费和购买的价钱一样吗?          (目前购买的套餐续费价格一样,年付只需支付10个月) 4、阿里云扶持型套餐可以建几个数据库?          (不限,但需根据你的站点数据库大小和负载情况而定) 5、云主机能自动备份吗?一般多久备份一次?           (会自动快照,多久一次未知,按行内应该不超过7天一次) 6、如果数据库或者网站里面的文件丢失或者损坏能找回来吗?             (提交售后,找快照) 7、阿里云为什么不开通QQ客服。。这里发帖解答的太慢了。没QQ和53KF效率高            (其实提交工单的做法,挺多大公司都这么做,相应速度确实要加快,可能目前人手不够) 8、有哪些站用阿里云扶持型套餐?能不能发两三个站点给我看看?·             (查看案例 http://phpwind.aliyun.com/front/case,或论坛找找有人发的。) 9、阿里云主机的配置中哪个操作系统性能最好。云主机是不是什么格式的网页文件都支持?              (使用php程序建议选用linux系统,如centos、redhat等。采用asp、asp.net程序需选用windows2008。支持的网页格式没有限制,由你自行配置系统运行环境) 10、如果我现在用的是扶持型套餐,不够用了我换成标准型套餐怎么收费?            (查看《套餐升级帮助》 http://bbs.aliyun.com/read.php?tid=5739) 11、云数据库服务是什么东东?为什么里面只能选择1G?为什么是试用?难道以后还要单独买云数据库吗?             (试用时间一年,正式上线需要付费。你可以不采用云数据库,可在自己的云主机上配置mysql环境,数据库大小由硬盘大小决定) 12、如果不会操作云主机,有没有客服手把手指导??              (按目前反映来看,客服可负责免费有限次配置环境,响应服务器故障,phpwind程序可提供简单技术支持)

migee 2019-12-02 02:30:33 0 浏览量 回答数 0

问题

【archsummit 回顾】阿里云章文嵩:构建大型云计算平台分布式技术的实践

云课堂 2019-12-01 21:03:36 14448 浏览量 回答数 9

问题

对Handler的理解:报错

kun坤 2020-06-08 11:03:22 4 浏览量 回答数 1

回答

在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又 要 藐 视 它。先举个例子感受一下千万级到底是什么数量级?现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右。对于一个后台服务器,单机的平均QPS可以到达800-1000,单独看写的业务量很简单 。为什么我们又不能说轻视它?第一,我们看它的数据存储,每天一百万的话,一年数据量的规模是多少?其次,刚才说的订单量,每一个订单要推送给附近的司机、司机要并发抢单,后面业务场景的访问量往往是前者的上百倍,轻松就超过上亿级别了。 今天我想从架构的本质谈起之后,希望大家理解在做一些建构设计的时候,它的出发点以及它解决的问题是什么。 架构,刚开始的解释是我从知乎上看到的。什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像。更抽象一点,说架构其 实 是 对 我 们 重复性业务 的抽象和我 们 未来 业务 拓展的前瞻,强调过去的经验和你对整个行业的预见。 我们要想做一个架构的话需要哪些能力?我觉得最重要的是架构师一个最重要的能力就是你要有 战 略分解能力。这个怎么来看呢: 第一,你必须要有抽象的能力,抽象的能力最基本就是去重,去重在整个架构中体现在方方面面,从定义一个函数,到定义一个类,到提供的一个服务,以及模板,背后都是要去重提高可复用率。 第二, 分类能力。做软件需要做对象的解耦,要定义对象的属性和方法,做分布式系统的时候要做服务的拆分和模块化,要定义服务的接口和规范。 第三, 算法(性能),它的价值体现在提升系统的性能,所有性能的提升,最终都会落到CPU,内存,IO和网络这4大块上。 这一页PPT举了一些例子来更深入的理解常见技术背后的架构理念。 第一个例子,在分布式系统我们会做 MySQL分 库 分表,我们要从不同的库和表中读取数据,这样的抽象最直观就是使用模板,因为绝大多数SQL语义是相同的,除了路由到哪个库哪个表,如果不使用Proxy中间件,模板就是性价比最高的方法。 第二看一下加速网络的CDN,它是做速度方面的性能提升,刚才我们也提到从CPU、内存、IO、网络四个方面来考虑,CDN本质上一个是做网络智能调度优化,另一个是多级缓存优化。 第三个看一下服务化,刚才已经提到了,各个大网站转型过程中一定会做服务化,其实它就是做抽象和做服务的拆分。第四个看一下消息队列,本质上还是做分类,只不过不是两个边际清晰的类,而是把两个边际不清晰的子系统通过队列解构并且异步化。新浪微博整体架构是什么样的 接下我们看一下微博整体架构,到一定量级的系统整个架构都会变成三层,客户端包括WEB、安卓和IOS,这里就不说了。接着还都会有一个接口层, 有三个主要作用: 第一个作用,要做 安全隔离,因为前端节点都是直接和用户交互,需要防范各种恶意攻击; 第二个还充当着一个 流量控制的作用,大家知道,在2014年春节的时候,微信红包,每分钟8亿多次的请求,其实真正到它后台的请求量,只有十万左右的数量级(这里的数据可能不准),剩余的流量在接口层就被挡住了; 第三,我们看对 PC 端和移 动 端的需求不一样的,所以我们可以进行拆分。接口层之后是后台,可以看到微博后台有三大块: 一个是 平台服 务, 第二, 搜索, 第三, 大数据。到了后台的各种服务其实都是处理的数据。 像平台的业务部门,做的就是 数据存储和读 取,对搜索来说做的是 数据的 检 索,对大数据来说是做的数据的 挖掘。微博其实和淘宝是很类似 微博其实和淘宝是很类似的。一般来说,第一代架构,基本上能支撑到用户到 百万 级别,到第二代架构基本能支撑到 千万 级别都没什么问题,当业务规模到 亿级别时,需要第三代的架构。 从 LAMP 的架构到面向服 务 的架构,有几个地方是非常难的,首先不可能在第一代基础上通过简单的修修补补满足用户量快速增长的,同时线上业务又不能停, 这是我们常说的 在 飞 机上 换 引擎的 问题。前两天我有一个朋友问我,说他在内部推行服务化的时候,把一个模块服务化做完了,其他部门就是不接。我建议在做服务化的时候,首先更多是偏向业务的梳理,同时要找准一个很好的切入点,既有架构和服务化上的提升,业务方也要有收益,比如提升性能或者降低维护成本同时升级过程要平滑,建议开始从原子化服务切入,比如基础的用户服务, 基础的短消息服务,基础的推送服务。 第二,就是可 以做无状 态 服 务,后面会详细讲,还有数据量大了后需要做数据Sharding,后面会将。 第三代 架构 要解决的 问题,就是用户量和业务趋于稳步增加(相对爆发期的指数级增长),更多考虑技术框架的稳定性, 提升系统整体的性能,降低成本,还有对整个系统监控的完善和升级。 大型网站的系统架构是如何演变的 我们通过通过数据看一下它的挑战,PV是在10亿级别,QPS在百万,数据量在千亿级别。我们可用性,就是SLA要求4个9,接口响应最多不能超过150毫秒,线上所有的故障必须得在5分钟内解决完。如果说5分钟没处理呢?那会影响你年终的绩效考核。2015年微博DAU已经过亿。我们系统有上百个微服务,每周会有两次的常规上线和不限次数的紧急上线。我们的挑战都一样,就是数据量,bigger and bigger,用户体验是faster and faster,业务是more and more。互联网业务更多是产品体验驱动, 技 术 在 产 品 体验上最有效的贡献 , 就是你的性能 越来越好 。 每次降低加载一个页面的时间,都可以间接的降低这个页面上用户的流失率。微博的技术挑战和正交分解法解析架构 下面看一下 第三代的 架构 图 以及 我 们 怎么用正交分解法 阐 述。 我们可以看到我们从两个维度,横轴和纵轴可以看到。 一个 维 度 是 水平的 分层 拆分,第二从垂直的维度会做拆分。水平的维度从接口层、到服务层到数据存储层。垂直怎么拆分,会用业务架构、技术架构、监控平台、服务治理等等来处理。我相信到第二代的时候很多架构已经有了业务架构和技术架构的拆分。我们看一下, 接口层有feed、用户关系、通讯接口;服务层,SOA里有基层服务、原子服务和组合服务,在微博我们只有原子服务和组合服务。原子服务不依赖于任何其他服务,组合服务由几个原子服务和自己的业务逻辑构建而成 ,资源层负责海量数据的存储(后面例子会详细讲)。技 术框架解决 独立于 业务 的海量高并发场景下的技术难题,由众多的技术组件共同构建而成 。在接口层,微博使用JERSY框架,帮助你做参数的解析,参数的验证,序列化和反序列化;资源层,主要是缓存、DB相关的各类组件,比如Cache组件和对象库组件。监 控平台和服 务 治理 , 完成系统服务的像素级监控,对分布式系统做提前诊断、预警以及治理。包含了SLA规则的制定、服务监控、服务调用链监控、流量监控、错误异常监控、线上灰度发布上线系统、线上扩容缩容调度系统等。 下面我们讲一下常见的设计原则。 第一个,首先是系统架构三个利器: 一个, 我 们 RPC 服 务组 件 (这里不讲了), 第二个,我们 消息中 间 件 。消息中间件起的作用:可以把两个模块之间的交互异步化,其次可以把不均匀请求流量输出为匀速的输出流量,所以说消息中间件 异步化 解耦 和流量削峰的利器。 第三个是配置管理,它是 代码级灰度发布以及 保障系统降级的利器。 第二个 , 无状态 , 接口 层 最重要的就是无状 态。我们在电商网站购物,在这个过程中很多情况下是有状态的,比如我浏览了哪些商品,为什么大家又常说接口层是无状态的,其实我们把状态从接口层剥离到了数据层。像用户在电商网站购物,选了几件商品,到了哪一步,接口无状态后,状态要么放在缓存中,要么放在数据库中, 其 实 它并不是没有状 态 , 只是在 这 个 过 程中我 们 要把一些有状 态 的 东 西抽离出来 到了数据层。 第三个, 数据 层 比服 务层 更需要 设计,这是一条非常重要的经验。对于服务层来说,可以拿PHP写,明天你可以拿JAVA来写,但是如果你的数据结构开始设计不合理,将来数据结构的改变会花费你数倍的代价,老的数据格式向新的数据格式迁移会让你痛不欲生,既有工作量上的,又有数据迁移跨越的时间周期,有一些甚至需要半年以上。 第四,物理结构与逻辑结构的映射,上一张图看到两个维度切成十二个区间,每个区间代表一个技术领域,这个可以看做我们的逻辑结构。另外,不论后台还是应用层的开发团队,一般都会分几个垂直的业务组加上一个基础技术架构组,这就是从物理组织架构到逻辑的技术架构的完美的映射,精细化团队分工,有利于提高沟通协作的效率 。 第五, www .sanhao.com 的访问过程,我们这个架构图里没有涉及到的,举个例子,比如当你在浏览器输入www.sanhao网址的时候,这个请求在接口层之前发生了什么?首先会查看你本机DNS以及DNS服务,查找域名对应的IP地址,然后发送HTTP请求过去。这个请求首先会到前端的VIP地址(公网服务IP地址),VIP之后还要经过负载均衡器(Nginx服务器),之后才到你的应用接口层。在接口层之前发生了这么多事,可能有用户报一个问题的时候,你通过在接口层查日志根本发现不了问题,原因就是问题可能发生在到达接口层之前了。 第六,我们说分布式系统,它最终的瓶颈会落在哪里呢?前端时间有一个网友跟我讨论的时候,说他们的系统遇到了一个瓶颈, 查遍了CPU,内存,网络,存储,都没有问题。我说你再查一遍,因为最终你不论用上千台服务器还是上万台服务器,最终系统出瓶颈的一定会落在某一台机(可能是叶子节点也可能是核心的节点),一定落在CPU、内存、存储和网络上,最后查出来问题出在一台服务器的网卡带宽上。微博多级双机房缓存架构 接下来我们看一下微博的Feed多级缓存。我们做业务的时候,经常很少做业务分析,技术大会上的分享又都偏向技术架构。其实大家更多的日常工作是需要花费更多时间在业务优化上。这张图是统计微博的信息流前几页的访问比例,像前三页占了97%,在做缓存设计的时候,我们最多只存最近的M条数据。 这里强调的就是做系统设计 要基于用 户 的 场 景 , 越细致越好 。举了一个例子,大家都会用电商,电商在双十一会做全国范围内的活动,他们做设计的时候也会考虑场景的,一个就是购物车,我曾经跟相关开发讨论过,购物车是在双十一之前用户的访问量非常大,就是不停地往里加商品。在真正到双十一那天他不会往购物车加东西了,但是他会频繁的浏览购物车。针对这个场景,活动之前重点设计优化购物车的写场景, 活动开始后优化购物车的读场景。 你看到的微博是由哪些部分聚合而成的呢?最右边的是Feed,就是微博所有关注的人,他们的微博所组成的。微博我们会按照时间顺序把所有关注人的顺序做一个排序。随着业务的发展,除了跟时间序相关的微博还有非时间序的微博,就是会有广告的要求,增加一些广告,还有粉丝头条,就是拿钱买的,热门微博,都会插在其中。分发控制,就是说和一些推荐相关的,我推荐一些相关的好友的微博,我推荐一些你可能没有读过的微博,我推荐一些其他类型的微博。 当然对非时序的微博和分发控制微博,实际会起多个并行的程序来读取,最后同步做统一的聚合。这里稍微分享一下, 从SNS社交领域来看,国内现在做的比较好的三个信息流: 微博 是 基于弱关系的媒体信息流 ; 朋友圈是基于 强 关系的信息流 ; 另外一个做的比 较 好的就是今日 头 条 , 它并不是基于关系来构建信息流 , 而是基于 兴趣和相关性的个性化推荐 信息流 。 信息流的聚合,体现在很多很多的产品之中,除了SNS,电商里也有信息流的聚合的影子。比如搜索一个商品后出来的列表页,它的信息流基本由几部分组成:第一,打广告的;第二个,做一些推荐,热门的商品,其次,才是关键字相关的搜索结果。 信息流 开始的时候 很 简单 , 但是到后期会 发现 , 你的 这 个流 如何做控制分发 , 非常复杂, 微博在最近一两年一直在做 这样 的工作。刚才我们是从业务上分析,那么技术上怎么解决高并发,高性能的问题?微博访问量很大的时候,底层存储是用MySQL数据库,当然也会有其他的。对于查询请求量大的时候,大家知道一定有缓存,可以复用可重用的计算结果。可以看到,发一条微博,我有很多粉丝,他们都会来看我发的内容,所以 微博是最适合使用 缓 存 的系统,微博的读写比例基本在几十比一。微博使用了 双 层缓 存,上面是L1,每个L1上都是一组(包含4-6台机器),左边的框相当于一个机房,右边又是一个机房。在这个系统中L1缓存所起的作用是什么? 首先,L1 缓 存增加整个系 统 的 QPS, 其次 以低成本灵活扩容的方式 增加 系统 的 带宽 。想象一个极端场景,只有一篇博文,但是它的访问量无限增长,其实我们不需要影响L2缓存,因为它的内容存储的量小,但它就是访问量大。这种场景下,你就需要使用L1来扩容提升QPS和带宽瓶颈。另外一个场景,就是L2级缓存发生作用,比如我有一千万个用户,去访问的是一百万个用户的微博 ,这个时候,他不只是说你的吞吐量和访问带宽,就是你要缓存的博文的内容也很多了,这个时候你要考虑缓存的容量, 第二 级缓 存更多的是从容量上来 规划,保证请求以较小的比例 穿透到 后端的 数据 库 中 ,根据你的用户模型你可以估出来,到底有百分之多少的请求不能穿透到DB, 评估这个容量之后,才能更好的评估DB需要多少库,需要承担多大的访问的压力。另外,我们看双机房的话,左边一个,右边一个。 两个机房是互 为 主 备 , 或者互 为热备 。如果两个用户在不同地域,他们访问两个不同机房的时候,假设用户从IDC1过来,因为就近原理,他会访问L1,没有的话才会跑到Master,当在IDC1没找到的时候才会跑到IDC2来找。同时有用户从IDC2访问,也会有请求从L1和Master返回或者到IDC1去查找。 IDC1 和 IDC2 ,两个机房都有全量的用户数据,同时在线提供服务,但是缓存查询又遵循最近访问原理。还有哪些多级缓存的例子呢?CDN是典型的多级缓存。CDN在国内各个地区做了很多节点,比如在杭州市部署一个节点时,在机房里肯定不止一台机器,那么对于一个地区来说,只有几台服务器到源站回源,其他节点都到这几台服务器回源即可,这么看CDN至少也有两级。Local Cache+ 分布式 缓 存,这也是常见的一种策略。有一种场景,分布式缓存并不适用, 比如 单 点 资 源 的爆发性峰值流量,这个时候使用Local Cache + 分布式缓存,Local Cache 在 应用 服 务 器 上用很小的 内存资源 挡住少量的 极端峰值流量,长尾的流量仍然访问分布式缓存,这样的Hybrid缓存架构通过复用众多的应用服务器节点,降低了系统的整体成本。 我们来看一下 Feed 的存 储 架构,微博的博文主要存在MySQL中。首先来看内容表,这个比较简单,每条内容一个索引,每天建一张表,其次看索引表,一共建了两级索引。首先想象一下用户场景,大部分用户刷微博的时候,看的是他关注所有人的微博,然后按时间来排序。仔细分析发现在这个场景下, 跟一个用户的自己的相关性很小了。所以在一级索引的时候会先根据关注的用户,取他们的前条微博ID,然后聚合排序。我们在做哈希(分库分表)的时候,同时考虑了按照UID哈希和按照时间维度。很业务和时间相关性很高的,今天的热点新闻,明天就没热度了,数据的冷热非常明显,这种场景就需要按照时间维度做分表,首先冷热数据做了分离(可以对冷热数据采用不同的存储方案来降低成本),其次, 很容止控制我数据库表的爆炸。像微博如果只按照用户维度区分,那么这个用户所有数据都在一张表里,这张表就是无限增长的,时间长了查询会越来越慢。二级索引,是我们里面一个比较特殊的场景,就是我要快速找到这个人所要发布的某一时段的微博时,通过二级索引快速定位。 分布式服务追踪系统 分布式追踪服务系统,当系统到千万级以后的时候,越来越庞杂,所解决的问题更偏向稳定性,性能和监控。刚才说用户只要有一个请求过来,你可以依赖你的服务RPC1、RPC2,你会发现RPC2又依赖RPC3、RPC4。分布式服务的时候一个痛点,就是说一个请求从用户过来之后,在后台不同的机器之间不停的调用并返回。 当你发现一个问题的时候,这些日志落在不同的机器上,你也不知道问题到底出在哪儿,各个服务之间互相隔离,互相之间没有建立关联。所以导致排查问题基本没有任何手段,就是出了问题没法儿解决。 我们要解决的问题,我们刚才说日志互相隔离,我们就要把它建立联系。建立联系我们就有一个请求ID,然后结合RPC框架, 服务治理功能。假设请求从客户端过来,其中包含一个ID 101,到服务A时仍然带有ID 101,然后调用RPC1的时候也会标识这是101 ,所以需要 一个唯一的 请求 ID 标识 递归迭代的传递到每一个 相关 节点。第二个,你做的时候,你不能说每个地方都加,对业务系统来说需要一个框架来完成这个工作, 这 个框架要 对业务 系 统 是最低侵入原 则 , 用 JAVA 的 话 就可以用 AOP,要做到零侵入的原则,就是对所有相关的中间件打点,从接口层组件(HTTP Client、HTTP Server)至到服务层组件(RPC Client、RPC Server),还有数据访问中间件的,这样业务系统只需要少量的配置信息就可以实现全链路监控 。为什么要用日志?服务化以后,每个服务可以用不同的开发语言, 考虑多种开发语言的兼容性 , 内部定 义标 准化的日志 是唯一且有效的办法。最后,如何构建基于GPS导航的路况监控?我们刚才讲分布式服务追踪。分布式服务追踪能解决的问题, 如果 单一用 户发现问题 后 , 可以通 过请 求 ID 快速找到 发 生 问题 的 节 点在什么,但是并没有解决如何发现问题。我们看现实中比较容易理解的道路监控,每辆车有GPS定位,我想看北京哪儿拥堵的时候,怎么做? 第一个 , 你肯定要知道每个 车 在什么位置,它走到哪儿了。其实可以说每个车上只要有一个标识,加上每一次流动的信息,就可以看到每个车流的位置和方向。 其次如何做 监 控和 报 警,我们怎么能了解道路的流量状况和负载,并及时报警。我们要定义这条街道多宽多高,单位时间可以通行多少辆车,这就是道路的容量。有了道路容量,再有道路的实时流量,我们就可以基于实习路况做预警? 对应于 分布式系 统 的话如何构建? 第一 , 你要 定义 每个服 务节 点它的 SLA A 是多少 ?SLA可以从系统的CPU占用率、内存占用率、磁盘占用率、QPS请求数等来定义,相当于定义系统的容量。 第二个 , 统计 线 上 动态 的流量,你要知道服务的平均QPS、最低QPS和最大QPS,有了流量和容量,就可以对系统做全面的监控和报警。 刚才讲的是理论,实际情况肯定比这个复杂。微博在春节的时候做许多活动,必须保障系统稳定,理论上你只要定义容量和流量就可以。但实际远远不行,为什么?有技术的因素,有人为的因素,因为不同的开发定义的流量和容量指标有主观性,很难全局量化标准,所以真正流量来了以后,你预先评估的系统瓶颈往往不正确。实际中我们在春节前主要采取了三个措施:第一,最简单的就是有降 级 的 预 案,流量超过系统容量后,先把哪些功能砍掉,需要有明确的优先级 。第二个, 线上全链路压测,就是把现在的流量放大到我们平常流量的五倍甚至十倍(比如下线一半的服务器,缩容而不是扩容),看看系统瓶颈最先发生在哪里。我们之前有一些例子,推测系统数据库会先出现瓶颈,但是实测发现是前端的程序先遇到瓶颈。第三,搭建在线 Docker 集群 , 所有业务共享备用的 Docker集群资源,这样可以极大的避免每个业务都预留资源,但是实际上流量没有增长造成的浪费。 总结 接下来说的是如何不停的学习和提升,这里以Java语言为例,首先, 一定要 理解 JAVA;第二步,JAVA完了以后,一定要 理 解 JVM;其次,还要 理解 操作系统;再次还是要了解一下 Design Pattern,这将告诉你怎么把过去的经验抽象沉淀供将来借鉴;还要学习 TCP/IP、 分布式系 统、数据结构和算法。

hiekay 2019-12-02 01:39:25 0 浏览量 回答数 0

问题

如何优化网站的访问速度

cnsjw 2019-12-01 21:00:50 29372 浏览量 回答数 35

问题

Web测试方法

技术小菜鸟 2019-12-01 21:41:32 7022 浏览量 回答数 1

问题

如何快速掌握性能知识体系,做好性能测试?

云效平台 2019-12-01 21:40:27 4526 浏览量 回答数 0

问题

电商网站的商品详情页系统架构【Java问答学堂】61期

剑曼红尘 2020-07-20 13:08:17 1 浏览量 回答数 1

回答

Re阿里云LNAMPLinuxNginxApacheMySQLPHP环境一键安装脚本 您好,我前两天重装系统后按步骤安装了你的这个lnamp,安装完毕之后一切正常,唯有一件事情,就是服务器每隔两三小时的样子就会断两三分钟,有时候会持续更长到一两个小时,断线期间无法通过putty等工具登录,但到阿里云管理控制台重启服务器之后,有恢复正常了,但过段时间又连不上,已经重新了两天了。我今天发起了工单问客服,他们初步定位是“我方测试您的IP可以正常连通,查看您的系统资源监控,系统cpu资源使用率已经持续达到100%,远程连接22和80端口无响应,通过vnc也无法连接,因此您重启后释放掉占用cpu资源即可恢复”,“查看/var/log/message下发现有大量的httpd进程占用了较多的资源,怀疑是您的网站访问量导致的cpu资源达到100%”,我之前按照官网安装的lnmp从未出现过此事,只是前两天重新安装了你的这个lnamp才开始出现,我不太明白那里出问题了,都是一步步按照指导来的,也没修改过其他文件,求救啊~大神! ------------------------- Re阿里云LNAMPLinuxNginxApacheMySQLPHP环境一键安装脚本 我补充两张图,显示%wa一直很高,最高的时候居然到了99.7%,但我的网站现在几乎都没流量,暂时都只有自己知道,两个站点用的是wordpress,另外一个是dedecms,并且也没什么定时任务之类的

何林江 2019-12-02 02:42:14 0 浏览量 回答数 0

问题

借助Wireshark帮助定位调用阿里云OSS开发过程问题

云语科技 2019-12-01 21:47:48 11257 浏览量 回答数 6

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

universitylife 2019-12-01 21:31:33 15660 浏览量 回答数 10

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

universitylife 2019-12-01 21:15:34 33359 浏览量 回答数 19
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站