Deprem verisi toplama ve analizi-1

Cem Ayan
2 min readApr 1, 2020

--

Richter ölçeği

Malum ülkemizde deprem sayıları artmaya başladı. Bu durum hepimizi endişelendirdi. Ben de bu durumu göz önüne alıp bişeyler yapmak istedim.

Bu yazımda depremleri belirli zaman aralıklarında alıp bunu Kafka’ ya basan veri toplama kısmını aktaracağım. Diğer yazımda ise Flink ile akan veri üzerinde nasıl analiz yapabiliriz buna değineceğim. İyi okumalar herkese :)

Aşağıda kodları açıklıyor olacağım fakat direkt sonucu görmek isteyenler buradaki docker-compose dosyasını

docker-compose up
//yada
docker-compose -f <Dosyaadi> up

ile çalıştırabilirler.

Keyifli okumalar…

Kullanılacak araçlar hakkında kısa bilgi :

Kafka ve Zookeeper’ı hiç uğraşmadan docker üzerinden ayağa kaldıracağız. Bu yüzden Docker olması gerekiyor ortamınızda.

Bunun için wurstmeister ‘ın imajlarını kullanacağız.

Verileri çekmek bir Go uygulaması yazıp http://udim.koeri.boun.edu.tr/zeqmap/xmlt/son24saat.xml adresinden verileri çekeceğiz.

Yeni bir Go projesi oluşturarak başlayalım. Kod yazma süreci uzun uzun anlatmamak için direkt ufak açıklamalarla bölümlere değineceğim kodun kendisine Github üzerinden erişebilirsiniz.

XMLFetch.go

Bu verileri çeken bir yapımız olması gerekiyor.

XMLParse.go

Sonrasında bu verileri parse etmemiz gerekiyor bunun için type yazmamız gerekiyor. Buradan type’ları görebilirsiniz

KafkaProducer.go

Sonrasında bu parse olan verileri Kafka’ya yazmak için basit bir şekilde segmentio/kafka-go kütüphanesini kullanabiliriz.

XML’in hepsini çektiğimiz için aslında bu XML array’inin sonuncusunu alıp bir yerde tutup her işlemlerden sonra burası ile karşılaştırıp duruma göre deprem oldu yada deprem olmadı şeklinde bişey yapmalıyız.

Scheduler.go

Config verdiğimiz zaman ve zaman birimi ile de sürekli çalışacak bir yapı için bir Job yazıyoruz.

CacheManager.go

Cache için allegro/bigcache kütüphanesini kullanacağız. CacheManager oluşurduk.En son main.go ‘da bunları çağırmamız gerekiyor.

main.go

Burada da göreceğiniz gibi scheduler’ı başlatıyoruz ve verdiğimiz config’e göre verileri çekiyor ve Kafka’ya yazıyor.

Ve bunların sonrasında Dockerfile ve docker-compose oluşturacağız.

Dockerfile
docker-compose.yml

docker-compose dosyamızı

docker-compose up

ile ayağa kaldırıyoruz.

Go app log from docker

Deprem oluştuğu zaman aşağıdaki şekilde Kafka’da ilgili topic’i consume ederseniz veri geldiğini görebilirsiniz.

Kafka earthquake topic consume

Kodları buradan inceleyebilirsiniz.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Cem Ayan
Cem Ayan

No responses yet

Write a response