首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Symfony2和Redis正名,基于PHP的10亿请求周网站打造

我们保持Varnish每个应用的服务器都保持高度可用性——没有单点故障。单个Varnish分配流量可能导致风险。分离的Varnish实例可能降低缓存hit,不过我们可以接受这个。...实际,我们可以使用Redis作为主要的数据存储。 Redis配有主从设置。通过这种方式我们获得HA——如果发生运行中断我们可以很快的将节点切换到某一个从节点。一些管理任务如升级也需要这些配置。...升级节点时,我们可以选择新的节点,然后升级先前的节点,最后交换两个节点。...与Redis设置不同,MySQL运行在配置,除高可用性外,这还提供了更好的写性能(Redis中这不是什么问题,因为我们不会耗尽性能特性。) ?...总结 多亏Symfony2,这种设置保持高性能和高可用性的同时保持了友善的开发环境——可维持,稳定。实际这是用作电商网站的关键子系统的关键业务需求。

4.3K50
您找到你想要的搜索结果了吗?
是的
没有找到

Elasticsearch Document Get API详解、原理与示例

3、Get API 内部工作机制分析 3.1 实时性(Realtime) 默认情况下,get API实时的,并且不会受到索引刷新频率的影响。...如果不使用实时获取,可以将realtime设置false。...一言以蔽之,preference的作用是同一个复制组中的路由规则。 其可选值: _primary 操作将只分片执行。 _local 如果可能的话,操作将更倾向于本地分配的碎片执行。...自定义字符串值 同一个自定义值,将会固定使用同一个分片(路由),该值通常会和会话信息绑定在一起,例如用户名,sessionId等,应用层面对各 分片节点进行分流。...本节首先罗列了文档Get API,并对GetRequest进行了详细分析,接着通过3个 示例展示Get API的使用,最后重点分析GET API 内部的实现机制(实时性、source过滤、路由、复制组内分片节点倾向性

1.9K20

使用 Docker 高效搭建本地开发环境(详细教程)

访问 ---- 本地开发之痛苦 开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题,环境变量问题,端口冲突,经编译库问题等等。...然后上线之前,可能你本地开发调试都可以完美运行,一但部署到服务器,就会出现各种问题。因为大多数情况下,我们的开发环境和生产环境并不相同。 可能你下次又有要用到一个新的开项目的开发环境。.../video/ 什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器,也可以实现虚拟化。...up命令第一次启动的时候实际就是build + start的组合,如果容器不存在,那么就build一个容器,并且启动服务,如果容器存在那么直接启动服务,大概就是这么个意思 -d的意思是后台运行 配置...配置宿主机的host 因为,往往我们访问的时候,是通过宿主机上面的浏览器发送请求的,所以,配置宿主机上面的host必不可少。

2.7K10

Elasticsearch 7.x:3、文档管理

之前我们介绍过,创建索引时需要指定分片数量,该不能修改。这是因为如果分片的数量未来改变了,所有先前的路由值就失效了,文档也就永远找不到了。...当一个请求集群执行时基本过程如下: 这个搜索的请求会被发送到一个节点。 接收到这个请求的节点,将这个查询广播到这个索引的每个分片(可能是分片,也可能是复制分片)。...了解Elasticsearch的路由机制后,我们可以创建某一类文档时指定文档的路由值,这样ElasticSearch就知道处理这一类文档时,如何定位到正确的分片。...路由机制向 Elasticsearch提供一种信息来决定哪些分片用于存储和查询。同一个路由值将映射到同一个分片。这基本就是在说:“通过使用用户提供的路由值,就可以做到定向存储,定向搜索。...操作发生后立即刷新相关的分片和副本分片(而不是整个索引),以便更新的文档立即显示搜索结果中。只有在从索引和搜索角度进行仔细考虑并验证它不会导致性能不佳之后,才能进行此操作。

1.9K51

Elasticsearch-py 2.3版本的API翻译文档(一)

可以“Exception”中查看其他异常和错误状态。...and 400 es.indices.delete(index='test-index', ignore=[400, 404]) 二、Timeout 构造客户端时可以设置全局超时(请参阅Connection...的超时参数),或者每个请求的基础使用request_timeout(浮点值,以秒为单位)作为任何API调用的一部分来设置全局超时,此值将传递给执行的perform_request方法。...这可以为解决问题或使用路由和分片首选项规划优化提供有用的反馈。...该文档可以存储索引中或由用户人工提供(1.4中添加)。请注意,对于存储索引中的文档,这是一个接近实时API,因为术语向量在下次刷新之前不可用。

5.7K50

使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节

选用Symfony2之前,我们做了大量的性能测试以保证应用程序可以支撑计划流量。我们制定了概念验证,并使用JMeter执行,我们得到了让人满意的结果——每秒700请求时响应时间可以控制50毫秒。...image.png 应用程序并没有耗尽单个Redis服务器的所有资源时,从节点主要作作备份使用,用以保证高有效性。如果节点宕机,我们可以快速的将应用程序切换到从节点。...我们使用了两个MySQL服务器,配置是Xeon E5-1620@3.60GHz,64GB RAM,SSD。两个服务器使用本地、异步的-复制。此外,我们使用一个单独的从节点作为备份。...纵向扩展失效后进行的必然是横向扩展,值得高兴的是,项目开始时我们就为数据准备了一个易于分片的结构: Redis中,我们为记录使用了4个“heavy”类型。基于数据类型,它们可以分片到4个服务器。...这种情况下,我们仍然可以运行MGET,它始终一种类型键执行。 MySQL,结构化的表格非常易于向另一台服务器迁移——同样基于记录类型(表格)。

2.8K60

elasticsearch文档Get API

Realtime 默认情况下,Get API实时的,并且不受index刷新率的影响(当数据对搜索可见时)。...如果文档已更新但尚未刷新,则Get API将发出刷新调用以使文档可见,这也会导致其他文档发生变化。如果开发者想要禁用实时GET,可以将realtime参数设置为false。...Routing 开发者如果在创建索引时指定了路由,那么获取文档时也应该指定正确的路由,如果路由设置不一致将获取不到文档。具体可以参考上篇文章,这里不再赘述。...preference 可以设置为: _primary:操作只分片执行 _local:操作会优先在本地分配的分片执行 Custom(String)value:自定义值会是一个字符串,相同的字符串可以保证相同的请求被分配到同样的副本上面...Distributed Get操作会从一个指定的分片id获得hash值,然后重定向到那个shard id所对应的分片的其中一个副本并返回结果。副本是分片及其该分片ID组中的副本。

1.3K20

【ES三周年】Elasticsearch入门

不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:分布式的实时文件存储,每个字段都被索引并可被搜索分布式的实时分析搜索引擎可以扩展到上百台服务器,处理PB级结构化或非结构化数据而且...,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。...(可以增加水平扩展能力,和并行处理能力)副本是分片的副本,分片不可用时候的备份。每个分片可以有多个副本。高可用的保障。...搜索相比索引会更复杂,因为搜索中哪些doc会被命中以及它们的分片分布是未知的查询分两个阶段,第一个阶段是查询阶段(query)查询阶段里,搜索请求会广播给所有分片(分片或副本),每个分片会在本地执行该搜索...依赖的是elasticsearch的路由机制(_reroute)默认路由使用_id, (_id % number of shard)索引的时候可以自定义路由,比如bizacctid,那么同一商家的项目会落在同一

41520

elasticsearch文档索引API(二)

,对于这个问题,读者可以使用自定义路由模式去解决,如下请求: curl -X POST "localhost:9200/twitter/_doc/1?...分布式 基于路由机制,索引操作将被定向到分片并执行,分片完成操作后,如果需要,再将更新操作分发到副本分片。...重要的是要注意,这个设置极大地减少了写操作不写入所需数量的副本分片的可能性,但是它不能完全消除这种可能性,因为这种检查在写操作开始之前发生,一旦写操作正在进行,复制仍然可能在任意数量的副本分片失败,但在分片上成功...写操作响应的 _shard字段显示复制成功/失败的副本分片的数量。 Noop Updates 当使用索引API更新文档时,即使文档没有更改,也始终创建新版本的文档。...如果这不可接受,请使用将 detectnoop设置为true的update API 。此选项索引API不可用,因为索引api无法提取旧的文档,当然也无法和新的文档进行比较,具体用法如下图: ?

87030

如何使用流处理器 Pipy 来创建网络代理

它适用于众多应用场景,包括但不限于边缘路由器、负载均衡器 & 代理解决方案、API 网关、静态 HTTP 服务器、服务网格挎斗等。...既然我们已经通过上面的docker run命令暴露了本地 8080 端口,那么我们可以同一端口上进行测试了: $ curl http://localhost:8080 执行上述命令,控制台中应该显示“...代理服务器脚本将存储根目录下,代理脚本(proxy.js)将包含并组合这些单独的模块所定义的功能。...让我们代理服务器再做一次测试,你会看到,模拟服务返回了正确的响应。...结 语 来自 Flomesh 的 Pipy 是一个开源、高性能、轻量级的网络流量处理器,适用于多种场景,包括边缘路由器、负载平衡 & 代理(正向 / 反向)、API 网关、静态 HTTP 服务器

1K10

如何使用route-detectWeb应用程序路由中扫描身份认证和授权漏洞

关于route-detect route-detect是一款功能强大的Web应用程序路由安全扫描工具,该工具可以帮助广大研究人员Web应用程序路由中轻松识别和检测身份认证漏洞和授权漏洞。...访问控制中断 2021 OWASP Top 10 #7 - 身份验证失效 2023 OWASP API Top 10 #1 - 对象级别授权中断 2023 OWASP API Top 10 #2 -...JavaScript/TypeScript: Express (express), React (react), Angular (angular) 工具安装 由于该工具使用Python开发,因此我们首先需要在本地设备安装并配置好...接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地: git clone https://github.com/mschwager/route-detect.git 或者直接使用pip工具安装最新版本的...子命令可以浏览器中可视化查看路由信息: $ semgrep --json --config $(routes which django) --output routes.json path/to/django

10610

DRBD+Heartbeat+httpd实现HA群集

Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案,可以被用于高可用群集(HA)中。...当数据写入本地文件系统时,数据还会被发送到网络中另一台主机上,以相同的形式记录在一个文件系统中。本地(节点)与远程主机(备节点)的数据可以保证实时同步。...当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。高可用群集(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。...切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。 如果服务器宕机,造成的损失是不可估量的。要保证服务器不间断服务,就需要对服务器实现冗余。...结合heartbeat和drbd既可以实现不仅保证了服务器的高可用而且也有效的将数据进行了完全的备份。 接下来就要实现一个heartbeat+DRBD+httpd的高可用性群集。

36230

PHP之内置web服务器

前言 PHP从5.4开始,就提供了一个内置的web服务器。 这个主要是用来做本地的开发用的。不能用于线上环境。现在我就介绍一下这个工具如何使用。...比如 Laravel 和 Symfony。 Laravel Laravel中的安装一节中介绍了一个命令可以使用PHP内置web服务器实现外部访问的命令。.../public/index.php'; 发现跟我之前写的路由文件相同。没错,我就是从这里抄过来的。 基本 Larvel 的实现方法就是这样了。...Symfony 如果你使用 Symfony 框架话,发现Symfony有一个组件叫做web-server-bundle,这个组件的作用跟Laravel相同,也是不借助web服务器,实现通过浏览器访问应用程序...总结 通过我们学习 PHP 命令实现web服务器访问以及对 Laravel 和 Symfony 框架的分析, 让我了解到Windows的开发过程中,我们完全可以借助该方式来摆脱对web服务器的依赖.既能方便我们

3.1K10

Elastic Stack 日志收集系统笔记

其简单的基于浏览器的界面使您能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的更改。...因此,Filebeat不是Logstash的替代品,但在大多数情况下可以并且应该同时使用。...索引建立的时候就已经确定了分片数,但是副本分片数可以随时修改。 相同节点数目的集群增加更多的副本分片并不能提高性能,因为每个分片从节点获得的资源会变少。...不能把同一索引的分片和副本分配在一个节点,这样也是没有意义的,因为只要一个节点挂了,节点分片和副本的数据就都丢失了,也就不存在什么高可用性了 创建文档 命令行下执行下面的命令可以创建文档...如图所示,我们刚刚在customer索引中创建了一个名为John Doe,ID为1的文档 可以浏览器使用http://192.168.179.134:9200/customer/_doc/1?

92321

使用 Laravel 5.5+ 更好的来实现 404 响应

Laravel 5.5.10 封装了两个有用的路由器方法,可以帮助我们为用户提供更好的 404 页面。...现在,当抛出 404 异常时,Laravel 会显示一个漂亮的 404.blade.php 视图文件,你可以自定义显示给用户 UI,但在该视图中,你无权访问 session,cookie,身份验证(auth...'; }); 所以,现在我们可以使用具有正常页面和页脚的应用布局,来替代简单的 404 视图,同时还能给用户显示一条友好的提示信息。...API 接口说明 现在当你点击 /non-existing-page 时,你会看到回退路由中定义的视图,甚至当你点击 /api/non-existing-endpoint 时,如果你也不想提供这个接口...,你可以api 回退路由中定义 JSON 响应,让我们到 api.php 路由文件中定义另外一个回退路由: Route::fallback(function() { return response

2.2K20
领券