项目.md 3.5 KB

中煤项目

传输模块

要点:生产者端使用单topic单partition,保证顺序消费,重试次数设置为0,ACK设置为1。消费端设置线程池去多线程消费,使用redis记录偏移量,手动提交ACK

使用list记录数据量

项目演化过程:

直接看监控,JVM监控,grafana

  • kafka挂了:主要原因是kafka线程连接数量过多,kafka报错,直接增大网络线程数和I/O线程数,优化监控模块连接复用
  • kafka挂了:CPU压力过大,集群压力过大,增大与ZK的默认响应事件zookeeper.connection.timeout.ms=60000
  • 消费乱序:消费者因为触发reblance导致消费乱序,原本的partition-2分区给了消费者-02,因为存储到一个list里面导致乱序
  • 消息堆积:消费者传输的消息体过大,导致传输延迟过大,直接减少传输的消息,改为多批次发送。问题得到缓解
  • 消费者挂:各个节点流量不一样,(如果进行hash分区)导致该节点压力过大。解决直接进行单topic单partition
  • 消息挤压:单topic单partition导致消费能力不足,使用线程池进行消费
  • 重复消费:因为消费者重启导致的,使用redis可以解决
  • CPU暴涨:使用线程池导致消费问题,具体解决方法。优化线程池参数减小=
  • 项目无法启动,报错:error,文件描述符,默认是1024,改到最大值65535,用户过多,调整一下
  • redis挂了怎么办:直接重试,三次就跳过
  • kafka消费者挂了怎么办:使用定时任务直接重启
  • websocket:因为nginx的原因,定时ping/pong
  • 内存过大:TOP命令,主要是kafka和hbase的配置问题

BUG:

  • JMX监控问题:使用JMX导致无法连接,开放端口
  • JVM堆内存已满:VisualVM分析,因为hbase配置文件创建不当,改为单例模式
  • beanutils问题:由于名称原因,导致无法注入
public static String decapitalize(String name) {
    if (name == null || name.length() == 0) {
        return name;
    }
    if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
        Character.isUpperCase(name.charAt(0))){
        return name;
    }
    char chars[] = name.toCharArray();
    chars[0] = Character.toLowerCase(chars[0]);
    return new String(chars);
}
  • 线程池无法调用问题:自定义策略问题

CPU标高:TOP命令

实习项目

要点:使用责任链模式进行判断,shortcut的功能,区分TCP和UDP,使用策略模式进行选择。选择合适的进行解析。使用bytebuffer进行解析。封装工具类,

分库分表,16个表4*4,大概就是每个设备1秒10条消息。一共一天80万条数据。

使用 哈希散列算法 分治路由

  • batch insert
  • 导致事务注解失效
  • SPI

职业规划

作为应届生加入xxx。希望能在这个大平台,能够相周围优秀的同事们学习,学习xxx的文化,通过追赶他们,让自己成为一个更加职业化,专业化的人。在公司工作一段时间后希望可以独立承担公司业务,(事业心+好心态+稳定)

  • 入职 1 年,熟悉工作情况,在努力学习本职工作相关知识的同时学习业务相关的知识,积极参加团队活动,与同事和谐相处

  • 入职2-3年,精进业务水平,在稳定提升的基础上做到独当一面,保证完成日常工作的同时汇总工作经验

  • 入职3-5年,在总结经验的基础上产出方法论,积极与同事、上级交流沟通,助力培养部门设计学习进步氛围,提升产品的体验竞争力