京东通天塔有效果吗 京东通天塔有什么用处( 三 )


因此我们通过压测去合理设定线程池大?。跣『诵南叱淌胱畲笙叱淌涞牟钪担行┲苯由柚梦嗟龋柚孟叱坛卦と群诵南叱?,改善上述问题 。
3 优化代码
代码层面的优化,带来的提升表现在更微观的层面,我们可以通过JMH等工具做一些微基准测试来对比优化前后的效果 。对于高流量的应用,微观层面的优化也可以带来一定的吞吐提升 。
6.3.1 深拷贝优化
为了避免对共享资源造成污染,通天塔代码中使用了深拷贝方式来保护共享资源 。原先通过序列化-反序列化的方式实现,这种方式拷贝流程长、中间对象多 , GC有额外的压力 。优化后我们使用Cloning深拷贝工具,直接进行对象到对象的拷贝,缩短了拷贝流程,同时也不要求POJO实现Cloneable接口,避免了使用原型模式过多的限制 。
图6.3.1.a:深拷贝优化示意图
6.3.2 对象重用&无竞争
【京东通天塔有效果吗 京东通天塔有什么用处】通天塔灰度功能采用了随机灰度的策略,代码中使用Random对象,这里存在一些代码重用和竞争的问题 , 优化过程如下图所示
图6.3.2.a 对象重用&无竞争优化示意图
6.3.3 其他代码优化
虽然“不提倡过早优化”这句话老生常谈 , 但并不意味着我们写每一行代码时可以很随意,我们完全可以选择更优的实现方式 。各种编码规约,设计模式其实就是前人总结出来的宝贵经验,帮助我们更好地编码实现 。
其实,代码层面可注意的优化点非常多 , 这里只列出一些供参考:

  • 正则表达式使用独占模式
  • JIT优化内联:短方法;尽量private/static/final修饰方法
  • 锁优化:锁分离;细粒度锁;乐观锁;无锁(不可变模型/ThreadLocal等)
  • 时间换空间:数据压缩降低网络IO;String常量池重用
  • 空间换时间:哈希表;缓存等
写在最后
总体而言,设计层面的优化难度较高,对于聚合应用而言效果最显著;组件、代码层面的优化也有不错的效果,但更多的需要通过微基准测试去验证 。最后,也是我们觉得最重要的一点就是:系统优化必须保证系统的稳定性和正确性 , 必须通过严格的验证和测试,否则,宁可不优化 。我是科技萌新 ~ 欢迎您关注和点赞!

推荐阅读