- 博客(107)
- 收藏
- 关注
云集的全链路压测之路
《云集的全链路压测之路》 其实说句实话,我们的全链路压测之路走的还是比较艰辛的,从最初纠结用什么压测工具开始,到压框架、压单接口、压压测环境,到线上环境一步步摸索,并结合其它友商的经验和方案,直至今天,将近耗时一年多的漫长时间,我们才最终在黑暗中摸索出了一条属于我们鸡场人自己的全链路压测之路,我们就是在不停的试错过程中逐步成长和成熟起来的。 一、究竟什么是全链路压测流量不大的...
2017-11-20 01:12:50 938 1
大促场景下热点数据写(库存扣减)技术难题解决方案
《大促场景下热点数据写(库存扣减)技术难题解决方案》 已经很久没有足够的时间让自己安静下来撰写一篇技术文章,确实近年来,大部分都花在了工作和2017年的新作品上。今天难得自己给自己打了瓶100ML的鸡血,出一篇前段时间针对交易系统大促场景下热点数据写优化的相关案例。当然,不同的企业有不同的解决方案和实现,但是万变不离其宗,还是那句话,对于大型网站而言,其架构一定是简单和清晰的,而不是炫...
2017-11-17 17:31:01 1180
剖析Java8的lamda表达式03
《剖析Java8的lamda表达式03》 前面几个章节笔者对lamda表达式的语法进行了详细的讲解,那么本章也是最后一章,一来是做一些总结,但更多是lamda表达式的一些实战性相关的案例,毕竟清楚语法,不清楚怎么用,在哪里用,将会是一个很悲催的事情。 先来首先来看看一个排序操作,比如我们想对一个List集合执行字典排序,那么Java8之前最常见的做法就是编写匿名类,当然我们既然...
2017-11-13 17:51:02 225
剖析Java8的lamda表达式02
《剖析Java8的lamda表达式02》 在《剖析Java8的lamda表达式01》中,相信大家已经对lamda表达式有了一定的认识和明确基本语法和用法。那么接下来本章我们再继续了解和学习lamda表达式。 来看看上一章中的一个例子:Runnable t1 = () -> System.out.println(Thread.currentThread().getId(...
2017-11-12 17:05:22 217
剖析Java8的lamda表达式01
《笔者带你剖析Java8的lamda表达式01》 其实Java8从诞生到至今,3年多的时间里笔者一直没有在任何项目中正式使用到Java8和lamda。时光飞逝,当我们还停留在Java6和Java7的语法层面时,9的正式版也即将来到我们身边,真的是感觉到惭愧,所以笔者抽空整理了一下lamda的一些表达式语法,同时也准备在项目中柔和进它。 首先我们来看看,使用Lamda有什么好...
2017-11-12 15:35:30 176
剖析Java泛型通配符
《剖析Java泛型通配符》Iteye的编辑器,是我见过最垃圾的编辑器 使用泛型的目的有2个,首先是保证了安全性,其次是表述性方面的优势,毕竟对于一些语义上的错误(比如:类型转换),应该尽可能在编译期就发现。 泛型相信大家都不会陌生,我们在Java5后使用集合API时,基本上时时刻刻都是在和泛型打着交道,那么笔者便不再对泛型的一些基础语法进行介绍,直接进入本章主题,泛型的无限...
2017-11-05 00:27:09 101
Redis事务失效问题记录
《Redis事务失效问题记录》 限时抢购场景下,热点数据的写操作如果是在RDBMS中进行,会造成多线程之间相互竞争InnoDB的行锁,并发越高等待的线程就会越多,这会导致RT上升,TPS下降,最终引起系统雪崩。因此将库存扣减动作放置Redis,使用乐观锁方式进行扣减,是一个不错的选择,毕竟Redis的吞吐量摆在那里,也没有行锁问题。 这段时间在对库存扣减进行二次优化(提成库存扣...
2017-11-03 10:51:06 432
聊聊synchronized为什么无法锁住Integer
《聊聊synchronized为什么无法锁住Integer》 假设并发环境下,业务代码中存在一些统计操作,为了保证线程安全,开发人员往往会对计数值进行加锁(synchronized),值得注意的是,直接对Integer类型进行加锁,似乎并不会达到预期效果,比如下面这段代码:Integer num = new Integer(0);public void test() th...
2017-10-12 18:25:45 1159
分布式配置管理平台与优雅停机
《分布式配置管理平台与优雅停机》 分布式配置管理平台与优雅停机存在什么必然联系?假设配置在配置中心的数据信息发生改变后,客户端感知并订阅到后,必然需要reset来及时响应,最典型的场景就是服务降级(开关)。 一些根据配置信息生成的对象实例(比如JDBC对象实例、Jedis对象实例),则需要重新生成新的对象实例,而不是简单的对目标值做reset。针对这种对象,本文提供2种方案可供...
2017-08-22 16:25:42 209
如何支撑过亿流量和交易额,新作《人人都是架构师》告诉你
《请先别急着嘲笑书名——这才是真正的大型网站架构解决方案》 作者介绍: 高翔龙,杭州云集微店架构师,基础架构组负责人,负责基础技术平台的架构设计和中间件研发等工作,技术书籍《Java虚拟机精讲》作者,热衷于开源技术,常年游走在Github上。 本书重点: 1、货真价实的互联网场景下大型网站架构演变过程中核心技术难题的解决方案; 2、全部来源于作者真...
2017-05-18 15:48:07 231
云集微店亿级交易额下的Order子系统架构演变
原文地址:http://mp.weixin.qq.com/s?__biz=MzIzNTIxMDg0NQ==&mid=2649370365&idx=1&sn=ed5c890401f50c060511c6c2de9179f0&scene=0#rd
2016-05-25 17:08:57 561
shark使用指南
https://github.com/gaoxianglong/shark/wiki/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97
2016-03-27 21:07:08 839
tomcat7标准优化参数
<Connector port="" protocol="HTTP/1.1" maxTreads="1000" acceptCount="1000" compression="on" compressableMimeType="text/html,application/xml,application/json,application/javascript,text/css
2016-03-08 15:58:06 138
原创 redis3.x cluster
《redis3.x cluster》 前言redis集群后,我们就需要一种数据路由算法将不同key分散存储到不同的redis节点内,通常的做法是获取某个key的hashcode,然后mod,不过这种做法无法很好的支持动态伸缩性需求,一旦节点的增或者删操作,都会导致key无法在redis中命中,所以在redis3.x之前,基本上都是采用编写一致性hash算法实现redis的集群,但是...
2016-02-21 18:35:36 136
Java Remote Debug
《Java Remote Debug》 简介如果是本地调试,那么在IDE工具(比如Eclipse)的帮助下,是非常容易的。但是如果想对部署在测试/生产环境中的程序进行调试时,你会怎么办呢?在这种情况下,源码已经被编译为中间代码,因此本地调试肯定是不行的,庆幸的是,JVM为开发者提供有远程调试参数,也就是说,我们可以利用这个特性,在本地的IDE工具中调试部署在远端的程序。 一...
2016-02-17 13:23:08 247
spring利用zookeeper作为配置中心
《spring利用zookeeper作为配置中心》 原理:首先动态加载相关bean,如果配置中心发生改变,对应的watcher监听到事件后,客户端则对相关bean进行重新注册,并且从配置中心获取到了最新数据,然后客户端直接调用getBean()方法获取相关bean实例,确保不再是之前引用。 代码示例地址:https://github.com/gaoxianglong/spri...
2016-02-07 10:48:36 862
线程同步辅助类CountDownLatch
《线程同步辅助类CountDownLatch》 Java5提供了一个非常有用的线程同步辅助类型,java.util.concurrent.CountDownLatch。假设有多个线程正在执行异步操作,主线程希望这些异步线程全部完成之后再继续执行后续任务,那么使用CountDownLatch将非常方便。当这些异步任务并未全部执行完成之前,主线程会一直阻塞,直至所有的异步任务完成为止。...
2016-02-02 00:26:05 112
笔者带你剖析分布式应用一致性协调服务——Zookeeper
《笔者带你剖析分布式应用一致性协调服务——Zookeeper》 本文参考了许多其他关于Zookeeper的文献,在此就不一一列举了。 前言Hadoop大数据平台发展的如火如荼,除此之外,Hbase、Dubbo的风光更离不开这位诚恳的幕后工作者Zookeeper。 目录一、使用Zookeeper能做什么;二、Zookeeper的下载与集群安装;三、Zo...
2016-01-31 20:26:07 183
线程安全之ReadWriteLock
《线程安全之ReadWriteLock》 synchronized关键字可以用于修饰方法和对象,被修饰的方法和对象在某一时间内只允许任意一条线程对其进行访问操作,这就是典型的排它锁。那么假设一个对象内部的某个数据类型同时拥有读/写方法时,读操作的权重比例明显高于写操作时,那么为了保证线程安全,我们都会加上synchronized关键字进行修饰,那么程序在并发环境下的吞吐量将会大大降低。...
2016-01-31 00:13:00 191
轻量级Mysql Sharding中间件——Shark
Shark简介 前身为Kratos,轻量级Mysql分库分表(Sharding)中间件,丰富的Sharding算法支持(2类4种分片算法),能够方便DBA实现库的水平扩容和降低数据迁移成本。Shark站在巨人的肩膀上(SpringJdbc、Druid),采用与应用集成架构,放弃通用性,只为换取更好的执行性能与降低分布式环境下外围系统的宕机风险。中文手册常见问题S...
2016-01-14 10:41:44 355
原创 linux系统硬件配置查看方法
原文地址:http://blog.163.com/yang_jianli/blog/static/1619900062010391127338/ 一:查看cpumore /proc/cpuinfo | grep "model name"grep "model name" /proc/cpuinfo如果觉得需要看的更加舒服grep "model name" /proc/cp...
2015-09-30 14:13:47 125
原创 GitHub上README.md教程
原文地址:http://blog.csdn.net/kaitiren/article/details/38513715 最近对它的README.md文件颇为感兴趣。便写下这贴,帮助更多的还不会编写README文件的同学们。README文件后缀名为md。md是markdown的缩写,markdown是一种编辑博客的语言。用惯了可视化的博客编辑器(比如CSDN博客,囧),这种编程式的博客...
2015-09-27 08:36:11 87
原创 上传构件至maven中央仓库
原文地址:http://my.oschina.net/songxinqiang/blog/313226 使用maven有一段时间了,不管你同意与否,我都坚决认定maven是很伟大的软件项目,使用它,可以节约很多时间,特别是和git搭配使用的时候,简直就是绝了,就像川菜的花椒和海椒的搭配一样,无与伦比,用过之后肯定会爱上它的。在我的以前的博客里面有关于怎样使用git(eclipse里面的e...
2015-09-25 14:23:03 115
原创 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure译文
原文地址:http://bigbully.github.io/Dapper-translation/概述当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。...
2015-09-23 22:14:45 511
如何使用和配置Kratos的内置验证页面
Kratos提供了一个内置验证页面用于对执行后的sql进行验证。注意:使用内置验证页面,必须使用kratos1.3.2及以上版本。内置验证页面(QueryViewServlet)是一个标准的javax.servlet.http.HttpServlet,需要配置在你web应用中的WEB-INF/web.xml中,如下所示:<servlet> <servlet-nam...
2015-09-23 22:01:18 352
原创 System.getProperty()参数详细说明
java.versionJava 运行时环境版本java.vendorJava 运行时环境供应商java.vendor.urlJava 供应商的 URLjava.homeJava 安装目录java.vm.specification.versionJava 虚拟...
2015-09-23 10:18:12 128
原创 Kratos使用过程中的常见问题
《Kratos使用过程中的常见问题》 原文地址:https://github.com/gaoxianglong/kratos/wiki/常见问题1、什么是Kratos?基于Java语言编写的轻量级分库分表(Sharding)中间件,丰富的Sharding算法支持(2类4种分片算法),能够方便DBA实现库的水平扩容和降低数据迁移成本。Kratos站在巨人的肩膀上(SpringJdb...
2015-09-20 13:53:45 1880
轻量级Mysql分库分表(Sharding)中间件——Kratos
Github:https://github.com/gaoxianglong/kratos kratos简介轻量级Mysql分库分表(Sharding)中间件,丰富的Sharding算法支持(2类4种分片算法),能够方便DBA实现库的水平扩容和降低数据迁移成本。Kratos站在巨人的肩膀上(SpringJdbc),采用与应用集成架构,放弃通用性,只为换取更好的执行性能与降低分布...
2015-09-19 20:28:29 283
原创 amq web管理界面参数含义
《amq web管理界面参数含义》 原文地址:http://lhbthanks.iteye.com/blog/1940767 Number Of Consumers 消费者 这个是消费者端的消费者数量 Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。可以理解为总接收数-总出队列数 Messages Enqueued 进入队列的消息 ...
2015-09-19 13:23:54 645
原创 Emulator and Virtual Machine
《Emulator and Virtual Machine》 原文出处:http://www.tuicool.com/m/articles/2EFJVf模拟器是什么Emulator,中文一般译为模拟器。但实际上这个翻译是错误的,准确的翻译是仿真器。仿真器与模拟器的区别在于:前者是用软件实现硬件的行为,而后者仅仅是使某一软件的运行和输出在不同平台上没有太大区别。举个例子,如果在某个街机...
2015-09-19 12:24:06 157
原创 记录amq的一些参数解释
createSession(paramA,paramB);paramA是设置事务的,paramB设置acknowledgment modeparamA设置为false时:paramB的值可为Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE其中一个。paramA设置为true时:paramB的值忽略, a...
2015-09-15 17:53:06 510
原创 Druid配置项
配置缺省值说明name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)jdbcUrl 连接数据库的url,不同数据库不一样。例如:mysql : jdbc:mysql://10.20.153....
2015-09-14 11:07:55 211
轻量级分库分表中间件Kratos简介
Github地址:https://github.com/gaoxianglong/kratos。基于Java语言编写的轻量级分库分表(Sharding)中间件,丰富的Sharding算法支持(2类4种分片算法),能够方便DBA实现库的水平扩容和降低数据迁移成本。Kratos站在巨人的肩膀上(SpringJdbc),采用与应用集成架构,放弃通用性,只为换取更好的执行性能与降低分布...
2015-09-03 22:05:45 494
原创 Kratos的使用注意事项
《Kratos的使用注意事项》 一旦在程序中使用Kratos进行Sharding后,sql的编写一定要注意,否则将无法进行路由。sql规则如下所示:1、暂时不支持分布式事物,因此无法保证事务一致性;2、不支持多表查询,所有多表查询sql,务必全部打散为单条sql分开查询;3、不建议使用一些数据库统计函数、Order by语句等;4、sql的参数第一个必须是路由条件;...
2015-08-30 14:21:30 1210
笔者带你剖析Kratos1.3的分片模型
《笔者带你剖析Kratos1.3的分片模型》 由于笔者等下还的出去看电影,因此今天就长话短说,系列博文熟悉的目录与前言今天我就暂时不写了,并且今天要讲的东西很纯粹,就是对Kratos的分片模型进行详细的讲解,当然版本是基于1.3的而不是之前的1.2。当然如果你并不清楚Kratos,那么你可以首先阅读笔者之前的博文《笔者带你剖析轻量级Sharding中间件——Kratos1.x》。 ...
2015-08-29 16:19:11 167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人