
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而本文我们就通过案例分析来简单了解一下,计算机编程开发性能优化指标。
性能优化无非有两个目的:
减少资源消耗,降低成本
提高系统稳定性
如果只是为了降低成本,好做之前估算一下大概能降低多少成本,如果吭哧吭哧干了大半个月,结果只省下了一丁点的资源,那是得不偿失的。
回到这个注册中心,为什么要做性能优化呢?
Dubbo应用启动时,会向注册中心发起注册,如果注册失败,则会阻塞应用的启动。
起初这个项目问题并不大,因为接入的应用并不多,而当我接手项目时,接入的应用越来越多。
话分两头,另一边集团也在逐渐使用容器替代虚拟机和物理机,在高峰期会用扩容的方式来抗住流量高峰,快速扩容就要求服务能在短时间内大量启动,无疑对注册中心是一个大的考验。
指标度量
如果不能度量,就没法优化。
先是把几个核心接口加上metric,主要是请求量、耗时(p99/p95/p90)、错误请求量,无论是哪个项目,这点算是基本的了,如果没加,得好好反思了。
其次对项目进行一次压测,不知道现在的性能,后面的优化也无法证明其效果了。
以注册接口为例,当时注册的性能大概是40qps,记住这个值,看我们是如何一步一步达到1000qps的。
压测成功的请求标准是:p99耗时在1秒以内,且无报错。
锁优化
在优化锁之前,我们先搞清楚为什么要加锁,在我反复测试,读代码,看文档之后,发现事情其实很简单,这个锁是为了防止App、Cluster、Endpoint重复写入。
为什么防止重复写入要这么折腾呢?一个数据库的索引不就搞定了?这无法考证,但现状就是这样,如何破解呢?
先是看这些表能否加索引,有则尽量加上
其次数据库悲观锁能否换成Redis的乐观锁?
这个其实是可以的,原因在于客户端具有重试机制,如果并发冲突了,则发起重试,我们堵这个概率很小。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。