
大规模分布计算(云、搜索引擎)
文章平均质量分 62
blade2001
这个作者很懒,什么都没留下…
展开
-
腾讯后台开发技术总监浅谈过载保护 小心雪崩效应
摘要: 每个系统,都有自己的最大处理能力,后台技术人员对此必须很清楚,且要注意自我保护,不然就会被雪球压垮,出现雪崩。雪球:对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护,可能导致历史累计的超时请求达到一定规模,像雪球一样形成恶性循环。由于系统处理的每个请求都因为超时而无效,系统对外呈现的服务能力为0,且这种情况下不能自动恢复。腾讯后台开发技术总监b转载 2016-08-12 16:01:13 · 7974 阅读 · 0 评论 -
golang编程之获取命令行参数及环境变量
http://blog.chinaunix.net/uid-24774106-id-3990722.html 我们写习惯了C代码,都知道了解析输入参数argc argv,获取环境变量env,常见的C语言main函数有: int main(int argc,char* argv[],char** envp) 我们首先给出C语言的获取命令行参数和环转载 2015-12-25 16:38:50 · 5874 阅读 · 0 评论 -
Go lang学习
1.在 Go 中,首字母大写的名称是被导出的。2.函数参数类型在变量名 _之后_func add(x int, y int) int {return x + y}3.当两个或多个连续的函数命名参数是同一类型,则除了最后一个类型之外,其他都可以省略。func add(x, y int) int {return x + y}4.函数可以返回任意数量的返回值。fu原创 2015-12-25 13:27:33 · 1722 阅读 · 0 评论 -
Golang的log包哪个好用?
我大概要那么几个功能,log到文件,可以分级,可以配置(比如命令行或者配置文件选为release,那么Info的就不log出来),log文件大小到一定程度创建新文件(不然太慢了)。你说的这些功能,通过给Logger设置自己实现的Writer就可以实现。 一般都是自定义个io.Writer实现一些文件分割的功能,然后用标准库的log包。用seelog吧。发一个自己转载 2016-01-09 10:45:22 · 6440 阅读 · 0 评论 -
golang连接mysql
http://www.01happy.com/golang-mysql-demo/golang本身没有提供连接mysql的驱动,但是定义了标准接口供第三方开发驱动。这里连接mysql可以使用第三方库,第三方库推荐使用https://github.com/Go-SQL-Driver/MySQL这个驱动,更新维护都比较好。https://github.com/go-sql-driver/m转载 2016-01-09 10:06:32 · 1213 阅读 · 0 评论 -
常用性能指标描述
Number of Concurrent Users (NCU):并发用户数 – 在指定时刻,系统观察到的并发用户连接数。 Request Per Second (RPS):每秒处理请求数 – 指示服务器平均每秒钟能处理的用户事务请求数量。 Response Time:响应时间 – 指从客户发出一个事务请求到收到处理结果的最后一个字节的时间长度。 Time to First转载 2015-12-22 10:30:26 · 1830 阅读 · 0 评论 -
魅族多机房部署方案
http://blog.chinaunix.net/uid-30571370-id-5465017.html我们为什么要做多机房部署魅族经过2014-2015年的转型以及销量大爆发后,随之而来的互联网服务业务越来越多,用户基数越来越大,之前单机房的扩展架构已经满足不了魅 族的发展,此外加上国内复杂网络环境下,单机房无法满足我们的可靠性需求。近年经常出现的光缆转载 2015-11-27 14:04:48 · 3764 阅读 · 0 评论 -
Redis之七种武器
长生剑、孔雀翎、碧玉刀、多情环、离别钩、霸王枪、拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings、Hashs、Lists、Sets、Sorted Sets、Pub/Sub、Transactions 也比作七种武器,为大家讲解Redis的七种特性,并列举其适合的应用场景。StringsStrings 数据结构是简单的key-value类型,value转载 2015-11-26 11:38:18 · 601 阅读 · 0 评论 -
Redis系列(0)---应用场景
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:转载 2015-11-09 10:19:48 · 517 阅读 · 0 评论 -
浅谈过载保护
http://djt.qq.com/article/view/156雪球:对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护,可能导致历史累计的超时请求达到一定规模,像雪球一样形成恶性循环。由于系统处理的每个请求都因为超时而无效,系统对外呈现的服务能力为0,且这种情况下不能自动恢复。作者bison,腾讯后台开发技术总监。 过载保护,看似转载 2015-10-28 14:00:56 · 735 阅读 · 0 评论 -
海量互联网服务设计中的有损价值观
http://djt.qq.com/article/view/61海量互联网系统访问量、存储规模等都远大于企业、金融、电信等行业的系统。其系统设计中有损的价值观主要体现在两个方面,1、放弃绝对的一致,重新分配一致性、可用性、可分布三者的权重。2、柔性可用,合理的降级服务体系。本篇就这两点与大家进行一个探讨。 一、放弃绝对的一致 先重温一转载 2015-10-28 14:21:41 · 551 阅读 · 0 评论 -
twemproxy简介-redis和memcache代理服务器
twemproxy exploretwemproxy,也叫nutcraker。是一个twtter开源的一个redis和memcache代理服务器。 redis作为一个高效的缓存服务器,非常具有应用价值。但是当使用比较多的时候,就希望可以通过某种方式 统一进行管理。避免每个应用每个客户端管理连接的松散性。同时在一定程度上变得可以控制。 搜索了不少的开源代理项目,知乎实现的python分片客户转载 2015-11-09 09:56:27 · 1027 阅读 · 0 评论 -
Go语言并发之美
http://www.cnblogs.com/yuxingfirst/archive/2012/11/28/2792366.html简介 多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程转载 2015-11-09 09:54:34 · 1106 阅读 · 0 评论 -
多进程支持高并发
http://blog.youkuaiyun.com/win_lin/article/details/7755773多进程结构是实现那些服务内容不相关的服务器的os层面的自然抽象。1. 容错:若系统在提供服务时,服务单元之间界限清晰没有或很少交互(例如浏览两个不相关的网页),而服务单元有很大可能出错,希望出错时不影响其他单元。2. 高性能:服务器若支持多CPU或超线程,多线程无法完转载 2015-07-20 16:16:23 · 2269 阅读 · 0 评论 -
高性能、高并发、高扩展性和可读性的网络服务器架构:StateThreads
http://blog.youkuaiyun.com/win_lin/article/details/8242653译文在后面。State Threads for Internet ApplicationsIntroductionState Threads is an application library which provides a founda转载 2015-07-20 15:58:37 · 1414 阅读 · 0 评论 -
如何做一个快速运转的大规模网络开发公司
http://2014.54chen.com/blog/2014/12/11/how-to-big-network/受《精益创业》 http://www.duokan.com/book/35802 这本书影响甚多,然而在思考和实施的过程中,却又遇到各种各样的问题。不仅仅是一些令人苦恼的“人的问题”,还有一些,是无从下手、或者不知道未来是怎样的疑惑。以下,列出一些“看得见的未转载 2015-07-07 15:20:08 · 932 阅读 · 0 评论 -
Thrift可扩展高性能的通信服务框架
Thrift可扩展高性能的通信服务框架The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficie转载 2015-07-07 15:34:40 · 4224 阅读 · 1 评论 -
中大型移动互联网公司技术架构选择
http://ju.outofmemory.cn/entry/66469以下内容由[五四陈科学院]提供总体思考总结这些年经验,进行构架演进的方向选择时,大致要做到下面的目标:可快速开发部署 (五分钟写出来一个经过测试的hello world并可访问/调用,并可在公网访问)天然可扩展(业务层无状态,尽可能全部放到最后)自动化(内存不足了,除了报警,应该自动加点机器转载 2015-07-07 14:55:00 · 1176 阅读 · 0 评论 -
golang编程之文件操作
http://blog.chinaunix.net/uid-24774106-id-3993609.html操作文件是任何编程语言都绕不过,要掌握一门语言,知道如何操作文件是必不可少的,今天学习了下golang对文件操作的支持。 golang对文件的支持是在os package里。我无意将本文写成官方文档的模样,我只是想讨论如何利用这些接口操作文件。 OPEN转载 2015-12-25 16:42:39 · 4793 阅读 · 0 评论 -
golang编程之时间编程
http://blog.chinaunix.net/uid-24774106-id-4006530.html编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这转载 2015-12-25 16:44:06 · 863 阅读 · 0 评论 -
如何理解“可靠性”和“可用性”?
http://blog.youkuaiyun.com/cszhouwei/article/details/38459095前言相信点开这篇文章的读者,一定或多或少接触过“高可靠”“高可用”这些字眼,但是往往或语焉不详,或罗列术语(MTBF、MTTR ...),那么我们到底应该如何定量描述系统的可靠性和可用性指标呢,这些看着很上流的术语到底意味着什么呢?也许,看完这篇文章转载 2015-12-25 17:22:37 · 1275 阅读 · 0 评论 -
Redis vs memcached vs mongo
Redis vs memcached vs mongoRedis vs memcached:Redis作为一个高性能的key-value数据库具有以下特征: 1.多样的数据模型(String、Hash、List、Set和Sorted Set) 2.持久化-bgsave(使用RDB快照的方式,在发起落地指令时,fork 出一个进程把整个内存 dump 到硬盘上(for转载 2016-08-12 15:51:50 · 2115 阅读 · 1 评论 -
论系统架构中的单点
单点设计的优缺点:优点:1. 简化系统设计2.减少前期工作量缺点:1.非高可用2.性能瓶颈优化手段:1.shadow-master(active/standby)模式解决单点高可用问题:keepalived+vip2.减少与单点的交互:批量写入, 前端缓存3.水平扩展http://mp.we转载 2016-07-11 18:40:24 · 1839 阅读 · 0 评论 -
Golang 模块扩展
errorsExtension module of golang error processinglogExtension module of golang loggingrpcGolang rpc client based on httpbytesExtension modul原创 2016-05-09 21:39:42 · 3110 阅读 · 0 评论 -
性能调优攻略
http://coolshell.cn/articles/7490.html关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家可以移步去看转载 2016-05-23 14:27:15 · 2335 阅读 · 0 评论 -
MSDN关于I/O完成端口
http://blog.sina.com.cn/s/blog_47642c6e0102w1se.html刚翻译一篇MSDN的文章,关于完成端口,也许其他人已经翻译过了,不过我自己再翻译一遍,希望摸得更准一点。========================================================I/O Completion Ports转载 2016-05-16 21:20:41 · 1600 阅读 · 0 评论 -
服务器的处理器核心真的越多越好?
http://noops.me/?p=1770这里我们不再赘述有关寄存器、ALC等处理器架构和原理知识。我们只从直观的数据去分析和了解我们正在使用的多核处理器的真实性能——正所谓“是骡子是马拉出来溜溜”。一切建立在实际运行的数据才是真正有价值的评判依据。 在开始数据分析之前,我们必须弄清楚处理器的计算能力到底是什么:是频率决定了性能?还是核数决定了性能?转载 2016-03-08 19:57:23 · 14405 阅读 · 2 评论 -
Redis应用场景
1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。 2转载 2016-03-08 19:17:39 · 674 阅读 · 0 评论 -
用redis实现支持优先级的消息队列
http://www.cnblogs.com/happyday56/p/4142761.html为什么需要消息队列系统中引入消息队列机制是对系统一个非常大的改善。例如一个web系统中,用户做了某项操作后需要发送邮件通知到用户邮箱中。你可以使用同步方式让用户等待邮件发送完成后反馈给用户,但是这样可能会因为网络的不确定性造成用户长时间的等待从而影响用户体验。转载 2016-03-08 19:15:49 · 850 阅读 · 0 评论 -
小米开源的基于twisted实现的智能dns系统:Smartdns
https://github.com/xiaomi-sa/smartdns使用场景: 全局负载均衡smartdns是python语言编写,基于twisted框架实现的dns server,能够支持针对不同的dns请求根据配置返回不同的解析结果。smartdns获取dns请求的源IP或者客户端IP(支持edns协议的请求可以获取客户端IP),根据本地的静态IP库转载 2016-03-08 19:12:05 · 5655 阅读 · 0 评论 -
老庙黄金2016春晚抢红包活动技术架构详解
https://yq.aliyun.com/articles/7442?spm=5176.team24.teamshow1.12.KE1gur摘要抢红包、秒杀等营销手段现在越来越流行了,而这种活动却带给IT攻城狮们巨大的挑战。抢红包系统从前端看起来都是很简单的,但实际上对应的后端系统却非常复杂,因为瞬时高并发所带来的问题将整个系统架构的复杂度提升了几个数量级。 笔者所在的驻云科转载 2016-03-08 19:03:40 · 1650 阅读 · 0 评论 -
CAP定理
CAP定理指在设计分布式系统时,一致性(Consistent)、可用性(Availability)、Partition Tolerance(分区容忍性)三个属性不可能同时满足,该定理也叫做布鲁尔定理。CAP定理明确了分布式系统所能实现系统的局限性,目前互联网中的很多分布式系统是基于首要满足可用性和分区容忍性而设计的。在这里,不打算提及目前火热的Cassandra、Voldemort等分布式存储系统转载 2016-03-05 21:21:31 · 564 阅读 · 0 评论 -
为什么,何时使用ActiveMQ
http://jfires.iteye.com/blog/11878871.2使用ActiveMQ:为什么,何时 时间回到2003年,一群开源开发者集合在一起形成了Apache Geronimo。之后,他们发现当前没有好用的使用BSD-style许可协议的消息代理器。Geronimo是由于java EE兼容性需要一个JMS实现。所以一些开发者开始讨论其可能性。拥有转载 2016-02-04 15:50:23 · 3951 阅读 · 0 评论 -
libevent简介和使用
文章来源:http://blog.youkuaiyun.com/yyyiran/article/details/12219737libevent是一个基于事件触发的网络库,memcached底层也是使用libevent库,今天学习下。总体来说,libevent有下面一些特点和优势:* 统一数据源, 统一I/O事件,信号和定时器这三种事件;* 可移植,跨平台支持多种I/O多路复用转载 2016-01-15 11:09:28 · 977 阅读 · 0 评论 -
Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
文章来源:http://zhangge.net/5037.html昨天在公司微信群,CTO分享了这个消息,对运维来说以后基于TCP协议的后端业务的高可用又多了一个新的选择,实在是棒极了!一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy。这算是一个nginx比较明显的缺憾。不过,在转载 2016-01-15 11:07:12 · 1586 阅读 · 0 评论 -
LVS -linux L4 load balance
LVS集群的负载调度: http://www.linuxvirtualserver.org/zh/lvs4.htmlIPVS(也叫LVS)的源码分析之persistent参数: http://blog.youkuaiyun.com/raintungli/article/details/39051435只要persistent参数设定的秒数大于LVS重启周期, 理论上就做到了session sticky转载 2016-01-14 15:09:12 · 1033 阅读 · 0 评论 -
LBS中从数据库查询某经纬度2KM范围内的数据 - 针对大数据量的性能优化
之前很啥很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的启示。MySQL性能调优 – 使用更为快速的算法进行距离计算最近遇到了一个问题,通过不断的尝试最终将某句原本占据近1秒的查询优化到了0.01秒,效率提高了100倍.转载 2016-01-13 17:24:27 · 1910 阅读 · 1 评论 -
基于LBS的兴趣点查询
问题:在服务端保存有海量的兴趣点(POI,Point of Interest),根据用户的位置,如何判断用户当前出在哪个POI呢?分析:兴趣点是海量的,用户也是电信级的。如果每次查询用户所处的兴趣点,都要将全部兴趣点取出来计算一遍距离,从中选取最小的,这样会给服务端带来极大的压力(计算量级别约为:兴趣点数*用户数)。我们知道赤道约为4万公里,1度大约为111公里,1转载 2016-01-13 17:22:27 · 1098 阅读 · 0 评论 -
移动互联网api设计实践
http://www.54chen.com/web-ral/mobile-net-api-design.html过去一年时间里,都在做中国移动互联网下的API设计工作,所面对的情况可能是最具中国特色的了。如果你在尝试构架一整套的新的API供你的客户端使用,可以尝试以下的几点:1)api所使用协议,要能够不怕被加js、加广告和各种代码。全国各地的运营商,有习惯挂广告、加代码等等,转载 2015-07-07 14:53:42 · 504 阅读 · 0 评论 -
大规模业务服务器开发总结
大比小好开发阶段,服务不稳定,一个大服务不如一堆小服务; 运维阶段,服务都稳定了,一堆小服务又不如一个大服务。大规模的时候了,如果能够一个进程搞定的,尽量不要拆两个进程。少比多好如果都是大服务,自然而然地,服务数量就少。服务数量少,运维成本就相应低。快比慢好一个进程,跑得越快,qps越高,所能使用的资源越多,越能“物尽其用”。直连比队列好常见的进程间内网通讯,一转载 2015-07-07 14:49:07 · 537 阅读 · 0 评论