import com.a.eye.skywalking.network.dependencies.io.grpc.ManagedChannel; import com.a.eye.skywalking.network.dependencies.io.grpc.ManagedChannelBuilder; import com.a.eye.skywalking.network.dependencies.io.grpc.stub.ClientCallStreamObserver; import com.a.eye.skywalking.network.dependencies.io.grpc.stub.ServerCallStreamObserver; import com.a.eye.skywalking.network.dependencies.io.grpc.stub.StreamObserver; import com.a.eye.skywalking.network.grpc.*; import static com.a.eye.skywalking.network.grpc.SpanStorageServiceGrpc.newStub; public class StorageClient { private static ManagedChannel channel = ManagedChannelBuilder.forAddress("10.128.35.79", 34000).usePlaintext(true).build(); private static SpanStorageServiceGrpc.SpanStorageServiceStub spanStorageServiceStub = newStub(channel); private static long endTime1 = 0; private static long endTime2 = 0; public static void main(String[] args) throws InterruptedException { RequestSpan requestSpan = RequestSpan.newBuilder().setSpanType(1).setAddress("127.0.0.1").setApplicationId("1").setCallType("1") .setLevelId(0).setProcessNo("19287").setStartDate(System.currentTimeMillis()).setTraceId( TraceId.newBuilder().addSegments(201611).addSegments(1478661327960L).addSegments(8504828) .addSegments(2277).addSegments(53).addSegments(3).build()).setUserId("1") .setViewPointId("http://localhost:8080/wwww/test/helloWorld").build(); AckSpan ackSpan = AckSpan.newBuilder().setLevelId(0).setCost(10).setTraceId( TraceId.newBuilder().addSegments(201611).addSegments(1478661327960L).addSegments(8504828) .addSegments(2277).addSegments(53).addSegments(3).build()).setStatusCode(0) .setViewpointId("http://localhost:8080/wwww/test/helloWorld").build(); long startTime = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { StreamObserver ackSpanStreamObserver = spanStorageServiceStub.storageACKSpan(new StreamObserver() { @Override public void onNext(SendResult sendResult) { } @Override public void onError(Throwable throwable) { throwable.printStackTrace(); } @Override public void onCompleted() { endTime1 = System.currentTimeMillis(); } }); StreamObserver requestSpanStreamObserver = spanStorageServiceStub.storageRequestSpan(new StreamObserver() { @Override public void onNext(SendResult sendResult) { } @Override public void onError(Throwable throwable) { throwable.printStackTrace(); } @Override public void onCompleted() { endTime2 = System.currentTimeMillis(); } }); for (int j = 0; j < 10; j++) { requestSpanStreamObserver.onNext(requestSpan); ackSpanStreamObserver.onNext(ackSpan); } ClientCallStreamObserver newRequestSpanStreamObserver = (ClientCallStreamObserver) requestSpanStreamObserver; while (!newRequestSpanStreamObserver.isReady()) { Thread.sleep(1); } ackSpanStreamObserver.onCompleted(); requestSpanStreamObserver.onCompleted(); if(i % 500_000 == 0){ System.out.println(i); } } Thread.sleep(1000L); System.out.println("save execute in " + (endTime1 - startTime) + "ms"); System.out.println("save execute2 in " + (endTime2 - startTime) + "ms"); Thread.sleep(10000); } }