用SpringCloud Alibaba搭建属于自己的微服务(二十九)~业务开发~kafka+elasticSearch埋点采集原始数据

本文档详细介绍了如何使用SpringCloud Alibaba构建微服务,通过Kafka进行消息传递,并结合ElasticSearch实现数据埋点与采集。主要步骤包括创建server-data微服务,集成Kafka和ElasticSearch,改造gateway生产者端,以及测试验证数据存储到ElasticSearch。
摘要由CSDN通过智能技术生成

一.概述

在实际的业务开发中,当我们的产品有了稳定的用户量,我们就会开始去做数据统计,针对用户的各种行为进行统计,拿到了这些数据,我们就可以针对性的开发新的功能,从而增加产品的盈利,为老板的保时捷添砖加瓦,为我们自己的项目奖金也提升一个档次.

二.需求和实现逻辑

这章节讲解统计用户的访问量,并把数据做持久化,我们采用在gateway网关出集成kafka,gateway收到一个请求,就往kafka中推送数据,server-user服务作为消息中间件的消费者接受数据并且持久化到elasticSearch这样的文档性数据库.

三.模仿server-user服务,新建微服务server-data

1.创建maven工程.

在这里插入图片描述

2.编写启动类ServerDataApplication.

package com.ccm.server.data;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 *  @Description server-data服务启动类
 *  @Author ccm
 *  @CreateTime 2020/08/11 14:04
 */
@EnableDiscoveryClient //注册中心客户端
@ComponentScan(basePackages = "com.ccm")
@EnableSwagger2
@SpringBootApplication //声明为一个启动类
public class ServerDataApplication {
   
    public static void main(String[] args) {
   
        SpringApplication.run(ServerDataApplication.class,args);
    }
}

3.编写bootstrap.yml配置文件.

server:
  port: 2000  #服务端口
spring:
  application:
    name: server-data #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 47.96.131.185:8849
      config:
        server-addr: 47.96.131.185:8849  #nacos config配置中心ip和端口
        file-extension: yaml  #文件扩展名格式,针对于默认的{spring.application.name}-${profile}.${file-extension:properties}配置
        enabled: true #开启或关闭配置中心

4.swagger中加入请求头参数信息.

package com.ccm.server.data.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description swagger配置
 * @Author ccm
 * @CreateTime 2020/7/8 17:38
 */
@Configuration
public class SwaggerConfig {
   

    @Bean
    public Docket createRestApi() {
   
        List<Parameter> pars = new ArrayList<Parameter>();

        ParameterBuilder ticketPar = new ParameterBuilder();
        ticketPar.name("ccm-token").description("必要参数(白名单接口无需传递)")
                .modelRef(new ModelRef("string")).parameterType("header")
                .required(false).build(); //header中的ticket参数非必填,传空也可以
        pars.add(ticketPar.build());

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.ccm.server.data.controller"))    //swagger接口扫描包
                .paths(PathSelectors.any()).build().globalOperationParameters(pars);
    }

    private ApiInfo apiInfo() {
   
        return new ApiInfoBuilder().version("1.0.0")
                .title("欢迎")
                .description("光临")
                .termsOfServiceUrl("www.baidu.com")
                .build();
    }
}

4.server-data整合kafka.

(1).ccm-mall.pom顶级父工程中加入版本管理.
<!--kafka-->
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
flume是一个分布式、可靠、高可用的数据采集、聚合和传输系统。在数据采集方面,flume可以很好地与nginx、kafka、mongodb等常见的数据处理工具和数据库进行集成。下面介绍一下基于nginx+flume+kafka+mongodb实现埋点数据采集的步骤: 1. 配置nginx服务器,将所有的http请求都转发到flume服务器上。可以使用nginx的proxy_pass指令来实现。 2. 在flume服务器上,配置flume agent来接收nginx服务器转发过来的http请求,并将请求数据转发给kafka服务器。flume的配置文件中需要设置source、channel和sink三个部分,具体配置可以参考flume官方文档。 3. 在kafka服务器上,创建一个topic来存储flume发送过来的http请求数据。可以使用kafka的命令行工具kafka-topics来创建topic。 4. 在flume服务器上,配置一个kafka sink来将http请求数据发送到kafka服务器上的指定topic中。 5. 在mongodb数据库中创建一个collection来存储http请求数据。可以使用mongodb的命令行工具mongo来创建collection。 6. 在flume服务器上,配置一个mongodb sink来将http请求数据从kafka服务器中消费,并将其存储到mongodb数据库中的指定collection中。 7. 启动nginx、flume、kafka和mongodb服务,并进行测试。可以使用curl等工具模拟http请求,并查看数据是否能够被成功采集、存储到mongodb中。 以上就是基于nginx+flume+kafka+mongodb实现埋点数据采集的基本步骤。需要注意的是,具体的配置和实现过程可能会因为不同的业务需求而有所差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值