自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

君子敏于行而讷于言

我的架构师成长足迹

  • 博客(30)
  • 收藏
  • 关注

转载 Dubbo高级篇_14_Filter实现Dubbo接口黑白名单

微服务背景下,一个web应用都可能不再service依赖,而是通过RPC调用远端服务器上的服务。这些服务里,就包括了一些不能轻易暴露的后台功能接口。暴露出去的dubbo接口注册到某一个zk上后,该dubbo接口对注册到该zk上的消费者都是可见的。对公司内部而言,通常不会有人蓄意去调用一些敏感的接口,但也存在人为误用的可能呀。为此,考虑通过白名单机制来控制dubbo接口的访问。扩展F...

2018-07-31 15:14:14 17012

原创 Dubbo高级篇_13_Dubbo缓存

结果缓存,用于加速热门数据的访问速度, Dubbo提供声明式缓存,以减少用户加缓存的工作量。按照SPI的要求,我们从配置文件中可以看到dubbo提供的三种缓存接口的入口:threadlocal=com.alibaba.dubbo.cache.support.threadlocal.ThreadLocalCacheFactorylru=com.alibaba.dubbo.cache...

2018-07-30 22:28:15 23441

转载 并发_02_JAVA并发机制的底层实现原理

一、并发编程中的三个概念1.原子性原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。2.可见性可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。3. 有序性有序性:即程序执行的顺序按照代码的先后顺序执行二、Volatile它是轻量级的synchro...

2018-07-29 09:18:43 13471

原创 分布式-消息中间件介绍

一、消息队列概述消息队列中间件是分布式系统中重要的组件 主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性(分布式事务)架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等 二、消息队列作用主要解决应用耦合,异步消息,流量削...

2018-07-26 16:01:46 18777

转载 胡雪岩启示

胡雪岩是中国晚清时期的一位传奇人物,我们今天讲胡雪岩,并不是把他当作一个历史人物来研究,因为胡雪岩死前被抄家,留下的资料很少。但是关于胡雪岩的传奇故事,却在民间口耳相传,流传甚广。胡雪岩出身贫寒,却在短短十几年的时间里迅速发迹,成为当时富可敌国的巨商富贾;他替清朝政府向外国银行贷款,帮助左宗棠筹备军饷,收复新疆,慈禧太后赐他黄袍马褂,官封极品,被人们称为红顶商人;他奉母命建起一座胡庆余堂,真不...

2018-07-25 18:01:35 13643

原创 某金服银行存管分布式架构设计

1架构总览此架构支撑的业务是 一天10G的日志处理,100个左右的QPS##业务流业务订单表设计CREATE TABLE `biz_order` ( `tid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `biz_id` varchar(100) NOT NULL DEFAULT '' COMMENT...

2018-07-24 15:58:13 15907 2

原创 Nginx负载均衡策略

nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。nginx的upstream目前支持的5种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 upstream backserve...

2018-07-24 07:39:45 14012

原创 分布式-微服务架构选型

微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。 系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。微服务主要的优势降低复杂度将原来耦合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。 每一个微服务专注于单一功...

2018-07-23 17:06:31 17451 1

原创 分布式-缓存防穿透 、雪崩

一、缓存穿透预防及优化缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步:1.缓存层不命中2.存储层不命中,所以不将空结果写回缓存3.返回空结果缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。 缓存穿透模型缓存穿透...

2018-07-23 06:27:14 13981

原创 分布式-分布式事务

分布式事务- 二阶段协议一、前言在单个数据库实例时候,我们可以在一个数据源的事务(本地事务)内做多步数据库操作,在事务内的多个操作要么全部执行生效,要么全部不生效。在多数据实例节点时候,我们对多个实例的数据源进行操作时候就没办法把多个操作放到一个大的事务内来保证原子性了,因为多个实例操作的是不同的数据源,而数据库自带的事务是针对单个数据源来说的。二、二阶段协议单个数据库实例...

2018-07-22 18:04:00 14307

原创 分布式-接口幂等性设计

在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建,一个是已付款。但是你先接收到已付款,然...

2018-07-22 07:52:42 14292

原创 分布式-SOA服务化接口设计

服务模块的设计方式模块调用链:controller->facade->biz->dao服务模块的接口类型简单的数据查询接口:controller.facade、dao(例根据Id查询记录) 带业务逻辑的数据查询接口:controller、facade、biz、dao(复杂的查询,带业务逻辑) 简单的数据写入接口:controller、facade、da

2018-07-21 20:41:54 15147 1

原创 分布式-全局唯一id

系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。1.数据库自增长序列或字段最常见的方式。利用数据库,全数据库唯一。优点:1)简单,代码方便,性能可以接受。2)数字ID天然排序,对分页或者...

2018-07-20 18:14:29 14482

原创 并发_05_ThreadLocal

ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。 采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。 ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值为对应线程的变量...

2018-07-20 06:50:43 13362

转载 并发_04_Java中的线程池

1111

2018-07-19 18:20:02 13505

