pfnie的博客

学如逆水行舟,不行则退。以研究源码为乐趣,以写代码为疯狂。

Zookeeper的Leader选举(一)

一、Leader选举 1、Leader选举概述   Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。   (1) 服务器初始化启动。   (2) 服务器运行期间无法和Leader保持连接。   下面就两种情况...

2019-04-06 18:24:34

阅读数 15

评论数 0

Spring Cloud之Eureka服务注册与发现整合思想(二)

一、Eureka整合Spring Cloud,实现服务注册与发现 1、整合的Jar包: 我们发现整合的代码在spring-cloud-netfilx-eureka-client的jar包里面。 2、服务实例(被注册的东西)在Eureka中是如何被定义的: 经过Spring Cloud之服务注册与...

2019-04-06 16:29:20

阅读数 28

评论数 0

Spring Cloud之服务注册与发现机制抽象理解(一)

一、复杂与简单并存 1、背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题。见仁见智啦。事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化。用一句话来说就是:功能复杂化,使用简单化。 因为人们的要求越来越高,所以功能肯定越来越复杂。又因为要获得更好的用户体验,所以使...

2019-04-06 15:25:16

阅读数 50

评论数 0

第二十一天:浪迹天涯网上商城(1.0版本)--浪迹天涯商城Redis高并发分布式锁实战---以扣减库存为例

背景 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。本文以扣减库存为例,慢慢的阐述如何使用Redis实现分布式锁。 一、从简单例子程序说起 如下代码就是一个简单的扣减库存的例...

2019-03-31 15:18:39

阅读数 40

评论数 0

深入理解Mysql索引底层数据结构与算法

一、MySQL索引的介绍 1.1、索引: (1)、索引是帮助MySQL高效获取数据的排好序的数据结构。索引存储在磁盘文件里,也就是说会有IO操作。 常用的索引数据结构:二叉查找树、红黑树、hash、B-Tree、B+Tree。 在以下的分析中,我会说明为什么MySQL会选择hash以及B+Tree...

2019-03-24 13:03:48

阅读数 52

评论数 0

第一节:MySQL主从复制概念及架构

背景 在了解主从复制之前必须要了解的就是数据库的二进制日志(binlog),主从复制架构大多基于二进制日志进行。 一、MySQL主从复制介绍 1.1、主从复制实现基本原理: (1)、自带功能,复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例。 (2)、主服务器将所有数据和...

2019-03-16 16:51:32

阅读数 68

评论数 0

第二十天:浪迹天涯网上商城(1.0版本)--浪迹天涯商城关于分库分表的思路---取模实现

背景 “分库分表”是谈论数据库架构和优化时经常听到的关键词。那么对于这些业务量正在高速增长的公司,它有那么容易实践吗? 在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。...

2019-03-16 10:54:48

阅读数 42

评论数 0

第十九天:浪迹天涯网上商城(1.0版本)--浪迹天涯商城运营后台整合Feign,开启hystrix

1、在Feign中开启对Hystrix的支持 如下,在配置文件中开启: 2、定义特定服务的Hystrix的配置 新建一个配置类,例如:ItemRemoteServiceFeignHystrixConfig package com.niepengfei.langjitianya.backend.r...

2019-01-06 15:42:00

阅读数 143

评论数 1

第二节:InnoDB的RR级别Consistent Nonlocking Reads实验

1)对于RR隔离: A consistent read means that InnoDB uses multi-versioning to present to a query a snapshot of the database at a point in time. The query se...

2018-11-14 13:45:19

阅读数 135

评论数 0

第一节:InnoDB事物的D特性的原理分析

1、抛出我的观点 首先我们应该很清楚的知道,undo日志用来保证事物的C一致性,redo保证事物的A原子性和D持久性,锁保证事物的隔离性。今天我们就来谈谈事物的D持久性。 2、redo 1、基本概念 redo由两部分组成:一是MySQL实例内存中的redo log buffer, 二是磁盘上的re...

2018-11-06 14:08:52

阅读数 127

评论数 1

第十八天:浪迹天涯网上商城(1.0版本)--引入spring cloud sleuth分布式链路追踪

1、需求 我们都知道随着项目的发展,各个底层的服务调用关系复杂,有时候因为某个服务的性能问题导致整个调用链出现故障,那么排查问题是很困难的。现在我们引入Spring Cloud Sleuth分布式链路追踪来解决这个问题。 2、Spring Cloud Sleuth 简介 微服务可以将整个的系统拆分...

