海量数据处理商用短链接生成器平台 - 19

第六十六章 新一代分布式链路追踪Skywalking实战

第1集 新一代分布式链路追踪Skywalking介绍

简介:新一代分布式链路追踪Skywalking介绍

  • 抛两个常见的问题

    • 微服务调用链路出现了问题怎么快速排查?
    • 微服务调用链路耗时长怎么定位是哪个服务
  • skywalking是什么

    • skywalkings是一款国产的开源框架,在2015年开源使用,在2017年的时候加入了Apache孵化器
    • skywalking是分布式应用程序的性能监控工具,专门是为了微服务(spring cloud)、云原生架构与容器架构(docker/k8s)而设计的
    • 是一款APM工具,它具有分布式追踪、性能指标分析、应用和服务依赖分析等功能
    • 官网:http://skywalking.apache.org/
    • 下载:http://skywalking.apache.org/downloads/
    • Github:https://github.com/apache/skywalking
    • 官方文档:https://skywalking.apache.org/docs/main/v8.5.0/readme/
    • 中文文档:https://skyapm.github.io/document-cn-translation-of-skywalking/
  • 对比区别

    • Zipkin是由Twitter开源的链路分析分析工具,在springcloud sleuth得到了广泛的使用,具有轻量,部署简单的特点
    • Pinpoint是由韩国人开发的链路追踪应用监控分析工具,基于字节码方式注入。具有支持多种插件,UI功能强大,接入端没有代码侵入
    • Skywalking是由国人开发的链路追踪应用监控分析工具,基于字节码方式注入。具有支持多种插件,UI功能强大,接入端没有代码侵入,现已加入Apache孵化器
    • CAT是大众点评开源的链路追踪分析工具,具有对应用监控的分析、日志的采集、监控报警一系列的监控平台
    项目CatZipkinSkywalking
    链路追踪可视化
    聚合报表良好中等
    服务的依赖图良好良好
    埋点方式入侵式入侵式非入侵式,字节码增强
    VM监控指标没有
    存储机制mysql、本地文件内存、es、mysql、等H2、es、mysql、TIDB等
    支持语言java/.net丰富丰富
    社区支持国内国外主流apache支持
    知名使用者美团、携程京东、阿里定制不开源华为、小米
    APM
    开发基础eBay calGoogle DapperGoogle Dapper
    支持webflux不支持支持支持
    github下载量12.3k12.2k11.8k
第2集 Apache Skywalking整体架构组件介绍

简介:Apache Skywalking整体架构组件介绍

  • skywalking整体架构

    • 可以分为:上、下、左、右四个部分
    • 上部分(skywalking-agent):这一部分负责从应用程序中收集链路信息,然后把链路信息发送给skywalking OAP处理器
    • 下部分(skywalking OAp):负责接收从skywalking-agent发送过来的Tracing数据信息,然后把数据信息给Analysis Core进行分析,把分析到的数据存储到外部的存储器当中,最后面把数据信息给Query Core提供查询数据的功能
    • 左部分(Skywalking UI):负责给用户查看链路等信息
  • 部署组件介绍

    • ElasticSearch7.X
    • Skywalking-OAP-Server
    • Skywalking UI
    • Skywalking-Agent(项目引入)
第3集 Rancher2.X部署ElasticSearch7.x

简介:Rancher2.X部署ElasticSearch7.x

  • Elasticsearch

    • Elasticsearch是⼀个开源,是⼀个基于Apache Lucene库构建的Restful搜索引擎. Elasticsearch是在Solr之后⼏年推出的。
    • 它提供了⼀个分布式,多租户能⼒的全⽂搜索引擎,具有HTTP Web界⾯(REST)和API
    • Elasticsearch的官⽅客户端库提供Java,Groovy,PHP,Ruby,Perl,Python,.NET和Javascript。
    • 官网:https://www.elastic.co/cn/elasticsearch/
  • 应⽤场景

    • 维基百科、Stack Overflow、GitHub
    • 电商⽹站、⽇志数据分析、商品价格监控⽹站、BI系统、站内搜索
    • ES专题课程:可以看小滴课堂《玩转ElasticSearch全链路实战》
  • 部署

    • 在rancher主界面->资源->映射配置
elasticsearch.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true


# 这条配置表示开启xpack认证机制 
xpack.security.enabled: true

