From d61bf4a7ae8e7521071256fc0b0bfe5040f55cc9 Mon Sep 17 00:00:00 2001 From: yinweiwen Date: Thu, 24 Jun 2021 16:17:50 +0800 Subject: [PATCH] =?UTF-8?q?(*)=20upload=E8=BF=9B=E7=A8=8B=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../image-20210617151047553.png | Bin 0 -> 29308 bytes 预研项目/upload进程优化.md | 139 ++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 预研项目/imgs/upload进程优化/image-20210617151047553.png create mode 100644 预研项目/upload进程优化.md diff --git a/预研项目/imgs/upload进程优化/image-20210617151047553.png b/预研项目/imgs/upload进程优化/image-20210617151047553.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc4c1092b4918c101768c05b54cc79548d4e900 GIT binary patch literal 29308 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 akkaSystem.actorOf(Props(classOf[UploadActor], u))) +} + +def handleActor(data: Any): Unit = { + actors.foreach(actor => actor ! data) +} +``` + +缺陷:所有uploader任务运行在同一进程,还是可能出现故障导致整体崩溃问题; 不支持水平横向扩展;Actor中mailbox不可能无限接收缓存,可能出现OOM; + +建议:使用此方法进行**第一步优化**,可部分解耦upload任务关联 + +### Flink + +思路:使用Flink的KeyBy函数,实现不同推送的子任务执行。 + +Flink中的keyBy不会改变数据的每个元素的数据结构,仅仅时根据指定的key对输入数据重新划分子任务,相同的key对应的元素会被划分到一个子任务当中。 + +```scala + // alarm-stream operators +env.addSource(kafkaConsumer) +.map { + parse _ +} +.flatMap(new UploadFlatMap) // filter & construct upload task +.keyBy(_._1) // key by upload worker +.addSink(new UploadSink) // do upload sink + +// execute program +env.execute("Upload flink") + + + +// 创建上报任务 +class UploadFlatMap extends RichFlatMapFunction[IotaData, (uploader, IotaData)] { + override def flatMap(value: IotaData, out: Collector[(uploader, IotaData)]): Unit = { + UploadConsumer.uploaders.filter( + // 判断数据是否被当前uploader包含 + uploader => uploader.filter(value) + ).foreach( + // 构造upload任务(创建数据副本) + uploader => out.collect((uploader, value)) + ) + } +} + +// 执行上报任务 +class UploadSink extends RichSinkFunction[(uploader, IotaData)] { + + override def invoke(value: (uploader, IotaData)): Unit = { + val uploader = value._1 + val data = value._2 + uploader.upload(Array(data)) + } +} +``` + +这样不同upload任务可以通过flink 的分布式散列到不同的任务中执行。需要测试keyby后不同任务是否会相互干扰 + +以上仅处理了IotaData,其他数据的上报一样处理 + + + +### 分进程 + +这是目前知物云性能瓶颈后使用的优化方法;已通过配置和反射实现启动不同的upload任务 + +```scala +lazy val consumers: String = props.getProperty("consumers", "*") + +if (consumers == "*") { + // 处理所有的upload任务 + Array[uploader](http_comm, qingdao_kancha, huhanggaotie, http_mawan) +} else { + consumers.split(",").map(c => fromName(c)) +} + +/** + * 通过反射获取上传类 + * + * @param name 类名称 + * @return + */ +def fromName(name: String): uploader = { + val cn = classOf[uploader].getPackage.getName + "." + name + val runtimeMirror = universe.runtimeMirror(getClass.getClassLoader) + val module = runtimeMirror.staticModule(cn) + runtimeMirror.reflectModule(module).instance.asInstanceOf[uploader] +} +``` + +缺陷:增加了运维的复杂度;没有复用kafka消费者,可能导致kafka性能的浪费; + +建议:通过前面提的几种方式,做进一步优化。 \ No newline at end of file