RabbitMQ 中实现 RPC 的机制

RabbitMQ 中实现 RPC 的机制是: 客户端发送请求(消息)时,在消息的属性(MessageProperties,在 AMQP 协议中定义了 14 中 properties,这些属性会随着消息一起发送)中设置两个值 replyTo(一个 Queue 名称,用于告诉服务器处理完成后将通知我的消息发送到这个 Queue 中)和 correlationId(此次请求的标识号,服务器处理完成后需要 …

Atlas 的架构

Atlas 是由 Qihoo 360, Web 平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在 mysql-proxy 0.8.2 版本的基础上,对其进行了优化,增加了一些新的功能特性。360 内部使用 Atlas 运行的 mysql 业务,每天承载的读写请求数达几十亿条。 1.Atlas 的整体架构 Atlas 是一个位于应用程序与 MySQL 之间中间件。在后端 …

YouTube 网站架构吐槽

YouTube 作为一个几十亿级别流量的视频网站,其站点维护人员却少之又少,这些技术人员是如何设计 YouTube 架构,使其具备如此强大的抗压能力的呢,我们接着往下看。 核心技术要点 1)Apache:站点服务器 2)Python:Web 应用主要是用 Python 搞定的 3)Linux(SuSe):操作系统(笔者:为何选用 SuSe 呢) 4)Mysql:数据库 5)psyco:这是 Pyt …

php 使用 TCP 长连接优化

一、面向人群 如果你的站点架构满足以下几点,那么本文的优化方案会非常适合你: 1)使用 php 等脚本语言作为开发语言 2)需要连接后端服务,例如 RPC 服务、memcache 或 redis 等 3)流量非常大 二、解决的问题 常见的 web 架构如上: 1)最前端是 APP 或者 web 页面 2)服务器上层是 web-server 进行接入 3)php 脚本语言调用后端数据,完成业务逻辑, …

mysql-proxy 简介

mysql-proxy 是 mysql 官方提供的 mysql 中间件服务,上游可接入若干个 mysql-client,后端可连接若干个 mysql-server,它使用 mysql 协议,任何连接 mysql 的上游无需任何更改即可迁移至 mysql-proxy 上。 mysql-proxy 最基本的用法,就是作为一个请求拦截,请求中转的中间层。 进一步的,mysql-proxy 可以分析与修改 …

缓存概览

随着Web业务的复杂和并发的增加,应用服务器和数据库服务器所做的计算也越来 越多,但是我们的应用服务器资源是有限的,数据库每秒接受并处理请求的次数也是有限 的。如何利用有限的资源提供尽可能大的吞吐量呢? 一个办法:减少计算量,缩短请求流程(减少网络 I/O 或者硬盘 I/O),这时缓存就可 以大展身手了。缓存的基本原理就是打破标准流程,在标准流程中任何环节都可以被切 断。请求可以从缓存里取到数据直 …

Redis 使用与实践

Redis是Key Value类型的内存数据库,其中Value可以是String、List、Set、 Sorted Set、 Hash 等类型的数据结构。 Redis的安装及使用 Redis把整个数据库全加载到内存当中进行操作,通过异步操作定期把数据库数据 flush到硬盘上保存。因为是纯内存操作,所以Redis的性能非常出色,每秒处理10万次 以上的读写操作,是已知性能最快的Key Value数 …

Nginx 服务器配置优化

有选择的关闭访问日志,在 Nginx 中的区段有:http、server、location等,可以在这些区段中适当地配置日志记录。 使用 epoll [code] worer_connections 65535 keepalive_timeout 60 client_header_buffer_size 8k (通过 "getconf PAGESIZE" 命令来获取页面的大小) …