在这里插入图片描述

导入yaml(本章本集资料)

在这里插入图片描述

配置主机调度

  • 并到主机下的mydata给es文件夹添加777权限
chmod 777 -R /mydata/es

在这里插入图片描述

配置账号密码

  • 命令行进入
bin/elasticsearch-setup-passwords interactive

按回车输入y,回车一直输入密码elastic即可

在这里插入图片描述

  • 其他方式:docker容器化部署

    #创建目录
    mkdir -p /mydata/es/config
    mkdir -p /mydata/es/data
    echo "http.host: 0.0.0.0" >> /mydata/es/config/elasticsearch.yml
    
    
    #宿主机权限不够 
    chmod 777 -R /mydata/es
    
    
    
    
    #启动运行
    docker run -d --name xdclass_es7 -p 9200:9200 -p 9300:9300 \
      -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms128m -Xmx128m" \
      -v /mydata/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
      -v /mydata/es/data:/usr/share/elasticsearch/data \
      -v /mydata/es/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.6.2
    
    
    参数说明
    -e "discovery.type=single-node" 设置为单节点
    -e ES_JAVA_OPTS="-Xms128m -Xmx128m" 设置ES的初始内存和最大内存,否则过大启动不了ES
    
  • 问题 访问不了

    • 宿主机权限不够 chmod 777 -R /mydata/es
    • 网络安全组没开端口或者防火墙没开端口
    • http是9200,tcp是9300端口
  • 访问验证

http://120.24.7.58:9200/_cat/nodes?v=true&pretty
第4集 Rancher2.X部署Skywalking-OAP-Server+UI

简介:Rancher2.X部署Skywalking-OAP-Server+UI

  • 部署Skywalking-OAP-Server
镜像:apache/skywalking-oap-server:8.5.0-es7
端口:12800:12800    11800:11800


环境变量: 
TZ=Asia/Shanghai
SW_ES_PASSWORD=elastic
SW_ES_USER=elastic
SW_STORAGE=elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES=120.76.231.139:9200

在这里插入图片描述

  • 部署Skywalking-UI
镜像:apache/skywalking-ui:8.5.0
端口:8080:8000 (左边是容器端口,右边是宿主机端口)


环境变量(oap是上面定义的容器服务名称)
SW_OAP_ADDRESS=oap:12800
TZ=Asia/Shanghai

在这里插入图片描述

在这里插入图片描述

  • 访问 http://IP:+8000/
  • 查看ElasticSearch全部索引:http://120.24.7.58:9200/_cat/indices?v

第六十七章 短链平台整合SkyWalking链路追踪实战

第1集 AlibabaCloud微服务整合SkyWalkingAgent实战

简介:AlibabaCloud微服务整合SkyWalkingAgent实战

  • skywalking-agent的安装和使用
    • 下载skywalking
      • 地址:https://skywalking.apache.org/downloads/

在这里插入图片描述

  • skywalking-agen目录文件的介绍
    • logs:skywalking agent的相关运行日志
    • bootstrap-plugins:插件包
    • optional-plugins:插件包
    • optional-reporter-plugins:插件包
    • activations:插件包
    • skywalking-agent.jar:agent代理的jar包(主要是这个!)

在这里插入图片描述

项目中添加agent

  • 复制skywalking-apm的agent文件到项目当中

在这里插入图片描述

  • 注意坑来啦
    • .gitignore 默认不提交*.jar 相关文件,注意.gitignore是隐藏文件,配置电脑显示隐藏文件
    • 删除掉 *.jar ,才可以成功把jar提交上去
第2集 微服务打包SkyWalkingAgent镜像部署发布实战

简介:微服务打包SkyWalkingAgent镜像部署发布实战

  • 微服务Dockerfile配置
FROM adoptopenjdk/openjdk11:jre11u-nightly


COPY target/dcloud-account.jar dcloud-account.jar
COPY agent /usr/local/agent


ENV SW_AGENT_NAME "dcloud-account"


ENTRYPOINT ["java","-javaagent:/usr/local/agent/skywalking-agent.jar","-jar","/dcloud-account.jar"]
  • 提交代码->jenkins构建->Rancher发布升级

  • Rancher部署微服务新增环境变量

    • SW_AGENT_COLLECTOR_BACKEND_SERVICES = 112.74.107.230:11800
    • 注意:同个Rancher命名空间下,ip可以使用【容器服务名称】进行替代
  • 多个微服务都改下配置Dockerfile,并提交代码->jenkins构建->Rancher发布升级

  • 埋了一个坑,大家尝试自己解决,解决不了的话看下集