转载 并发_03_JAVA中的锁

基础及框架容器

2018-07-19 07:20:59 13477

原创 并发_01_并发性与多线程介绍

在过去单 CPU 时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个 CPU,并交由操作系统来完成多任务间对 CPU 的运行切换,以使得每个任务都有机会获得一定的时间片运行。随着多任务对软件开发者带来的新挑战,程序不在能假设独占所有的CPU时间、所有的内存和其他计算机资源。...

2018-07-18 08:20:26 13568

原创 java虚拟机_05_JVM故障处理分析

JVM中到底哪些区域是共享的?哪些是私有的?Heap和Method Area是共享的,其他都是私有的为什么不建议在程序中显式的生命System.gc()?因为显式声明是做堆内存全扫描,也就是Full GC,是需要停止所有的活动的(Stop  The World Collection),你的应用能承受这个吗?为什么会产生OutOfMemory

2018-07-17 19:08:30 13789

原创 java虚拟机_04_性能监控工具

系统性能监控- linuxuptime - 系统时间 - 运行时间 - 例子中为7分钟 - 连接数 - 每一个终端算一个连接 - 1,5,15分钟内的系统平均负载 - 运行队列中的平均进程数top同uptime可以知道哪个程序占CPU最多 vmstat可以统计系统的CPU,内存,swap,io等情况 CPU占用率很高,...

2018-07-17 07:12:21 13537

原创 java虚拟机_03_GC算法及垃圾回收

GC 算法与种类GC的概念Garbage Collection 垃圾收集(垃圾回收) 回收java无用的对象 不回收会导致内存泄露1960年 List 使用了GCJava中,GC的对象是堆空间和永久区GC的基本原理: 将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、旧生...

2018-07-16 20:53:47 13582

原创 java虚拟机_02_Jvm内存模型

https://blog.csdn.net/u011080472/article/details/51337422 我们知道 - 计算机CPU和内存的交互是最频繁的 - 内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速...

2018-07-16 07:44:28 14571

原创 java虚拟机_01_类的加载机制

类的加载机制1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。 类加载器并不...

2018-07-15 20:52:54 13380

原创 MySQL主从不一致情形与解决方法

一、MySQL主从不同步情况1.1 网络的延迟由于mysql主从复制是基于binlog的一种异步复制 通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。1.2 主从两台机器的负载不一致由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sq...

2018-07-14 18:50:55 36331 2

原创 Mysql拆分、切分

一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...

2018-07-14 08:38:40 18237 1

原创 数据库SQL优化

一、引起全表扫描的情况1.1、模糊查询效率很低原因 like本身效率就比较低,应该尽量避免查询条件使用like;对于like ‘%…%’(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低;另外,由于匹配算法的关系,模糊查询的字段长度越大,模糊查询效率越低。解决办法 首先尽量避免模糊查询,如果因为业务需要一定要使用模糊查询,则至少保证不要使用全模糊查询,对于右模糊查询,...

2018-07-13 12:56:21 13709

原创 索引介绍(MySQL)

一、索引介绍索引是存储引擎用于快速查找记录的一种数据结构。索引优化是对查询性能优化最有效的手段。索引可以包含一个或多个列的值。如果索引包含多个列,那么列的顺序也十分重要,因为MySQL只能高效低使用索引的最左前缀列。1.1 索引的三大优点:索引可以让服务器快速定位到表的指定位置。 最常见的B-Tree索引,按照顺序存储数据,所以MySQL可以用来做ORDER BY 和 GR...

2018-07-13 08:07:59 14176

原创 Innodb中的MVCC

一、MVCC简介MVCC (Multiversion Concurrency Control),即多版本并发控制技术,它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代之的是把数据库的行锁与行的多个版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高数据库系统的并发性能1.1 读锁也叫共享锁、S锁,若事务T对数据对象A加上S锁,则事务T可以...

2018-07-12 17:02:22 13510

原创 MySQL存储引擎

MySQL的存储引擎

2018-07-12 07:57:50 13448

原创 数据库的隔离及事务传播属性

对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题 事务的特性-ACID - 1.原子性:事务里面的操作单元不可切割,要么全部成功,要么全部失败 - 2.一致性:事务执行前后,业务状态和其他业务状态保持一致. - 3.隔离性:一个事务执行的时候最好不要受到其他事务的影响 - 4.持久性:一旦事务提交或者回滚.这个状态...

2018-07-11 15:35:50 15358 1

原创 Mybatis缓存机制详解

mybatis提供了缓存机制减轻数据库压力,提高数据库性能mybatis的缓存分为两级:一级缓存 一级缓存是SqlSession级别的缓存,缓存的数据只在SqlSession内有效二级缓存 二级缓存是mapper级别的缓存,同一个namespace公用这一个缓存,所以对SqlSession是共享的一级缓存:mybatis的一级缓存是SqlSession级别的缓存 在...

2018-07-11 15:26:36 12612

elasticsearch索引模板

es索引模板

2023-11-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除