java B2B2C Springcloud Electronic Mall System - Transmitting zipkin logs through message queues

Keywords: Java Spring Database MySQL

1. Configuration of zipkin server
B2B2C E-Commerce Platform Source Code Required to Build Distributed Microservice Cloud in JAVA Spring Cloud Large Enterprises
1. Introducing dependencies

//======================= Dependency of message queuing mode============
//This dependency automatically introduces spring-cloud-sleuth-stream and zipkin dependency packages
compile("org.springframework.cloud:spring-cloud-sleuth-zipkin-stream")
compile("org.springframework.cloud:spring-cloud-starter-stream-rabbit")
compile('io.zipkin.java:zipkin-autoconfigure-ui')
//To save to the database, you need the following dependencies
compile('mysql:mysql-connector-java')
compile('org.springframework.boot:spring-boot-starter-jdbc')

2. Start Class Configuration
Add @EnableZipkinStream Server to the startup class

@EnableZipkinStreamServer
@SpringBootApplication
public class ZipkinApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZipkinApplication.class, args);
    }

}

3. Configuration file
The complete configuration is as follows, according to their own settings can be modified.

#============================================================= Basic configuration======================== Basic configuration========================
#Application name
spring.application.name=zipking-server-v1
#port
server.port=9411
#=============================================================== message queue=========================
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
#============================================================ Data Source Configuration=======================
#The following configuration is required for zipkin data to be stored in the database
#Represents that the current program does not use sleuth
spring.sleuth.enabled=false
#Represents that zipkin data is stored in mysql
zipkin.storage.type=mysql
#The database script creates an address when there are multiple elements of the collection that can be represented by [x]
spring.datasource.schema[0]=classpath:/zipkin.sql
#spring boot data source configuration
spring.datasource.url=jdbc:mysql://localhost:3306/zipkin
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.initialize=true
spring.datasource.continue-on-error=true

4. Database files
Set up a database in the local database, named zipkin.
Create a new zipkin.sql file in the resources directory, which reads as follows

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for zipkin_annotations
-- ----------------------------
CREATE TABLE `zipkin_annotations` (
  `trace_id` bigint(20) NOT NULL COMMENT 'coincides with zipkin_spans.trace_id',
  `span_id` bigint(20) NOT NULL COMMENT 'coincides with zipkin_spans.id',
  `a_key` varchar(255) NOT NULL COMMENT 'BinaryAnnotation.key or Annotation.value if type == -1',
  `a_value` blob COMMENT 'BinaryAnnotation.value(), which must be smaller than 64KB',
  `a_type` int(11) NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if Annotation',
  `a_timestamp` bigint(20) DEFAULT NULL COMMENT 'Used to implement TTL; Annotation.timestamp or zipkin_spans.timestamp',
  `endpoint_ipv4` int(11) DEFAULT NULL COMMENT 'Null when Binary/Annotation.endpoint is null',
  `endpoint_ipv6` binary(16) DEFAULT NULL COMMENT 'Null when Binary/Annotation.endpoint is null, or no IPv6 address',
  `endpoint_port` smallint(6) DEFAULT NULL COMMENT 'Null when Binary/Annotation.endpoint is null',
  `endpoint_service_name` varchar(255) DEFAULT NULL COMMENT 'Null when Binary/Annotation.endpoint is null',
  UNIQUE KEY `trace_id` (`trace_id`,`span_id`,`a_key`,`a_timestamp`) COMMENT 'Ignore insert on duplicate',
  KEY `trace_id_2` (`trace_id`,`span_id`) COMMENT 'for joining with zipkin_spans',
  KEY `trace_id_3` (`trace_id`) COMMENT 'for getTraces/ByIds',
  KEY `endpoint_service_name` (`endpoint_service_name`) COMMENT 'for getTraces and getServiceNames',
  KEY `a_type` (`a_type`) COMMENT 'for getTraces',
  KEY `a_key` (`a_key`) COMMENT 'for getTraces'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

-- ----------------------------
-- Table structure for zipkin_dependencies
-- ----------------------------
CREATE TABLE `zipkin_dependencies` (
  `day` date NOT NULL,
  `parent` varchar(255) NOT NULL,
  `child` varchar(255) NOT NULL,
  `call_count` bigint(20) DEFAULT NULL,
  UNIQUE KEY `day` (`day`,`parent`,`child`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

-- ----------------------------
-- Table structure for zipkin_spans
-- ----------------------------
CREATE TABLE `zipkin_spans` (
  `trace_id` bigint(20) NOT NULL,
  `id` bigint(20) NOT NULL,
  `name` varchar(255) NOT NULL,
  `parent_id` bigint(20) DEFAULT NULL,
  `debug` bit(1) DEFAULT NULL,
  `start_ts` bigint(20) DEFAULT NULL COMMENT 'Span.timestamp(): epoch micros used for endTs query and to implement TTL',
  `duration` bigint(20) DEFAULT NULL COMMENT 'Span.duration(): micros used for minDuration and maxDuration query',
  UNIQUE KEY `trace_id` (`trace_id`,`id`) COMMENT 'ignore insert on duplicate',
  KEY `trace_id_2` (`trace_id`,`id`) COMMENT 'for joining with zipkin_annotations',
  KEY `trace_id_3` (`trace_id`) COMMENT 'for getTracesByIds',
  KEY `name` (`name`) COMMENT 'for getTraces and getSpanNames',
  KEY `start_ts` (`start_ts`) COMMENT 'for getTraces ordering and range'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

zipkin's server is configured, so don't forget to refresh the next project.

2. Configuration of zipkin client
Introducing dependency

compile("org.springframework.cloud:spring-cloud-sleuth-zipkin-stream")
compile("org.springframework.cloud:spring-cloud-starter-stream-rabbit")

Then the client is configured.

Three. Start up
At this time, the client and server are started separately, and the initialization of the mq connection can be seen in the log.
Then visit a client's rest interface to see if the server locahost:9411 is opened to see if any records have been generated. Then look at the database and three tables will be created. That means we have successfully configured it. Java B2C Springcloud Electronic Mall System

Posted by brandone on Sun, 20 Jan 2019 12:15:12 -0800