第3集 微服务访问-SkyWalkingUI数据查看和避坑

简介:微服务访问-SkyWalkingUI数据查看和避坑

  • 链路测试

    • 访问Account微服务,有服务出现,但是没数据
    • 注意:网络安全组开发相关链路端口
    • Rancher环境变量
    SW_AGENT_COLLECTOR_BACKEND_SERVICES=112.74.107.230:11800
    
  • 分析链路

    • 网关->业务微服务->skywalking oap-> elasticsearch
  • 避坑解决问题

    • ElasticSearch内存不够
    which is larger than the limit of...
    
  • Rancher升级ES,调整堆内存 为1g,有条件可以更多,8g、16g都行

  • 访问微服务接口-》查看SkywalingUI数据

第4集 DevOps链路优化-镜像构建推送加速-阿里云VPC专有网络

简介:DevOps链路优化-镜像构建发布加速-阿里云VPC专有网络

  • DevOps链路

在这里插入图片描述

  • 阿里云网络

    • 云服务器ECS的网络类型分为经典网络和专有网络VPC两种

    • 专有网络

      • (Virtual Private Cloud,简称VPC)一个隔离的网络环境,专有网络之间逻辑上彻底隔离,可以自定义专有网络的拓扑和IP地址,安全性相对是比较高的,推送阿里云镜像可以加速

第六十八章 短链平台整合Nacos配置中心和域名配置

第1集 账号服务整合Nacos配置中心开发和配置

简介:账号整合Nacos配置中心开发和配置

  • common项目引入配中心(已经加入)
 <!--配置中心, 留坑,后续用的时候再讲,解决方式,看springboot官方文档版本更新说明-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  • 常规按照上面的配置即可成功使用配置中心,但是新版的话不行,需要加入下面配置
 <!--坑:spring-cloud-dependencies 2020.0.0 默认不在加载bootstrap配置文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
  • 配置文件优先级讲解

    • 不能使用原先的application.properties, 需要使用 bootstrap.properties作为配置文件
    • 配置读取优先级 bootstrap.properties > application.properties
  • 配置实操

    • 服务迁移配置 增加bootstrap.properties
    spring.application.name=dcloud-account-service
    spring.cloud.nacos.config.server-addr=120.25.217.15:8848
    spring.cloud.nacos.config.file-extension=properties
    spring.cloud.nacos.config.enabled=true
    spring.cloud.nacos.config.username=nacos
    spring.cloud.nacos.config.password=nacos
    spring.cloud.nacos.config.namespace=public
    spring.cloud.nacos.config.config-long-poll-timeout=600000
    spring.profiles.active=dev
    
  • dataId组成,在 Nacos Spring Cloud 中,dataId 的完整 格式如下

    ${prefix}-${spring.profiles.active}.${file- extension}
     
    prefix 默认为 spring.application.name 的值
    spring.profiles.active 即为当前环境对应的 profile 当 spring.profiles.active 为空时,对应的连接符 - 也 将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
    
    
    file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配 置。目前只支持 properties 和 yaml 类型。
    
  • Nacos日志打印Bug,配置文件新增

    logging.level.com.alibaba.nacos.client.config.impl=WARN
    logging.level.root=INFO
    
  • 注意

    部分同学如果出现 config dta not exist 
    建议􏰀重启nacos 
    
    
    除开上述问题,如果还是拉取不到配置(保持和课程版本,文件名一样先) 􏰀
    
    
    重新构建下项目
    mvn clean package -U 
    
    
    然后重􏰀启IDEA
    

在这里插入图片描述

  • 配置文件
server.port=8001
spring.application.name=dcloud-account-service


#----------服务注册和发现--------------
spring.cloud.nacos.discovery.server-addr=120.24.7.58:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos




#用于rpc调用token验证
rpc.token=xdclass.net168


#-------redis连接配置-------
spring.redis.client-type=jedis
spring.redis.host=120.24.7.58
spring.redis.password=xdclass.net
spring.redis.port=6379
spring.redis.jedis.pool.max-active=100
spring.redis.jedis.pool.max-idle=100
spring.redis.jedis.pool.min-idle=100
spring.redis.jedis.pool.max-wait=60000


