• geek
    2020-01-01
    新年快乐 一起学习 一起提高 2020
    
     25
  • 辣么大
    2020-01-01
    想了三点,希望和小伙伴们讨论一下:
    1、RequestInfo save 一次写入一条。是否需要考虑通过设置参数,例如一次写入1000或10000条?好处不用频繁的与数据库建立连接。
    2、聚合统计Aggregator是否可以考虑不写代码实现统计的逻辑,而是使用一条SQL查询实现同样的功能?
    3、EmailReporter startDailyReport 没指定明确的统计起止时间。设置统计指定区间的request info,例如08:00~次日08:00,然后发邮件。
     4
     9
  • Jxin
    2020-01-01
    沙发!
    1.栏主新年快乐。零点发帖,啧啧啧。
    2.给出github地址吧,我们来提pr,一个学习用demo大家合力下就当练手,没必要自己死磕全实现哈。
    3.关于邮件和控制台两个接入层。实现代码重了。可以把定时统计下沉到下一层来实现,然后两个接入层共用这个实现。然后收集的统计数据的类型应该可以提供差异化配置的api。在消费统计数据的消息时,做差异化分发,实现各接入层仅看到自己想看的数据。

    4.spring1.x~3.x,兼容老版本做得挺好。springboot在自动装配的实现上下足了功夫(插件化,易插拔)。netty的实现也挺挺讲究,还能顺带学网络相关知识。以上其实都运用一系列设计原则。在没看栏主专栏前,我是啃这些学的场景。
    展开
     4
     6
  • 卫江
    2020-01-02
    上面的代码设计与实现,我认为有两个重点是需要改进的:
    1. 不同的统计规则,通过抽象统计规则抽象类,每一个具体的统计(最大时间,平均时间)单独实现,同时在 Aggregator 内中通过 List等容器保存所有的统计规则实现类,提供注册函数来动态添加新的统计规则,使得Aggregator否则开闭原则,各个统计规则也符合单一责任原则。
    2. 显示方式很明显是一个变化点,需要抽象封装,抽象出 显示接口,在汇报类中通过依赖注入的方式来使用具体的显示类,这样一来,reporter类更加责任单一,我们也可以通过扩展新的显示类来扩展功能,符合开闭原则,每一个显示实现类更加否则单一责任。
     2
     5
  • 堵车
    2020-01-02
    要写出优美的代码,首先要有一颗对丑陋代码厌恶的心
    
     5
  • Eden Ma
    2020-01-01
    2020新年快乐 早上醒来第一件事就是听卖🍑者和看争哥的更新
    
     4
  • Murrre
    2020-01-02
    https://github.com/murreIsCoding/learning_geek/tree/master/src/main/java/design_pattern/demo2/performance_monitoring
    敲了一下,主要是实现了redis存储部分逻辑,redis命令不是很熟,可能有更好的方案
    
     2
  • 哈喽沃德
    2020-01-02
    什么时候开始讲设计模式呢
    
     2
  • 啦啦啦
    2020-01-01
    新年快乐
    
     2
  • AaronYu
    2020-01-02
    把老师的代码做了一个整理,试着运行了一下。
    小伙伴们感兴趣的可以看一下:https://github.com/Aaronyu29/DesignPattern/tree/master/src/u026
    
     1
  • 何沛
    2020-01-02
    Aggregator考虑到后期新增新的维度统计,可以考虑使用责任链模式。
    ConsoleReporter、EmailReporter 出现了代码复用,可以用模板设计模式。
    
     1
  • Young!
    2020-01-01
    我觉得在使用方面需要优化,1,建议可以将使用哪个数据库存储方式,时间范围,使用邮箱还是命令行作为输出做成类似 spring 的可配置项,2,减少启动代码,最好使用一行或者注解就可以起到拦截请求并统计输出的作用。
    
     1
  • Frank
    2020-01-01
    打卡,今天又进步一点点,利用元旦的时间,将上一篇和这一篇的内容过了一遍,参照文章的思路使用代码简单实现了一遍,加深了理解。
    
     1
  • Jeff.Smile
    2020-01-01
    争哥这套课程确实呕心沥血,哈哈
    
     1
  • wenxueliu
    2020-01-01
    赞,记录思考过程才是最真实的案例
    
     1
  • Monday
    2020-01-01
    RequestInfo.timestamp属性是接口响应的开始时间戳吗?如果是的话,说明我被Demo中的10234,11234这类数据给误导了
    
     1
  • Geek_3b1096
    2020-01-01
    喜欢一小步一小步改进过程
    
     1
  • 东方奇骥
    2020-01-01
    因为我们项目统计数据较多,一般会写es,也会利用es的聚合功能。
    
     1
  • Edward
    2020-02-05
    关于 MetricsStorage 有可能导致 JVM OOM 的问题,可以使用分治的算法思想(Divide and Conquer)对半统计再合并
    
    
  • 丁丁历险记
    2020-01-31
    优秀的代码,都是重构出来的,深有体会。
    
    
我们在线,来聊聊吧