ContextBuffer.java 1.1 KB
Newer Older
1 2
package com.ai.cloud.skywalking.buffer;

3
import com.ai.cloud.skywalking.protocol.Span;
4

Z
zhangxin10 已提交
5
import java.util.concurrent.ThreadLocalRandom;
6

wu-sheng's avatar
wu-sheng 已提交
7 8 9
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

Z
同上  
zhangxin10 已提交
10
import static com.ai.cloud.skywalking.conf.Config.Buffer.POOL_SIZE;
11

Z
zhangxin10 已提交
12
public class ContextBuffer {
wu-sheng's avatar
wu-sheng 已提交
13
	private static Logger logger = LogManager.getLogger(ContextBuffer.class);
14

Z
zhangxin10 已提交
15
    private static BufferPool pool = new BufferPool();
16 17 18 19 20

    private ContextBuffer() {
        //non
    }

21
    public static void save(Span span) {
wu-sheng's avatar
wu-sheng 已提交
22 23 24 25 26
    	try{
    		pool.save(span);
    	}catch(Throwable t){
    		logger.error("save span error.", t);
    	}
27
    }
Z
zhangxin10 已提交
28 29 30


    static class BufferPool {
A
ascrutae 已提交
31
        // 注意: 这个变量名如果改变需要改变test-api工程中的Config变量
Z
同上  
zhangxin10 已提交
32
        private static BufferGroup[] bufferGroups = new BufferGroup[POOL_SIZE];
Z
zhangxin10 已提交
33
        static {
Z
同上  
zhangxin10 已提交
34
            for (int i = 0; i < POOL_SIZE; i++) {
Z
zhangxin10 已提交
35 36 37 38 39
                bufferGroups[i] = new BufferGroup("buffer_group-" + i);
            }
        }

        public void save(Span span) {
Z
同上  
zhangxin10 已提交
40
            bufferGroups[ThreadLocalRandom.current().nextInt(0, POOL_SIZE)].save(span);
Z
zhangxin10 已提交
41 42 43
        }

    }
44
}
Z
zhangxin10 已提交
45 46 47