#-------分库分表数据源配置-------
spring.shardingsphere.datasource.names=ds0
spring.shardingsphere.datasource.ds0.connectionTimeoutMilliseconds=30000
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.ds0.idleTimeoutMilliseconds=60000
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://120.79.150.146:3306/dcloud_account?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.shardingsphere.datasource.ds0.maintenanceIntervalMilliseconds=30000
spring.shardingsphere.datasource.ds0.maxLifetimeMilliseconds=1800000
spring.shardingsphere.datasource.ds0.maxPoolSize=50
spring.shardingsphere.datasource.ds0.minPoolSize=50
spring.shardingsphere.datasource.ds0.password=xdclass.net168
spring.shardingsphere.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.ds0.username=root
spring.shardingsphere.props.sql.show=true


# 指定traffic表的数据分布情况,配置数据节点,行表达式标识符使用 ${...} 或 $->{...},但前者与 Spring 本身的文件占位符冲突,所以在 Spring 环境中建议使用 $->{...}
spring.shardingsphere.sharding.tables.traffic.actual-data-nodes=ds0.traffic_$->{0..1}
#水平分表策略+行表达式分片
spring.shardingsphere.sharding.tables.traffic.table-strategy.inline.algorithm-expression=traffic_$->{ account_no % 2 }
spring.shardingsphere.sharding.tables.traffic.table-strategy.inline.sharding-column=account_no


#id生成策略
spring.shardingsphere.sharding.tables.traffic.key-generator.column=id
spring.shardingsphere.sharding.tables.traffic.key-generator.props.worker.id=${workId}
spring.shardingsphere.sharding.tables.traffic.key-generator.type=SNOWFLAKE


#----------sms短信配置--------------
sms.app-code=6999d4df3e7d48028470bbe517169a8d
sms.template-id=M72CB42894


#----------阿里云OSS配置--------------
aliyun.oss.endpoint=oss-cn-guangzhou.aliyuncs.com
aliyun.oss.access-key-id=LTAI5tHVGvYw7twoVFyruB1H
aliyun.oss.access-key-secret=r4d0EudzSvPfVMb9Zp0TfmsE32RXmN
aliyun.oss.bucketname=dcloud-link








##----------rabbit配置--------------
spring.rabbitmq.host=112.74.107.230
spring.rabbitmq.port=5672
#需要手工创建虚拟主机
spring.rabbitmq.virtual-host=dev
spring.rabbitmq.username=admin
spring.rabbitmq.password=password
#消息确认方式,manual(手动ack) 和auto(自动ack); 消息消费重试到达指定次数进到异常交换机和异常队列,需要改为自动ack确认消息
spring.rabbitmq.listener.simple.acknowledge-mode=auto




#开启重试,消费者代码不能添加try catch捕获不往外抛异常
spring.rabbitmq.listener.simple.retry.enabled=true
#最大重试次数
spring.rabbitmq.listener.simple.retry.max-attempts=4
# 重试消息的时间间隔,5秒
spring.rabbitmq.listener.simple.retry.initial-interval=5000








#----------xxl-job配置--------------
logging.config=classpath:logback.xml
#调度中心部署地址,多个配置逗号分隔 "http://address01,http://address02"
xxl.job.admin.addresses=http://112.74.107.230:8080/xxl-job-admin


#执行器token,非空时启用 xxl-job, access token
xxl.job.accessToken=class.net


# 执行器app名称,和控制台那边配置一样的名称,不然注册不上去
xxl.job.executor.appname=traffic-app-executor


# [选填]执行器注册:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。
#从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=


#[选填]执行器IP :默认为空表示自动获取IP(即springboot容器的ip和端口,可以自动获取,也可以指定),多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务",
xxl.job.executor.ip=


# [选填]执行器端口号:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999


#执行器日志文件存储路径,需要对该路径拥有读写权限;为空则使用默认路径
xxl.job.executor.logpath=./data/logs/xxl-job/executor


#执行器日志保存天数
xxl.job.executor.logretentiondays=30


logging.level.com.alibaba.nacos.client.config.impl=WARN
logging.level.root=INFO
第2集 短链平台整合Nacos配置中心开发和配置

