今天看啥  ›  专栏  ›  Hollis

我好像发现了一个Go的Bug?

Hollis  · 公众号  ·  · 2021-12-14 09:30
从一次重构说起这事儿还得从一次重构优化说起。最近在重构一个路由功能,由于路由比较复杂,需求变化也多,于是想通过责任链模式来重构,刚好这段时间也在 Sentinel-Go 中看到相关源码。用责任链模式,最大的好处是可以针对每次请求灵活地插拔路由能力,如:这样实现会在每次请求到来时去new 出整个责任链,可以预见对象会频繁的创建、销毁。对 Java 来说,对象池并不推荐,除非对象的创建特别费力,像一个连接对象,否则线程之间的锁竞争绝对比直接分配内存的消耗要多的多~但 Go 不一样,它内置的 sync.Pool 配合调度模型(GMP)能够刚好规避这种锁竞争。大家知道 Go 的对象池很牛逼就行了,具体原理不是本文重点,也不是一两句话能解释的清楚,有机会再写 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照