- 博客(32)
- 资源 (11)
- 收藏
- 关注
原创 深入浅出dubbo源码系列--provider启动流程分析
深入浅出dubbo源码系列--provider启动流程分析前言Provider启动主流程几个动态生产类【可以拷贝到对应目录,进行源码的debug】前言Dubb本身具有很强的扩展性:协议有多种实现,注册中心和底层通信框架也有多种选择; 我们下面就梳理下dubbo的核心主流程。主要包括三个子流程:consumer启动,provider的启动,接口调用流程。另外注意:注册中心我们选择zookeep...
2019-04-12 17:34:26 455 1
原创 深入浅出dubbo源码系列--走进Dubbo
深入浅出dubbo源码系列--走进dubbo什么是RPC什么是DubboDubbo整体架构设计介绍什么是RPC了解dubbo之前,我们先来看下啥是RPC框架,他到底是用来干嘛的呢?在这个微服务盛行的大环境下,很多人应该都有使用过RPC框架的经验;大白话来说:RPC框架最大的作用就是对于client看来说,就像调用本地service方法一样调用远程的服务。他是服务化最最基本的基础组件。Rp...
2019-03-14 13:12:34 954
原创 常见数据库拆分方案汇总
前言根据业务域垂直拆分主从复制,读写分离分库分表前言随着互联网行业的高速发展,一些商业的存储解决方案的成本越来越高;大部分企业开始寻求开源的存储解决方案,成为互联网商业存储的首选。下面以mysql为例,介绍下数据库的扩展方案。根据业务域垂直拆分首先是根据业务域进行拆分。以前可能所有的业务表是耦合在一个数据库中,这种模式下,系统的复杂性越来越大,开发维护...
2018-07-15 17:52:35 5171
原创 深入浅出SpringBoot系列--多数据源集成
引言应用场景集成方案其他:引言在上一篇文章中已经详细介绍了与mybatis的集成方案【深入浅出SpringBoot系列–与mybatis集成】,本文主要介绍一些更复杂的数据操作场景,比如动态数据源的切换,分库,分库分表等。其实对于分库分表这块的场景,目前市场上有很多成熟的开源中间件,eg:MyCAT,Cobar,sharding-JDBC等。 本文主要是介绍基...
2018-07-15 11:38:25 775
原创 深入浅出SpringBoot系列--与mybatis集成
[TOC] 本文主要介绍下常见的spring boot与mybatis集成方案,下面简单介绍下集成步骤。spring boot的集成方案不同于传统的spring mvc,基本上是零配置;这个方案中只有数据库连接字符串还放在配置文件中,后续其实在阿波罗配置,实现零配置。集成步骤 1.POM文件需要引入以下相关的jar:<!-- mybatis配置相关 begin --> ...
2018-07-15 09:56:52 672
原创 分布式ID生成器的解决方案
[TOC] 分布式ID生成器的作用(why) 分布式ID的方案(how)为什么需要分布式ID生成器 :简单介绍下分布式ID生成器出现的背景: 1.目前微服务架构盛行,在分布式系统中的操作中都会有一些全局性ID的需求,比如消息中和http请求中或者消息中的唯一标识号,作为交易双方的幂等条件。 2.交易系统中有各种业务编号的需求,这种编号可能需要暴露给用户(比如订单号),但又不能被...
2018-07-11 17:07:36 886
原创 常见的系统设计规范(约束)
目录用 [TOC]来生成目录:目录系统的基本设计规范数据库设计规范外部交互设计规范系统的基本设计规范 1.减少跨系统的交互,一个系统尽量只能CURD自己业务域的数据库,不要跨域去操作其他应用的数据。 2.尽量减少IO以及网络的访问,将多次的调用整合在一次操作中完成,尽量减少IO资源的浪费。 3.禁止在操作数据库或者外部接口时候放在循环...
2018-05-27 23:08:37 23056
原创 hystrix实战--资源隔离技术简介
前言:hystrix中,其实最核心的一个功能就是资源隔离,就是将多个依赖服务的调用分别隔离到各个资源的内部,避免因为依赖服务的失败或者延迟,导致服务所有的线程资源花费在这个伤害,继而导致服务崩塌。线程池隔离和信号量隔离hystrix中主要有两种资源隔离的技术:线程池隔离和信号量隔离。 使用场景: 线程池隔离技术:大部分的场景下其实都适合用这种技术,对于依赖服务的调用以及访问;能...
2018-08-10 00:09:53 3027
原创 hystrix实战--why hystrix?
背景:在分布式服务架构中,可能会调用很多的远程服务来完成一个业务流程。 如果某一个依赖服务有问题;在高并发大数据量的场景下,很多应用服务器(比如tomcat)内部的线程就会卡死在这个调用服务上。更坏的情况,会有越来越多的线程进入等待中;导致没有额外的线程处理该服务中其他的业务接口;进而导致整个服务不可用。如果他本身也是个底层服务,被很多其他服务依赖,那么就可能会导致整个平台的不可用。...
2018-08-09 23:20:55 245
原创 redis实战--redis cluster的架构搭建
部署步骤因为redis cluster的集群,至少需要3个master去组成一个高可用,高并发的分布式集群,然后每个master也建议都至少挂载一个slave节点。所以对于测试环境, 我们可以基于3台虚拟机,启动6个redis的实例进行模拟部署测试。修改配置文件: 在每一台机器的配置文件中,修改以下的参数: 1.启动redis cluster的功能 cluster-enabled...
2018-08-04 21:34:25 309
原创 redis实战--redis cluster的原理分析
why redis cluster之前我们以前了解过主从复制,读写分离的架构,他就能够支持一定数据量的场景;为什么我们还需要搭建redis cluster的集群呢?如果我们的缓存数据量只有几个G ,那么基于单master的主从架构是足够满足我的需求,可以搭建一主多从的架构,通过搭建sentianl集群来保证redis主从架构的高可用性;后续可以通过增加从节点的数量来保证读的性能。但是如...
2018-08-04 21:01:46 839
原创 redis实战--基于哨兵的高可用方案解析
前言基本介绍部署步骤不足之处前言前面已经介绍过持久化的两种机制,以及主从复制的原理,部署。这里所谓的高可用,讲的是99.99(或者99.9%或者99%)的时间内,系统是可用的。下面我们就看下哨兵模式的相关概念。基本介绍功能: 哨兵是redis集群架构中非常重要的组件,主要有以下几个功能: 1.负责监控mater和slave的进程是否正常工作;如果...
2018-07-27 23:05:14 611
原创 redis实战--redis主从复制实现读写分离(部署搭建)
前言部署步骤读写分离测试前言前面已经介绍过了redis主从复制实现读写分离的原理;这一篇文章主要介绍下如何部署搭建一套主从复制,主从读写分离的环境。部署步骤1.下载 下载tcl8.6.1-src.tar.gz和redis-3.2.8.tar.gz;将两个tar包分别上传到服务器的路径上(/usr/local)。2.编译安装 依次登陆到服务器上,安...
2018-07-25 23:04:54 1312
原创 redis实战--redis主从复制实现读写分离(原理)
1、redis高并发跟整个系统的高并发之间的关系 redis,你要搞高并发的话,不可避免,要把底层的缓存搞得很好 mysql,高并发,做到了,那么也是通过一系列复杂的分库分表,订单系统,事务要求的,QPS到几万,比较高了。单机redis 的QPS只能是上万,所以就会有系统瓶颈。读写分离,一般来说,对缓存,一般都是用来支撑读高并发的,写的请求是比较少的,可能写请求也就一秒钟几千,一两千 ...
2018-07-25 15:50:40 18168
原创 redis实战--redis两种持久化方式
前言:持久化的意义RDB持久化机制介绍AOF持久化机制介绍如何配置RDB持久化机制如何配置AOF策略AOF和RDB同时工作前言:说到redis的持久化,大家可能就想到了RDB和AOF两种方式; 下面就这两种方案的意义以及两种持久化方案的工作原理。持久化的意义redis的持久化意义在于故障恢复,数据恢复。 如果redis服务器挂了,遇到了灾难性的故障...
2018-07-24 19:23:33 372
原创 使用Nexus配置Maven私有仓库
下载并且安装nexus调整setting.xml的配置测试上传jar包到私服服务器下载并且安装nexus1.从以下网址【https://www.sonatype.com/oss-thank-you-tar.gz】下载对应的版本,我下载的是linux版本的。**解决到安装目录,我安装的是 /usr/local ;解压命令: tar -zxf nexus-3.12.1...
2018-07-22 14:59:25 4443
原创 MyBatis代码生成器自动生成代码(通过maven组件的方式)
前言:集成步骤总结前言:本文简单介绍下如何利用mybatis生成器插件帮我们生成实体类,dao接口以及Mapping映射文件集成步骤1. 在对应的工程的pom文件中加入生成插件。 <build> <plugins> <plugin> <gr...
2018-07-22 10:38:52 316
原创 分布式事务实践(五)--最大努力通知的方案
前言方案简介前言前面几篇文章,我们主要介绍了基于可靠性消息的最终一致性解决方案;有基于本地消息服务的和独立消息服务的,参见之前的文章可靠消息的最终一致性方案(集成独立消息服务)。方案简介最大努力通知方案: 适用场景: 对于业务最终一致性的时间敏感度比较低的。 实现:1.主要由业务活动的主动方,在完成相关业务处理之后,向业务活动的被动方发送消息;消息允许...
2018-07-21 23:29:49 1515
原创 分布式事务实践(四)--可靠消息的最终一致性方案(集成独立消息服务)
前言方案介绍:总结前言经过前面一篇文章的介绍:可靠消息的最终一致性方案(本地消息服务),我们已经了解了基于本地服务的最终一致性方案,本地消息服务有一定的优势,当然也有一定的弊端。这一篇我们就来了解下将本地消息服务优化成 独立部署的消息服务子系统。方案介绍:基本架构图: 关键模块:生产者模块:业务操作;消息的持久化,投递以及确认,查询等功能。 ...
2018-07-21 21:21:31 1697
原创 分布式事务实战(三)--可靠消息的最终一致性方案(本地消息服务)
前言经过前面一篇文章的了解(消息一致性问题的分析),我们已经清楚了消息在发送以及接受端会存在一致性的问题;只有解决了消息的一致性问题, 才可以在分布式部署环境下我们认为他们是可靠的,进而可以基于可靠消息来保证最终的一致性。方案介绍本文主要介绍下本地消息服务的最终一致性解决方案:整体流程架构图 主要是有以下几个关键的模块:生产者模块:业务操作;消息的持久化,投递以及确认,查询等...
2018-07-21 17:54:33 2182
原创 分布式事务实战(二)--可靠消息的最终一致性方案(消息的一致性问题)
前言如何保证一致性问题异常情况分析总结前言消息发送一致性问题: 在分布式部署环境下,通过网络进行通讯,就会有数据传世的不确定性,也就是CAP中的P【会出现分区容错性的问题】。主动方发送消息到消息中间件以及消息中间件到被动方应用题都会出现网络的问题;如何保证一致性问题场景:比如说支付模块,订单完成之后需要通知其他系统的场景。 解决方式1:先处理本地事务;再...
2018-07-21 17:45:01 2599
原创 分布式事务实战--常用解决方案介绍
前言本地事务全局事务:Bsse理论CAP理论柔性事务前言随着微服务架构的盛行,分布式事务成为大部分企业集成中的一个技术难点;特别是在微服务架构体系下,这个问题尤其突出,可以说是无可避免。可能每个人对于微服务的理解可能都不太一样,下面就聊下分布式事务涉及到的一些概念性的东西,为后续实战做一些理论基础吧;有些部分也是摘自其他人的博客或者官方文档。本地事务...
2018-07-21 14:57:19 921
原创 深入浅出SpringBoot系列--与Dubbo集成
前言:基本项目工程介绍:服务提供方服务调用方结果测试代码参考:前言:前面文章已经介绍过dubbo admin的如何部署以及安装,不会的可以参见 dubbo admin的安装。本文主要介绍下如何与springboot的一个集成。废话不多说了, 集成非常简单,支持可插拔的,我们直接来看下是如何做到的吧。基本项目工程介绍:我们看下整体的项目结构: ...
2018-07-17 22:17:03 957
原创 Dubbo admin的安装部署
安装步骤1.编译源码和打包2.安装zookeeper集群3.修改dubbo,properties文件4.部署war包安装步骤1.编译源码和打包现在已经为Dubbo Admin单独开了一个GIT项目,Git的地址如下: https://github.com/apache/incubator-dubbo-ops/大家可以从上面的地址下载admin的源码...
2018-07-17 21:42:04 518
原创 聊聊hashcode和equals
基本概念举例说明:基本概念hashcode: 有人说hashcode就是对象的内存地址,这种说法其实过于绝对,应该是根据不同的jvm实现决定的。 我理解hashcode的作用是返回哈希码,确定对象在hash表中的位置,所以仅仅当使用散列表的类【hashset, hashmap, hashtable】的时候才有重写的意义。如果是非散标的集合(比如list),就只需要重写e...
2018-07-16 20:31:06 162
原创 spring事务原理
四大特性:ACID传播行为隔离级别属性说明 @Transactional四大特性:ACID原子性: 一个事务的所有系列操作步骤被看成是一个动作,所有的步骤要么全部完成要么一个也不会完成,如果事务过程中任何一点失败,将要被改变的数据库记录就不会被真正被改变。一致性: 数据库的约束级联和触发机制Trigger都必须满足事务的一致性。也就是说,通过各种途径包...
2018-07-15 19:40:43 191
原创 深入浅出SpringBoot系列--Hello World
简介spring boot是什么?: 摘自spring boot官方 Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. We take an opinionated view of the Spring ...
2018-06-14 18:15:20 229
原创 大话线程池
why线程池上一篇中有介绍了线程与进程的区别【线程与进程】;JDK中已经提供了Thread类和runnable接口来创建和启动一个线程了, 为什么还需线程池呢? 因为创建和销毁线程是需要有成本的,如果频繁的去做这个事情,那么会很浪费CPU的资源,进而影响之下的效率;极端情况下也可能引起OOM,导致系统挂掉。我们需要一个管理线程的池子来管理我们的任务,提高CPU的使用率同时又能够解决资源浪费的弊...
2018-06-13 21:07:07 147
原创 基于eclipse的远程debug
很多时候我们会由于本地和服务器的一些环境有所区别; 或者说由于数据的问题,导致没法在本地重现问题; 这样就需要我们需要远程debug,分析问题的原因.其实eclipse与IDE步骤差不多, 我简单介绍下eclipse的配置策略; 1.如果有些服务器做了白名单, 得把你本地的机器的ip加进去;2.需要在启动脚本中加入以下的启动参数:JAVA_OPT=”-Xdebug -Xrunjdwp:t...
2018-06-08 18:11:22 195
原创 java线程的相关概念
目录目录# 并发与并行# 线程与进程#JAVA内存# 并发与并行并发指的是程序的结构,而后者值得是程序运行时的状态并发是指一个处理器同时处理多个任务;并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是让多个任务在逻辑上交织执行的程序设计;并行是在物理上一起执行。并发:时间片内有很多的线程以以及进程在执行,但任何一个时间点只有一个在...
2018-06-08 17:18:17 211
原创 reids的开发实践
目录 [TOC]基本特性以及优势==============读写性能优异:全部在内存中计算,单线程,IO非阻塞。支持数据持久化,支持AOF和RDB两种持久化方式数据结构丰富:基于KEY-VALUE除了支持string类型的value外还支持string、hash、set、sortedset、list等数据结构。功能丰富:Redis还支持 publish/subscribe...
2018-06-07 19:15:00 264
原创 对于java中回调的一些理解,希望大家都能进来指点指点
我对回调的理解是:回调就是获取内部类对象的引用后,在需要的时候反过来调用外部类实例的方法。这样的理解不知道是不是到位,求解?还有啥时候使用回调会比较恰当?请朋友们指点指点。 除了内部类中有,还有其他地方用到吗?回调的好处又是什么?...
2011-06-20 17:15:01 114
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人