简介:短链平台整合Nacos配置中心开发和配置

  • 多个服务迁移配置中心实战

  • 网关注意事项

    • pom文件
        <!--添加nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>




        <!--配置中心,需要需要使用配置中心,则开启-->
        <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>




        <!--坑:spring-cloud-dependencies 2020.0.0 默认不在加载bootstrap配置文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>


  • bootstrap.yml

    spring:
      application:
        name: dcloud-gateway
      cloud:
        nacos:
          config:
            config-long-poll-timeout: 600000
            enabled: true
            file-extension: yaml
            namespace: public
            password: nacos
            server-addr: 120.24.7.58:8848
            username: nacos
      profiles:
        active: dev
    

dcloud-gateway-dev.yaml

server:
  port: 8888




#应用名称
spring:
  application:
    name: dcloud-gateway


#服务注册发现
  cloud:
    nacos:
      discovery:
        server-addr: 120.24.7.58:8848
        username: nacos
        password: nacos




    gateway:
      routes: #数组形式
        - id: dcloud-link-api-service  #数据服务 路由唯一标识
          uri: lb://dcloud-link-service  #从nocas进行转发
          order: 1 #优先级,数字越小优先级越高
          predicates: #断言 配置哪个路径才转发,前端访问路径统一加上XXX-server,网关判断转发对应的服务,如果是回调业务记得修改
            - Path=/* #匹配一个路径,用于短链解析


        - id: dcloud-link-service  #数据服务 路由唯一标识
          uri: lb://dcloud-link-service  #从nocas进行转发
          order: 2 #优先级,数字越小优先级越高
          predicates: #断言 配置哪个路径才转发,前端访问路径统一加上XXX-server,网关判断转发对应的服务,如果是回调业务记得修改
            - Path=/link-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1  #去掉第一层前缀,转发给后续的路径


        - id: dcloud-data-service  #数据服务 路由唯一标识
          uri: lb://dcloud-data-service  #从nocas进行转发
          order: 3 #优先级,数字越小优先级越高
          predicates: #断言 配置哪个路径才转发,前端访问路径统一加上XXX-server,网关判断转发对应的服务,如果是回调业务记得修改
            - Path=/data-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1  #去掉第一层前缀,转发给后续的路径


        - id: dcloud-account-service  #用户服务 路由唯一标识
          uri: lb://dcloud-account-service  #从nocas进行转发
          order: 4 #优先级,数字越小优先级越高
          predicates: #断言 配置哪个路径才转发,前端访问路径统一加上XXX-server,网关判断转发对应的服务,如果是回调业务记得修改
            - Path=/account-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1  #去掉第一层前缀,转发给后续的路径


        - id: dcloud-shop-service  #用户服务 路由唯一标识
          uri: lb://dcloud-shop-service  #从nocas进行转发
          order: 5 #优先级,数字越小优先级越高
          predicates: #断言 配置哪个路径才转发,前端访问路径统一加上XXX-server,网关判断转发对应的服务,如果是回调业务记得修改
            - Path=/shop-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1  #去掉第一层前缀,转发给后续的路径




      #开启网关拉取nacos的服务
      discovery:
        locator:
          enabled: true


#设置日志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示
logging:
  level:
    root: INFO
    #nacos日志问题
    com.alibaba.nacos.client.config.impl: WARN
第3集 短链平台域名解析配置实战

简介:短链平台域名解析配置实战

  • 一个http请求基本流程

    • 客户端通过发起域名资源请求 -> DNS解析获得IP -> 寻找服务器获得资源

    • 域名和ip的关系,DNS作用

      • DNS:Domain Name Server 域名服务器 域名虽然便于人们记忆,但网络中的计算机之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器
    • 什么是cname和a记录

      • a记录
        • 用户可以在此设置域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器(也叫ip指向域名配置)
      • cname
        • 别名指向,可以为一个主机设置别名。比如设置open1024.com,用来指向一个主机 xdclass.net 那么以后就可以用open1024.com来代替访问 xdclass.net 了
        • http://www.baidu.net --> baidu.net
    • 购买域名,备案

      • 阿里云 备案地址:https://beian.aliyun.com/
      • 配置域名解析到服务器
      • 备注:后端项目一般部署Linux服务器,前端静态资源可以部署Linux也可以部署在CDN上
    • 阿里云服务器一

      • 公网:112.74.107.230
      • 私网:172.31.101.8
    • 阿里云服务器二

      • 公网:120.24.7.58
      • 私网:172.31.101.9

第六十九章 Flink实时计算服务部署阿里云服务器实战

第1集 Flink实时计算服务本地修改和打包实战

简介:Flink实时计算服务本地修改和打包实战

  • 修改代码

    • Task Solt 是指taskmanager的并发执行能力,parallelism是指taskmanager实际使用的并发能力

      taskmanager.numberOfTaskSlots:4
      假如每一个taskmanager中的分配4个TaskSlot,那有3个taskmanager一共有12个TaskSlot
      
    • 并行度和solt的疑惑

      • Task Slots 是具备的并发能力,大于 Parallelism并行度(实际用的)

      • 数据流里面算子的最大并行度就是Parallelism, 2-2-2-3-1 这样的并行度,最大就是3(同个任务job里面)

      • parallelism并行度调整,WebUI的里面的参数优先级 小于 代码API指定的并行度,常规代码里面不指定

        • 代码中取消 env.setParallelism(1);
        • 短链服务-埋点数据 随机ip和referer取消,重新打包推送和更新
    • 修改配置文件

      • kafka
      • clickhouse
  • 打包

    • 打包插件
      • maven-jar-plugin,默认的打包插件,用来打普通的jar包,需建立lib目录里来存放需要的依赖包
      • maven-shade-plugin (推荐) 将依赖的jar包打包到当前jar包,成为fat JAR包,也可以防止类冲突 隔离
      • maven-assembly-plugin,大数据项目用的比较多,支持自定义的打包结构,比如sql/shell等
    • 测试插件
      • maven-surefire-plugin, 用于mvn 生命周期的测试阶段的插件,通过参数设置在junit下控制测试
  • 构建

    • mvn install
    • target目录下的jar包
第2集 Rancher部署Flink Job-TaskManager实战

简介:Rancher部署Flink Job-TaskManager实战

  • 部署有多种方式

  • 我们这边采用相对方便的Rancher部署,通过yml导入

    • 第一个 flink-jobmanager-deployment.yaml
    • 第二个 flink-jobmanager-service.yaml (不显示服务)
    • 第三个 taskmanager-deployment.yaml
      • 2个节点
      • 每个TaskManager有6个TaskSolt
  • 注意

    • 3个yml文件,在本章本集的资料里面

    • 固定主机运行,不然如果资源不够则容易造成整个Rancher K8s集群出问题

    • Flink节点耗内存和CPU、带宽(加载慢)等资源,阿里云ECS部署单独的机器,否则容易宕机

      • 原因一:节点所在机器宕机,导致失联
      • 原因二:宕机的节点对应内存设置太小,GC严重导致心跳超时,导致失联
      TimeoutException: Heartbeat of TaskManager with id 10.42.1.74:37727-f1bafb timed out.
      
    • 按量付费方式选择【 4核16G内存】并安装好Docker,添加到Rancher的主机上

    • 网络安全组开放端口 web ui端口 8081

第3集 通过WebUI提交运行Flink实时计算任务

简介:通过WebUI提交运行Flink实时计算任务

  • 访问WebUI
  • 上传jar包
    • 选择main入口类APP
    • 提交任务查看情况
第4集 Nginx-网关Gateway的区别和微服务获取用户ip

简介:Nginx-网关gateway的区别和微服务获取用户ip

  • 问题

    • 容器部署微服务,内部如何获取用户访问来源IP呢?
    • 答案:通过Nginx反向代理透传过去
  • 面试官:为啥有了gateway,还需要nginx呢?

前端请求到gateway,gateway在转发到相应的业务微服务,为什么不可以直接从nginx转发到相应的业务中心,还要加多一层
  • 答案

    • nginx和Spring Cloud Gateway在功能上是有一些重叠的地方,但是各司其职互相配合会更强大

    • Spring Cloud Gateway层

      • 可以认为是业务网关,针对SpringCloud体系专门推出,但是如果有其他服务不是用Cloud开发的怎么办?
      • 有部分复杂业务逻辑nginx解决不了,可以用gateway用java语言开发
      • 容器部署微服务的ip地址一直在换,需要结合注册中心来使用,所以gateway更灵活
    • Nginx

      • 关注的是协议和路由的转发,聚合入口方便配置管理

      • 在性能、容错机制上比Gateway强,多语言多环境下兼容性更好

      • 日志统计、协议路由转发、业务数据缓存前置、资源压缩等也是比较强大

      • 配置HTTPS证书更灵活、Openresty+Lua开发各个强大的功能模块

第5集 阿里云ECS服务器-源码安装部署Nginx和配置代理

简介:阿里云ECS服务器-源码安装部署Nginx实战

  • 有条件的可以新买一台ECS进行安装Nginx(按量付费,不用Rancher部署)

    • 这边就用Jenkins的那台机器安装
    • 注意
      • Rancher下的机器是不能安装的哈,gateway网关占用了80端口
      • 底层是 kube-prox进行端口转发,所以需要新的机器
      • 后续也会用到Nginx作为流量入口捕获的机器
  • 下载压缩包 并上传

    • http://nginx.org/en/download.html
  • 安装依赖

    • yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  • 创建一个文件夹,上传本地提供的nginx包

    • 本章本集资料里面

    • tar -zxvf nginx-1.18.0.tar.gz

      //执行命令
      ./configure
      make
      make install 
      
  • 默认安装路径

    • /usr/local/nginx
  • 访问配置

    cd /usr/local/nginx/sbin
    #启动
    ./nginx
    
    
    #重新加载配置文件
    ./nginx -s reload
    
  • 防火墙开放端口,阿里云网络安全组配置80端口

  • 配置网关代理

    • nginx和gateway不在同个阿里云账号,改为公网ip转发
    • 实际企业中肯定是同个内网转发的哈,改ip即可
        upstream gateway {
              server 112.74.107.230:80;
        }
        server {
            listen       80;
            server_name  localhost;
            location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://gateway/;
            }
          }
    
  • 重新配置域名解析 到 nginx所在ip

    • g1.fit
    • api.link.open1024.com
第6集 Flink实时计算-请求链路验证实战

简介:Flink实时计算数据请求链路验证实战

  • 访问短链

    • http://g1.fit/026m8O3a
  • ClickHouse数据验证

  • 建表语句

    CREATE TABLE default.visit_stats
    (
    
    
        `code` String,
    
    
        `referer` String,
    
    
        `is_new` UInt64,
    
    
        `account_no` UInt64,
    
    
        `province` String,
    
    
        `city` String,
    
    
        `ip` String,
    
    
        `browser_name` String,
    
    
        `os` String,
    
    
        `device_type` String,
    
    
        `pv` UInt64,
    
    
        `uv` UInt64,
    
    
        `start_time` DateTime,
    
    
        `end_time` DateTime,
    
    
        `ts` UInt64
    )
    ENGINE = ReplacingMergeTree(ts)
    PARTITION BY toYYYYMMDD(start_time)
    ORDER BY (start_time,
     end_time,
     code,
     province,
     city,
     referer,
     is_new,
     ip,
     browser_name,
     os,
     device_type)
    SETTINGS index_granularity = 8192
        }
    
  • 重新配置域名解析 到 nginx所在ip

    • g1.fit
    • api.link.open1024.com
第6集 Flink实时计算-请求链路验证实战

简介:Flink实时计算数据请求链路验证实战

  • 访问短链

    • http://g1.fit/026m8O3a
  • ClickHouse数据验证

  • 建表语句

    CREATE TABLE default.visit_stats
    (
    
    
        `code` String,
    
    
        `referer` String,
    
    
        `is_new` UInt64,
    
    
        `account_no` UInt64,
    
    
        `province` String,
    
    
        `city` String,
    
    
        `ip` String,
    
    
        `browser_name` String,
    
    
        `os` String,
    
    
        `device_type` String,
    
    
        `pv` UInt64,
    
    
        `uv` UInt64,
    
    
        `start_time` DateTime,
    
    
        `end_time` DateTime,
    
    
        `ts` UInt64
    )
    ENGINE = ReplacingMergeTree(ts)
    PARTITION BY toYYYYMMDD(start_time)
    ORDER BY (start_time,
     end_time,
     code,
     province,
     city,
     referer,
     is_new,
     ip,
     browser_name,
     os,
     device_type)
    SETTINGS index_granularity = 8192
    

有需要源码的去咸鱼!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从零开始学习人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值