- 博客(22)
- 资源 (20)
- 收藏
- 关注
原创 从梁飞的微型rpc 细节说起--Dubbo源码系列解读(5)
7年前,梁飞公布了一个微型的rpc,这个rpc核心就是一个类,2个方法,但重点我们要探讨是细节的设计和质量一些问题package com.rpc;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.lang.reflect.Method;import java.net.ServerS...
2018-05-30 17:12:22 1370
原创 Dubbo spi extension & Schema--Dubbo源码系列解读(4)
我们先看下dubbo schema应用以上的标签是怎么读的,读完之后怎么又是怎么解析,解析之后又干嘛,通过什么方式进行spi扩展的,我们在这里解决2方面问题,一说明下机制和原理的东西,二用一个Demo实现shema其实,spring源码是这么玩的,当年我做分布式缓存框架也是这么玩的我们以协议为例,其他的先隐藏跑起schema定义和解析经过spring ioc处理后,就直接进入的spi extens...
2018-05-29 22:37:28 356
原创 Dubbo spi extension 关系导图--Dubbo源码系列解读(3)
说明1、双箭头表示正向调用后层层往回调2、其他的箭头或虚线或无箭头按UML关系看3、注意这是dubbo协议一个测试用例调用关系导图 延伸阅读Dubbo spi extension 源码原理--Dubbo源码系列解读(1)Dubbo spi 设计模式&用例源码--Dubbo源码系列解读(2)...
2018-05-29 00:26:49 452
原创 Dubbo spi 设计模式&用例源码--Dubbo源码系列解读(2)
1、jdk spi spi服务发现即动态替换发现的机制 比如有个接口,在运行时动态的给它添加实现,只需要添加一个实现Demo https://github.com/luozhonghua/dubbo-spiDemo 2、Dubbo SPI2.1、可以方便的获取某一个想要的扩展实现 2.2、对于扩展实现IOC依赖注入功能2.3、对扩展采用装饰器模式进行功能增强,类似AOP实现的功能 以Protoc...
2018-05-26 19:45:31 766
原创 Dubbo spi extension 源码原理--Dubbo源码系列解读(1)
写在前面阅读源码是比较耗时的,特别是经过千锤百炼的经典源码,创造者不易,阅读者更加不要轻易断定结论,像我之前有详细了解过spring cache源码模块也并非那么容易,如果很久不再读,也差不多忘记,如果理解了或理解的深度不够的(没形成源码架构体系)前提下会发生的;在经典源码面前,会发现之前工作范围内的框架源码不值得一提吧,本人在实现100万+QPS秒杀架构演进中,为了背后的密码必然会将涉及比较关键...
2018-05-26 12:13:44 679
原创 秒杀系统架构设计与实现(4)--监控monitor
我们在之前的架构设计中,应用服务器到底是怎么样,对我们来说是个黑洞,因此我们需要把他们监控起来,看清楚他们的行为特征和负载能力,这样才能更清楚直白的告诉运维,尽管我们有手段进行单一命令式监控,但对于分布式应用来说就非常棘手,里我们采用的是dubbox-monitor开源组件,关于dubbox2.8.4如何应用在后续会简单的说明下1、架构我们依然将8515这台服务器部署在115物理机上(后续演进10...
2018-05-24 22:45:40 798
原创 dubbo2.6.0源码编译--正确姿势
为什么要写源码编译?这里有2个原因,一是网络上几乎没有一个正确的姿势,二是为什么后续方便大家查阅解决正确又高效的源码编译,首先要有正确的git clone1,正确的gitgit clone -b dubbo-2.6.0 https://github.com/apache/incubator-dubbo.git关于git命令大家自己去问度娘2,正确转换源码工程:mvn idea:idea 或者mv...
2018-05-24 17:54:53 3503
原创 JMeter4.0分布式调度压测部署--正确姿势
在上一篇,秒杀系统架构设计与实现(3)--20万QPS(https://blog.csdn.net/luozhonghua2014/article/details/80404386)我们遇到jmeter被假死死了,这里有2个原因,一是jmeter原本是java写的,heap受硬件限制需要调优,二是单机无法分解超大并发比如100万+并发压测,因此,我们分二部走,首先我们需要进行jmeter分布式部...
2018-05-23 13:04:26 26649 5
原创 秒杀系统架构设计与实现(3)--20万QPS
这次架构演进,主要增加前端nginx反向代理,提升单台物理机单服务器利用率,分解web服务器压力;1、未物理分离压测软件,2,物理分离压测软件这2种情况1,未物理分离压测软件,20万QPS1.1 架构1.2 开压前1.3 20万QPS开压后1.4 db情况库存订单数据完整注:未分离情况下,20万QPS,目前一台物理机已是最大承载能力了,再高jmeter会卡死(如果设置jmeter分布式调度可...
2018-05-22 16:30:46 4726 1
原创 秒杀系统架构设计与实现(2)--15万QPS
前面我们进行了二版简单的架构设计与实现(详细点击 1万+QPS秒杀 , 10万+QPS秒杀),这版我们继续架构演进,主要服务与服务进行解耦1、架构2、开压15万QPS一台机器(部署可以看https://blog.csdn.net/luozhonghua2014/article/details/80362614)的确有点扛不住了 ~哈哈3、看看DB如何了嗯,数据完整4、 服务解耦提供者服务,我们采用...
2018-05-21 19:17:22 2875 1
原创 源码解读 Duplicate entry '' for key 'PRIMARY' 坑
在kafka发送消息到另一个service,service执行sql, 首次或前2次执行正常C操作,但后续2次或以后的操作必然发生以下错误:### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '...
2018-05-21 17:59:43 81757
原创 10万+QPS秒杀限流组件设计与实现
我们在简化版1万+QPS(https://blog.csdn.net/luozhonghua2014/article/details/80384061)设计架构上增强限流设计来应对100万+QPS峰值保障系统可用的措施之一那么,我们如何设计呢?通过拦截web请求,将流量限制在最前web端,然后用redis脚本lua做拦截校验,从而达成超大并发的限流,保障系统不会引起雪崩,达成可用开压12万QPSd...
2018-05-21 01:12:22 7711 1
原创 1万+QPS秒杀最低成本架构与实现
开篇https://blog.csdn.net/luozhonghua2014/article/details/80362614是为10万+QPS实现的条件然而一万+QPS又如何实现呢?简化版-架构核心实现压测数据结果redis源码:https://github.com/luozhonghua/SSM...
2018-05-20 18:42:44 12844
原创 Error while fetching metadata with correlation id : {LEADER_NOT_AVAILABLE} 正确处理姿势
kafka出现:Error while fetching metadata with correlation id : {LEADER_NOT_AVAILABLE}表示无法识别kafka hostname正确处理姿势1、修改server.properties如下,目的是让kafka监听的到vi /opt/kafka/kafka/config/server.properties2 ps...
2018-05-18 21:20:51 129680 9
原创 秒杀系统搭建与部署(1)---开篇
------------------开源秒杀系统V.0.0.1环境要求和说明及基础软件详细搭建-------------1、硬件与基础软件最低配置要求CPUamd64, 4 coresHostwindows10.microdone.cn/192.168.56.1JavaJava(TM) SE Runtime Environment 1.8.0_121-b13Localezh_CN/GBKOSWin...
2018-05-18 12:37:10 2936
原创 reids centos7单机多节点集群部署-正确的姿势
因设计10万级以上qps秒杀开源系统,需部署redis 集群虽说单机多节点,实际与真实多物理机多节点方式几乎一样一、安装redis1、安装gcc环境yum install gcc-c++2、下载源码包并解压wget http://download.redis.io/releases/redis-3.2.4.tar.gztar -zxvf redis-3.2.4.tar.gzcd redis-3.2...
2018-05-17 00:05:39 939
原创 springboot activemq gradle构建示例
1,build.gradlebuildscript { ext { springBootVersion = "1.5.4.RELEASE" } repositories { maven { url "http://maven.aliyun.com/nexus/content/groups/public/" ...
2018-05-12 13:24:59 590
原创 activemq centos环境配置、验证
基于一些老系统还在用activemq 因此搭建下,下面地址的版本是下载最快的1,官方下载 http://activemq.apache.org/activemq-5122-release.html apache-activemq-5.15.2-bin.tar.gz2,tar -zxvf apache-activemq-5.15.2-bin.tar.gz3 开启自启 cd /etc/init...
2018-05-12 10:35:00 547
转载 数据库原理
一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少【译者注:百度为您找到相关结果约1,850,000个…】 ,而且找到的那些文章都很短。现在如果你查找最近时髦的技术(大数据、NoSQL或JavaScript...
2018-05-06 01:45:53 684
转载 教你初步了解红黑树
教你初步了解红黑树 作者:July、saturnman 2010年12月29日本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, February, 2008,直接...
2018-05-04 10:35:39 158
原创 模版设计模式高并发设计思路与案例
我们先来跑一趟,模式设计模式在高并发下效果开启了5个线程并发,首次执行,除了第一次走db,其余都走cache,且cache未击穿,耗时9毫秒模版设计思路我们从单线程业务实现,考虑到真正的业务其实就是userMapper.findUserById(1)因此首先我们剥离非业务代码如何剥离呢,从上面看出,需要设计一个通用的查询缓存接口,然后每个开发业务方法要采用缓存就调用这个查询缓存的模版方法findC...
2018-05-03 11:39:32 352
原创 分库分表ACID解决方案(2)shardingjdbc+springboot Demo
demo源码:https://github.com/luozhonghua/springboot-demo原理1、自定义分库分表2,分库分表唯一性主键Twitter Snowflake算法实现DefaultKeyGenerator详情:http://www.iocoder.cn/Sharding-JDBC/distributed-id/shardingjdbc 中文http://shardingj...
2018-05-01 21:56:41 1472
Professional JavaScript Frameworks: Prototype,YUI, ExtJS, Dojo and MooTools
2015-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人