2018-11-05 13:47:42

阅读数 89

评论数 0

Hystrix源码解析--hystrixCommand的附属配置如何初始化的(二)

一、为什么HystrixCommand要求我们至少实现一个构造方法 从这篇文章中Hystrix源码解析--从原生的lib开始使用hystrix(一),我们知道,如果使用原生的lib方式来使用hystrix,那么我们的command必须要实现至少一个构造方法,大家有想过为什么要这样么?原因就是hy...

2018-09-09 12:15:50

阅读数 1218

评论数 0

Hystrix源码解析--从原生的lib开始使用hystrix(一)

一、HystrixCommand的探讨 我们都知道hystrixCommand是用来隔离调用者和依赖服务的,但是hystrixCommand的使用有很多种,我们按照历史的发展轨迹,从原生的lib开始,教你如何使用hystrixCommand。hystrixCommand究竟是以一种怎么的形式存在...

2018-09-08 18:47:00

阅读数 271

评论数 0

Hystrix源码解析--HystrixCircuitBreaker--从实现探讨原理(三)

一、HystrixCircuitBreaker接口的实现者是谁? HystrixCircuitBreaker接口有两个实现者,分别是:HystrixCircuitBreakerImpl和NoOpCircuitBreaker。NoOpCircuitBreaker是空的断路器实现,用于不开启断路器功...

2018-09-02 18:22:51

阅读数 366

评论数 0

Hystrix源码解析--HystrixCircuitBreaker--从抽象接口说起(二)

一、HystrixCircuitBreaker接口的起源 断路器模式的思想来源于Netflix这家公司。Spring cloud是非常贱的,他搞了一个CircuitBreaker接口,搞得好像HystrixCircuitBreaker是继承自Spring cloud的CircuitBreaker...

2018-09-02 17:14:31

阅读数 118

评论数 0

Hystrix源码解析--HystrixCircuitBreaker--思想层面(一)

一、什么是HystrixCircuitBreaker? HystrixCircuitBreaker可以防止应用程序重复的尝试调用容易失败的依赖服务。HystrixCircuitBreaker的目的和Retry模式的目的是不同的。Retry模式令应用程序不断的去重试调用依赖服务,直到最后成功。而H...

2018-08-25 13:57:39

阅读数 222

评论数 0

第十七天:浪迹天涯网上商城(1.0版本)--浪迹天涯商城运营后台整合Feign

1、浪迹天涯商城运营后台整合Feign 第一步: spring cloud 整合 Feign 在调用者的项目中(在这里,我们指的是langjitianya-backend, 浪迹天涯商城运营后台),加入如下的pom依赖: 第二步:在服务的调用者(在这里,我们指的是langjitianya...

2018-08-18 13:26:13

阅读数 91

评论数 0

第十六天:浪迹天涯网上商城(1.0版本)--缓存与数据库的一致性问题解析与解决方案

1、需求缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,普遍的做法都是没有啥疑问的,基本都是按照如下的流程进行。但是在更新缓存的时候,却有很多问题,接下来我们慢慢分析。2、表明自己的态度首先我抛出自己的看法,从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种...

2018-07-01 14:51:20

阅读数 146

评论数 0

第十五天:浪迹天涯网上商城(1.0版本)--商品服务中心接入缓存Redis

1、需求我们都知道随着项目的发展,必定会面临性能瓶颈问题,现在我就提前考虑这个问题,给项目介入缓存。在这里我们先接入Redis的单机版,之后我会介绍集群版。2、实现步骤1、在Linux上面安装Redis服务。2、准备好pom.xml文件3、准备好配置文件4、准备好启动类5、run 起来6、访问验证...

2018-06-24 14:12:36

阅读数 167

评论数 0

第十四天:浪迹天涯网上商城(1.0版本)--spring cloud zuul网关的过滤器运行机制剖析

1、ZuulServlet执行的生命周期在前面的博客第十二天:浪迹天涯网上商城(1.0版本)--spring cloud zuul网关搭建中,我们使用了@EnableZuulProxy注解,开启该注解后,在Spring容器初始化时,会将Zuul的相关配置初始化,其中包含一个Spring Boot的...

2018-06-18 08:27:59

阅读数 196

评论数 0

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