首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何缩放定制的分析引擎?

如何缩放定制的分析引擎?
EN

Stack Overflow用户
提问于 2017-05-23 03:01:49
回答 1查看 68关注 0票数 1

我们有一个中等规模的分析引擎,建立在弹性搜索集群之上。

我们以json的形式将发送数据存储到服务器上,这与的做法非常相似。我们在ES集群中推送整个数据。到目前为止,这相当于每天60 2TB (每月Approx 2TB)。

我们有几个月的数据保留政策,比如说6个月(按照定价计划)。

我们提供动态报告,比如..。

  1. 所有来自美国的用户都在使用chrome浏览器,并且正在使用iPhone上的浏览器。
  2. 所有来自referrer“http://www.google.com”的用户在某个特定按钮上点击的总和,这些用户来自印度,并且正在使用桌面。

问题

到目前为止,它一直对我们有很大的帮助,但我们面临着一个有待扩大的问题。因为我们已经部署了1000多个服务器来处理这个数量的数据&显示近乎实时的分析。

我在这里寻找的是,如何优化数据存储,并仍然显示几乎实时切片和切分的数据。想象一下google分析或者混合面板是如何实时存储和显示数据的。

我愿意接受任何技术转变。请提出建议。(与GA或Mix类似的是我们所拥有的特性)

你们会不会像mongodb那样在一些非SQL中存储大量的数据,并在这些数据上运行MAP-还原呢?但这可能不是实时的(我们可以期望延迟5-10分钟显示数据)。

技术栈(截至目前)使用了

  1. Apache/Nginx作为webserver +应用程序代码
  2. 编程语言(Ruby/PHP等)
  3. 通过logstash进行日志收集/解析
  4. 用于存储和查询数据的Elasticsearch集群
  5. 用Javascript编写的SDK,它将事件推送到我们的服务器(如GA)

我们存储事件有效载荷,它看起来像这样。

代码语言:javascript
复制
{
    "query_params":[

    ],
    "device_type":"Desktop",
    "browser_string":"Chrome 47.0.2526",
    "ip":"62.82.34.0",
    "screen_colors":"24",
    "os":"Mac OS X",
    "browser_version":"47.0.2526",
    "session":1,
    "country_code":"ES",
    "document_encoding":"UTF-8",
    "city":"Palma De Mallorca",
    "tz":"Europe/Madrid",
    "uuid":"A37F2D3A4B99FF003132D662EFEEAFCA",
    "combination_goals_facet_term":"c2_g1",
    "ts":1452015428,
    "hour_of_day":17,
    "os_version":"10.11.2",
    "experiment":465,
    "user_time":"2016-01-05T17:37:10.675000",
    "direct_traffic":false,
    "combination":"2",
    "search_traffic":false,
    "returning_visitor":false,
    "hit_time":"2016-01-05T17:37:08",
    "user_language":"es",
    "device":"Other",
    "active_goals":[
        1
    ],
    "account":196,
    "url":"http://someurl.com",
    "action":"click",
    "country":"Spain",
    "region":"Islas Baleares",
    "day_of_week":"Tuesday",
    "converted_goals":[

    ],
    "social_traffic":false,
    "converted_goals_info":[

    ],
    "referrer":"http://www.google.com",
    "browser":"Chrome",
    "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",
    "email_traffic":false
}

编辑

“优化数据存储”是指对于每个事件,我们在json有效负载中接收到70%相同的数据。但是,我们继续在ES中为事件创建新文档。我希望如果我们停止存储json的重复密钥,只存储在后续事件有效负载中更改的内容。从而优化存储空间。

我们在所有服务器上使用SSD。我担心的是,我们谈论的是GA的规模和类似数量的数据。我怀疑上面提到的建筑或技术能否存活下来。寻找关于这种规模的建议。

EN

回答 1

Stack Overflow用户

发布于 2017-05-23 05:19:26

我认为您已经使用了最适合这种用例的堆栈。如果还没有完成,我建议对elasticsearch优化进行微调。

一些建议可能是

  1. 考虑使用SSD而不是HDD作为弹性搜索集群。
  2. 考虑使用像"refresh_intervals“这样的微调参数
  3. 使用云自动缩放,一些负载平衡器,以处理适当的请求。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44125082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档