Nik*_*ntz 0 bitnami elasticsearch google-compute-engine google-cloud-platform google-app-engine-python
如果我在 GCE 中使用来自 Bitnami 的 ElasticSearch 图像,我是否需要一个单独的Memcached 虚拟机,或者最好通过其他方式(在客户端本地或通过 Web 缓存)甚至内置于 ElasticSearch 中使用 Memcached 进行缓存?我是否应该在类似于此示例的 appengine 灵活环境中的 docker 容器中使用 Elasticsearch 和 Memcached 来扩展运行时?
背景是我想升级最初是python2.7 google appengine webapp的项目,但是python3版本的google appengine for python已经弃用了memcached API和ndb search API,所以我正在考虑是否使用实例在带有 ElasticSearch 和/或 Memcached 的 GCE 中,我可以在 python3.8 appengine webapp 和运行 ElasticSearch 的某个实例之间划分服务。我试过了,这是一次很好的体验。
我还准备考虑除 ElasticSearch 之外的其他替代方案(Web UI 是使用语义 UI和自定义 JS 创建的)。迁移从用户模型远webapp2的,我们要利用火力进行用户认证,并保持了Python应用程序引擎,NDB现在,但我们正在考虑从NDB模型移开,因为我们存储的主要数据为用户配置文件(现在可以存储在 Firebase 中)和短期数据(保存在 appengine 数据存储中)。如果这个项目是今天从头开始创建的,我可能会使用 Firebase 来处理所有事情,并通过 API 从前端层直接连接到它,但我明白如果我使用 Firebase
我建议您在添加额外的缓存层之前先优化您的 elasticsearch。添加额外的缓存层会随着维护请求的增加而增加成本,因此最好花费成本和精力来优化 elasticsearch。
在优化 elasticsearch 时,您需要考虑查询的复杂程度以及您需要多大的页面大小。Elasticsearch 非常强大,可以处理大量请求,并且通过 Google Marketplace 使用托管的 Elasticsearch 集群,您可以轻松增加弹性和可扩展性。我建议您检查一下价格是否符合您的要求。如果需要,您现在可以通过 GCP 结算进行合并结算。请参阅:https : //console.cloud.google.com/marketplace/details/google/elasticsearch
我建议您将数据加载到 elasticsearch 中,然后对您的 elasticsearch 实例进行负载测试,看看您获得了什么样的吞吐量和响应时间。您可以使用开发工具中的 Kibana 分析查询性能
Elasticsearch 查询缓存
默认情况下启用缓存,但您可以通过查询字符串对其进行管理。如果设置,它将覆盖索引级别设置:
GET /my_index/_search?request_cache=true
{
"size": 0,
"aggs": {
"popular_colors": {
"terms": {
"field": "colors"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
见:https : //www.elastic.co/guide/en/elasticsearch/reference/current/shard-request-cache.html
请求压缩响应 特别是当您的响应大小很大时,您应该请求压缩响应,这将有助于提高吞吐量。默认不压缩。您可以通过将以下标头添加到 elasticsearch 查询请求标头来完成此操作。
Accept-Encoding: deflate, gzip
有效管理分片和副本:
根据您在 elasticsearch 中存储的数据类型以及查询数据的方式,您可能需要进一步优化。如果您的查询性能不足,则可以进行分析和优化。这是一个很好的起点:https : //www.elastic.co/blog/advanced-tuning-finding-and-fixing-slow-elasticsearch-queries
添加副本相当简单,但更改分片需要重建集群。所以最好在上线之前,在创建索引的时候把它弄好,也就是e
PUT /twitter
{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是更改索引副本的方法
PUT /twitter/_settings
{
"index" : {
"number_of_replicas" : 2
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |