- 博客(369)
- 资源 (26)
- 问答 (1)
- 收藏
- 关注
原创 记一次MySQL 5.7.10的binlog文件轮转(rotate)引起卡顿(block)出现慢日志的处理过程
描述:程序反映当一个游戏服开服一段时间后,其使用的MySQL每隔一段时间都会出现几十条慢日志,慢日志集中在1到2秒内连续刷出,卡顿平均在60秒左右。一天当中每个时间段都有概率出现,即使是半夜3,4点没什么玩家的时候。定位(trouble troubleshooting):根据描述,基本排除是程序代码的问题,因为游戏高峰期打世界BOSS的时候(每天中午12点玩家最活跃的时候)都不会...
2019-05-05 15:53:42
1428
原创 君临天下服务端架构调研
前面的话:本文只是本人单纯的臆测,如有雷同,纯属巧合。1、游戏说明玩法跟COC基本没区别,只不过除了普通的兵,多了一些武将,并且社交系统比COC加强了不少,但总体来说交互性和实时性还是比较弱的。阅读以下文档之前最好对此款游戏有一些基本了解。此文档目的在于理清使用云平台架构全球大服的思路,若以后有类似的需求,可以进行一些参考。 2、机房架构及说明首先看看全局的架构图:
2015-09-06 16:26:06
3888
转载 RocketMQ与Kafka对比(18项差异)
转自:https://github.com/alibaba/RocketMQ/wiki/rmq_vs_kafka淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,
2015-01-18 22:42:30
127799
17
原创 使用Thrift API监控Storm集群和Topology
如要监控Storm集群和运行在其上的Topology,该如何做呢?Storm已经为你考虑到了,Storm支持Thrift的C/S架构,在部署Nimbus组件的机器上启动一个Thrift Server进程来提供服务,我们可以通过编写一个Thrift Client来请求Thrift Server,来获取你想得到的集群和Topology的相关数据,来接入监控平台,如Zabbix等,我目前使用的就
2015-01-14 11:54:21
8422
翻译 Storm的一些通用的Topology的模式
原文地址:http://storm.apache.org/documentation/Common-patterns.html此文档有许明明的翻译:http://xumingming.sinaapp.com/189/twitter-storm-storm%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E8%A7%81%E6%A8%A1%E5%BC%8F/但
2015-01-13 16:22:20
4319
原创 Ubuntu连接android手机
在ubuntu下连接android设备,虽然不用像windows那样安装驱动,然而却会遇见一个错误:输入adb shell,会提示insufficient permissions for device,输入adb devices,设备名称会显示 ????????等一大堆问号。这是因为ubuntu默认是以非root用户运行的。如果要使用adb 进行usb调试,使用root账号去执行相关命令固
2015-01-09 10:30:04
1130
原创 推荐一个查询Java类用法的网站
有时候我们需要知道一些类的用法,但又不知道去哪儿找到使用的例子,又或者这个例子比较难找,我们懒得去找,那么现在推荐一个网站来帮助我们。网站URL如下:http://www.programcreek.com/java-api-examples/我们可以输入一个类的全限定名,或者这个类部分的名字。例如搜索"java.nio.channels.FileChannel"或者"FileC
2015-01-08 11:15:08
9581
1
原创 iOS推送功能需求要点
经过对百度&友盟&极光&AVOS这几家的iOS推送的文档研读,demo试用,综合上述四者整理出一份简洁的功能需求要点。 添加应用页面页面上应有上传p12证书和设置密码的功能。(分别为开发环境和正式环境)AVOS和百度要求证书必须不设密码,但因为使用到的开源库的要求,还是应该要求设置密码。其中友盟支持的证书格式为pem和p12两种,其他都只支持p12,为简单起见我们只支持p12。
2015-01-04 16:21:13
3434
原创 Storm学习资料汇总
电子书 《Getting Started With Storm》介绍了Storm基础API,并发编程网有整本书的翻译 ,此书使用的storm的版本为0.6,虽然从版本上看有些过时,但基础的思想还是没有变的。其中并没有Trident的介绍。有英文电子版。 《Storm Real-Time Processing Cookbook》cookbook的形式,介绍得比较泛,补充着看看就好
2015-01-04 16:21:07
4663
原创 Storm官网上的各公司的使用介绍
其实这些介绍就是第三方使用者写的,比如我是一个使用者,在公司大规模运用Storm后,把使用情况邮件到官方,官方觉得OK了,就搬运过来。原创翻译,如有错误请指出,谢谢。原文链接下面选择一些国内的公司的情况进行介绍(原创翻译,持续更新ing..)淘宝网我们使用Storm来做一些实时的日志统计,从日志中抽取有用的信息。日志是存在一个类似Kafka的持久化消息队列中(MetaQ,
2015-01-04 16:21:01
2747
原创 【转】基于Trident构建大规模实时流数据处理系统
刊载于程序员杂志2013年2月号大数据处理:批量数据处理和流数据处理Hadoop家族在大数据处理方面的能力已经得到业界认可,但它更适用于对集群上的大数据进行批量处理,并不使用于实时处理大规模流数据。包括雅虎在内的互联网公司都在尝试建立适用于大规模流数据处理的系统,Twitter的Storm就是其中之一。本文将主要介绍Storm Trident以及雅虎如何基于Storm Trident构
2015-01-04 16:20:55
1445
原创 Flume架构设计
我们的架构设计的思路跟美团大同小异,也是分为agent层,collector层和store层。具体可参考美团架构1,美团架构2,下面只是一些补充:下面是我们自己的架构图:总体架构数据流图下面的图描述一条日志消息从客户端产生,经过了怎样的过程最终被消费的。架构说明美团的文档中已对这个架构的优越性进行了说明,比如可用性,可靠性和可扩展性,这里就不赘述了。美
2015-01-04 16:20:49
897
原创 智能心跳调研和初步设计
这是近期参与的一个云推送项目调研的一点东西,贴上来做个备份:)如需转载,请注明出处:)综述所谓的心跳机制,就是周期性的给服务器发送一个数据包,避免该连接上长期没有数据传送,被传输网络中的防火墙或者NAT等设备中断,就是当一个TCP会话的两个连续报文到达防火墙的时间间隔大于该会话的保持时间时,为了保证网络的安全性,防火墙会从会话表中删除相应的会话信息,后续报文到达防火墙后,防火墙根据自身
2015-01-04 16:20:43
849
原创 手把手教你用jpcap抓包
本文原创,转载请注明出处~ 在工作中经常需要抓包进行分析,我们可以使用各种工具来抓包,比如常用的tcpdump和wireshark。但有时候我们想用程序来进行控制,比如把抓到的包存储到数据库中,以后可以进行查询等等。我在工作中用的是Java,那么就用它来做示范吧。 本教程在centos和ubuntu上测试通过。 1)安装libpcap库先安装底层使用的库吧,我们用到了l
2015-01-04 16:20:36
6502
原创 ssdb管理后台ssdbAdmin部署指南
github地址:https://github.com/jiorry/ssdbAdmin,感谢作者的贡献:)最近在用ssdb,用来替换一部分redis的需求,从而节省服务器成本,效果不错,非常推荐。如果有一个后台来给开发人员管理ssdb上的数据是再好不过了,所以就找到了ssdbAdmin,下面是部署的步骤: 1,安装Go语言环境此项目用Go语言实现的,所以先得安装Go语言的环境
2015-01-04 16:20:31
1096
原创 Kafka学习之监控
参考文档:https://kafka.apache.org/documentation.html#monitoring Kafka使用Yammer Metrics来报告server和client的众多metric。还可以使用其他的插件来跟你的监控系统连接起来,比如https://cwiki.apache.org/confluence/display/KAFKA/JMX+Reporters中
2015-01-04 16:20:25
12248
原创 Kafka学习之源代码环境搭建(eclipse)
主要参考:https://cwiki.apache.org/confluence/display/KAFKA/Developer+Setup#DeveloperSetup-Eclipsesetup 下面是我自己的步骤: 1,安装Eclipse,略过,我的版本是: 2,安装scale插件,注意要跟你的eclipse版本对应,访问http://scala-ide.org/downl
2015-01-04 16:20:19
4250
原创 Kafka学习之Replication tools之StateChangeLogMerger Tool
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-7.StateChangeLogMergerTool此工具能做啥 ? 此工具的目标是从集群中的各个broker中收集数据并格式化最后合并成一个文件来帮助我们查看state changes,查明问题。集群中的每
2015-01-04 16:20:13
1272
原创 Kafka学习之Replication tools之Reassign Partitions Tool
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-6.ReassignPartitionsTool此工具能做啥?此工具的作用跟Referred Replica Leader Election工具类似,都是为了平衡集群的负载。但工具不仅为某一个partitio
2015-01-04 16:20:07
3297
原创 Kafka学习之Replication tools之Add Partition Tool
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-5.AddPartitionTool此工具能做啥?Kafka的partition表示并发度的单元:一个topic的消息可以分布到多个partition上,并存储在多个server上。一旦创建了一个topic,就要
2015-01-04 16:20:01
1652
原创 Kafka学习之Replication tools之Create Topic Tool
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-3.ListTopicTool此工具能干啥?如果设置auto.create.topics.enable为true,则Kafka会默认自动创建topic。会使用默认的partition数量,replication
2015-01-04 16:19:55
1538
原创 Kafka学习之Replication tools之List Topic Tool
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-3.ListTopicTool此工具能干啥?此工具列出了一个指定的topic的列表的信息。如果在命令行中没有提供topic,则会向ZK查询,获得所有的topic并展示它们的信息,其中有topic的名字,parti
2015-01-04 16:19:48
1022
原创 Kafka学习之Replication tools之Preferred Replica Leader Election Tool
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-2.PreferredReplicaLeaderElectionTool这工具做了啥?为了支持replication功能,每一个partition可以有多个replica。一个partition的replica列
2015-01-04 16:19:42
4368
原创 Kafka学习之Replication tools之controlled shutdown
原文地址:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-1.ControlledShutdowncontrolled shutdown是啥意思?在0.8版本中,每一个partition可以有多个replica。这些replica分布在多个broker上,提供了高可用。
2015-01-04 16:19:36
1925
原创 Kafka学习之consumer配置(0.8.1版)
group.id 默认值:无唯一的指明了consumer的group的名字,group名一样的进程属于同一个consumer group。 zookeeper.connect 默认值:无指定了ZooKeeper的connect string,以hostname:port的形式,hostname和port就是ZooKeeper集群各个节点的hostname和port。 ZooKeep
2015-01-04 16:19:30
17257
原创 Kafka学习之producer配置(0.8.1版)
metadata.broker.list 默认值:无,必填格式为host1:port1,host2:port2,这是一个broker列表,用于获得元数据(topics,partitions和replicas),建立起来的socket连接用于发送实际数据,这个列表可以是broker的一个子集,或者一个VIP,指向broker的一个子集。 request.required.acks 默认值
2015-01-04 16:19:24
1870
原创 Kafka学习之broker配置(0.8.1版)
broker.id 默认值:无每一个broker都有一个唯一的id,这是一个非负整数,这个id就是broker的"名字",这样就允许broker迁移到别的机器而不会影响消费者。你可以选择任意一个数字,只要它是唯一的。 log.dirs 默认值:/tmp/kafka-logs一个用逗号分隔的目录列表,可以有多个,用来为Kafka存储数据。每当需要为一个新的partition分配一个
2015-01-04 16:19:18
1004
原创 ZooKeeper学习之client connect string的管理
如果我们要写一个ZooKeeper的client程序,那么有一个相关的配置:connect string,它通常以用逗号分隔的host:port对来表示。host可以用一个IP地址或hostname来表示。使用一个hostname提供了一个中间层将服务器标识与实际的IP隔离开来,这样即使管理员变动了ZooKeeper某个server的部署,client端也不会改动。 然而,这种灵活性是有限
2015-01-04 16:19:12
5266
原创 ZooKeeper学习之配置【7】ensemble配置
quorum这个概念深深嵌入了ZooKeeper的设计中,尤其是当处理请求和在replicate模式中进行选举leader时尤为相关。如果ZooKeeper的各个server的quorum起来(up)时,ensemble才能继续(make progress)。Majority Rules当一个ensemble有足够的Zookeeper server时,便能够开始处理请求,可以把这些serv
2015-01-04 16:19:06
1761
原创 ZooKeeper学习之Observer模式及其配置
除了leader和follow模式之外,还有第三种模式:observer模式。observer和follower在一些方面是一样的。详细点来讲,他们都向leader提交proposal。但与follower不同,observer不参与投票的过程。它简单的通过接收leader发过来的INFORM消息来learn已经commit的proposal。因为leader都会给follower和observe
2015-01-04 16:19:00
3967
原创 ZooKeeper学习之配置【6】日志配置
ZooKeeper使用SLF4J(the Simple Logging Facade for Java)作为日志的抽象层,默认使用Log4J来做实际的日志工作。使用2层日志抽象看起来真是够呛,这里简要的说明如何来配置Log4J。尽管Log4J非常灵活且强大,但它也有一些复杂,可以用一整本书来描述它,这里只是简要的介绍一下基本的用法。 Log4J的配置文件名为log4j.properties
2015-01-04 16:18:54
14433
原创 ZooKeeper学习之配置【5】不安全的选项
下面这些选项也许会有用,但使用的时候一定要小心,他们只适用于一些特殊的场景,其中的大多数选项一般是不需要进行配置的。 forceSync决定了写进去的数据是否应该sync到磁盘(zookeeper.forceSync),yes或者no。默认值为yes,在数据被sync到磁盘之前,事务对应的ack不会被发送回leader。sync系统调用很昂贵,且是事务处理中耗时最大的步骤。如果设
2015-01-04 16:18:48
2857
原创 ZooKeeper学习之配置【4】集群配置
当配置一个集群时,我们需要为每一个server配置好时间相关的参数,并指定一个server列表,这样server之间就能彼此连接并检测失败。这些配置必须在所有server中保持一致。 initLimit此值的作用是一个follower初始化连接到leader的超时时间,单位是tickTime。当一个follower对leader发起一个初始化连接时,可能会有很多数据要传输,特别是如
2015-01-04 16:18:42
1197
原创 ZooKeeper学习之配置【3】网络配置
下面这些配置对client与server之间的连接和超时时间进行了限制。 globalOutstandingLimit这个配置指定了等待处理的最大请求数量的限制(zookeeper.globalOutstandingLimit)。client发送请求的速度可能会比server端处理的速度快,会导致请求在server端排队,最终(在若干秒内)会使server的内存耗尽。为了避免这一点
2015-01-04 16:18:36
2637
原创 ZooKeeper学习之配置【2】存储配置
本文涵盖了更多的高级配置,包括了standalone模式和ensemble模式。不设置它们也能让ZooKeeper工作得很好,但是其中的一些应该需要好好配置一些(比如dataLogDir)。 preAllocSize为每个事务日志文件预分配(preallocate)的大小,单位为kilobyte。(zookeeper.preAllocSize)当开始写事务日志时,server每次都
2015-01-04 16:18:30
1619
原创 ZooKeeper学习之配置【1】基本配置
ZooKeeper的设计对开发人员来说很友好,但同时也对运维人员友好。当集群越来越大时,管理操作也便得复杂起来,稳妥的管理也变得重要起来。ZooKeeper应该是一个标准的分布式系统组件,一个运维团队可以轻松的学习并管理它。虽说ZooKeeper很容易跑起来,但对于一些配置选项必须牢记在心。你应该很熟悉你的ZooKeeper服务,并使用一些管理工具方便的管理它。 为了让一个Zo
2015-01-04 16:18:23
989
原创 ZooKeeper学习之文件系统的布局和格式
本文来谈谈快照文件,事务日志文件在文件系统中是如何存放的。 写事务日志是事务处理的关键步骤,所以高度建议在一个独立的磁盘上存储。快照不需要在独立的磁盘存储,因为它们是由一个后台线程以懒汉式的(lazily)方式产生的。存储快照的路径是由DataDir参数指定的,事务日志的路径则是由DataLogDir参数指定的。首先来看看事务日志的目录。如果你查看目录的内容,你会看到一个名为versi
2015-01-04 16:18:18
5212
原创 ZooKeeper学习之本地存储(事务日志与快照)
在上一篇的server代码骨架中已提到,当处理proposal时,是由SyncRequestProcessor来处理的,下面就来对这其中的操作做更详细的分析。日志和磁盘使用情况server是使用事务日志来持久化事务的。在accept一个proposal请求之前,server(follower或者leader)把这个proposal以事务的形式持久化到事务日志,按照顺序进行append。se
2015-01-04 16:18:12
1874
原创 ZooKeeper学习之server端实现的基本骨架
在ZK的源码中,leader,follower和observers的代码结构是高度统一的。在实现中主要的抽象就是request processor了。在处理消息的流水线(pipeline)中有很多不同的阶段,一个request processor代表其中的一个阶段,每一种server类型(无论leader,follower还是observer)实现了某一个特定的request processor的
2015-01-04 16:18:06
1284
原创 ZooKeeper学习之运维工具zkweb
这是淘宝上的开源项目,地址:http://code.taobao.org/p/zkweb/wiki/index/ 这是一个Java写的web应用程序,可以通过浏览器查看,管理ZooKeep上的数据,可以方便管理。此外还有一些其他的类似程序,先不去看了,这个暂时能满足需求了。简单起见以我整理的程序为准开始部署,请下载附件中的程序。 1,导入程序这是一个Maven项目,所以
2015-01-04 16:17:59
15706
JDBC API教程与参考手册(第三版)前言+目录+第一,二章
2009-03-04
关于volatile的测试。。。
2012-12-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人