首页
学习
活动
专区
工具
TVP
发布

疾风先生

分布式/架构设计/java&python&go技术栈等(与公众号文章不能实时同步,欢迎关注公众号: 疾风先生)
专栏作者
32
文章
26926
阅读量
14
订阅数
Raft算法
本文主要以分析Raft算法核心原理流程为主,简述Raft算法运作流程,分别从Raft基础,核心原理以及细节问题出发作一个归纳性总结,如想深入Raft算法可以查看Raft算法论文,关注公众号回复“raft”即可获取Raft算法论文.
keithl
2022-09-22
7030
Paxos算法
在讲述分布式的一致性之前,先对基本的分布式协议算法有一个初步的认知,其次再分析分布式环境常见问题,最后再回到一致性问题来进行阐述.本文主要讲述分布式共识算法之Paxos算法,分别从朴素的算法说明,流程原理以及最终实现的原理逐一展开阐述说明.最后说明一点,在这里不会去花时间证明Paxos算法,有兴趣可以查看Lamport的Paxos论文证明实现.
keithl
2020-07-17
7900
分布式理论基础
在这一篇中主要讲述分布式基础理论知识,其中包含CAP定理,ACID以,BASE理论以及一致性协议分析.有了CAP定理的基础,能够帮助我们在根据业务特点进行分区容错一致性模型设计中提供解决问题的方向以及架构设计方案的设计与落地实现.同时需要区分数据库ACID的AC与我们的分布式AC存在的联系与差异,其次,在分布式网络中,为避免节点故障抑或是网络延迟等问题导致系统服务出现大量的不可用问题,那么对于BASE理论实现的技术方案有哪些.最后讲述分布式系统中数据的一致性问题.
keithl
2020-06-16
1.7K0
分布式共识问题
点击上方疾风先生可以订阅哦 在讲述分布式的共识问题之前,我们先了解下什么是拜占庭将军问题, 其次从拜占庭将军问题来认识什么是分布式共识问题,与分布式一致性的区分在哪里?然后推演分布式共识问题产生的原因
keithl
2020-06-02
4690
分布式网络基础
在分布式服务化架构设计中,服务与服务之间通信均是基于网络底层协议来实现的,于是我们需要对网络相关基础知识有一个基本的认知,这样在我们服务与服务之间进行通信(跨进程通信)过程能够在我们的脑图形成一个基本的数据传输流程以及其中的细节问题,这样对于我们在进行网络问题的排查能够带来一定的帮助.现在开始展开网络基础相关知识的阐述.
keithl
2020-05-27
4840
分布式架构设计概要
在互联网企业中,经常离不开的术语就是分布式架构和微服务相关的词汇,如果让你来设计一个分布式系统,你会以什么样的维度去构思我们的分布式系统呢?首先,我们需要明白为什么需要分布式系统,它的实现目标是什么;其次当我们对分布式目标清晰之后,那么我们实现可以从目标的维度思考可采取的技术手段有哪些;接着我们对技术栈知识有了一个基本认知之后,这个时候又要要求我们思考架构设计的不仅是全局宏观的技术栈视野,还要具备全局的业务服务视野来思考并落地我们的分布式架构的设计。因此对于分布式架构的学习是一个漫长的过程,先要清楚目标,然后弄明白实现目标的技术方案,最后结合我们的技术栈与业务体系从宏观以及微观上去思考并落地我们的分布式架构设计。
keithl
2020-05-20
2.4K0
深入分析Netty的高性能
在讲述Netty的高性能特性之前,基于之前的epoll技术分析中谈到C10K问题,其实是属于一个性能优化问题,目的是为了能够在单台机器上支撑更多的并发连接调度所做的性能优化,为了达到上述目标,需要要求我们设计的web服务采用合理的IO模型,并在对应的IO模型基础上引入多线程与并发库技术的使用来支撑更多的连接调度,同时考虑到计算机资源的限制,我们需要在设计web服务的时候合理对资源进行分配优化,比如内存,网络带宽以及CPU核数的充分利用,也就是说我们还需要考虑到可伸缩性的问题,通过增加资源来使得我们的web服务能够得到线性提升效果.接下来我们就来结合部分源码分析Netty技术是如何体现高性能这一个特性.
keithl
2020-05-11
1.2K0
深入Netty事件流程分析(上)
前面我们已经深入分析Netty中的核心组件,接下来我们开始来深入理解Netty各个组件处理事件的运作流程,通过事件流程的分析,我们可以思考Netty框架是如何设计组件之间的协作来配合完成基于Reactor模式且具备可伸缩性的Web服务,由于Netty事件流程比较多且杂,上篇主要分析事件轮询器初始化,启动类初始化组件以及服务端的端口绑定事件.
keithl
2020-05-07
1.1K0
深入Netty事件流程分析(下)
继上一篇Netty事件流程分析,本文主要讲述Netty的责任链创建,添加以及销毁流程,同时我们关注IO事件流程的分析,即监听连接事件,接收请求事件以及写出数据事件的流程,最后也会将结合channel/pipeline/handler的生命周期作一个小结.
keithl
2020-05-07
7260
Netty组件源码分析
深入理解Netty原理之前,先来了解下Netty的核心组件工作原理,通过一个简单的Netty服务程序示例我们可以了解到Netty的核心组件主要有启动类与事件轮询类,Channel组件,通过多线程编程异步返回事件结果的ChannelFuture,同时可以看到被回调执行的Handler执行链是如何工作的,最后分析Netty自定义实现的一个高性能数据缓冲对象原理使用.
keithl
2020-04-21
7180
IO事件驱动设计实现
在web体系中,相比线程连接架构设计而言,事件驱动设计更满足我们实现一个高性能IO的web服务,这点在高性能IO编程一文已经有讲述.对此,我们接下来将要展开如何去设计一个基于IO事件驱动架构的web服务,目前有Reactor同步多路复用模式以及Proactor异步多路复用模式两种方案,通过后面文章的分析,我们可以了解到这两种方案的设计思路,具体实现原理以及这两种模式各自的优势以及不足.
keithl
2020-04-21
1K0
高性能IO编程设计
? 首先,在讲述高性能IO编程设计的时候,我们先思考一下何为“高性能”呢,如果自己来设计一个web体系服务,选择BIO还是NIO的编程方式呢?其次,我们可以了解下构建一个web体系服务中,为了能够支撑
keithl
2020-04-07
1.1K0
Java体系之IO设计演进
在先前的文章《Unix之IO模型》已经讲述到5种IO模型以及对应的同步异步和阻塞非阻塞相关核心概念,接下来看下Java的IO模型在服务端的网络编程中是如何演进,注意这里用启动Java程序表示一个JVM进程,而JVM进程中以多线程方式进行协作,这里讲述以线程为主展开.
keithl
2020-04-07
3920
Epoll技术补充及扩展
在之前的文章中分别详细讲解网络IO模型以及IO复用模型技术实现的本质,关于epoll的技术分析,发现存在部分知识点不够严谨且也有些混乱,即epoll技术在linux底层内核源码实现中暂时没有看到有使用虚拟内存分配的技术实现,因此对此知识点持有怀疑但保留网络上的技术资料观点;其次关于epoll技术实现上,正是通过使用中间层的设计思想来解决本身select/poll无法扩展的局限性,同时借助分散的设计思想来解决select/poll存在的性能,最后我们会关注与epoll相关的其他高级轮询技术以及在早期中C10K问题是如何解决的,同时互联网技术发展至今,又出现C10M问题,解决思路有哪些可以借鉴的.
keithl
2020-03-25
5020
深入分析select&poll&epoll原理
首先,我们要了解IO复用模型之前,先要了解在Linux内核中socket事件机制在内核底层是基于什么机制实现的,它是如何工作的,其次,当我们对socket事件机制有了一个基本认知之后,那么我们就需要思考到底什么是IO复用,基于socket事件机制的IO复用是怎么实现的,然后我们才来了解IO复用具体的实现技术,透过本质看select/poll/epoll的技术优化,逐渐去理解其中是为了解决什么问题而出现的,最后本文将围绕上述思维导图列出的知识点进行分享,还有就是文章幅度较长且需要思考,需要认真阅读!
keithl
2020-03-11
9310
基于AQS原理实现的锁
你好,我是疾风先生,先后从事外企和互联网大厂的java和python工作, 记录并分享个人技术栈,欢迎关注我的公众号,致力于做一个有深度,有广度,有故事的工程师,欢迎成长的路上有你陪伴,关注后回复greek可添加私人微信,欢迎技术互动和交流,谢谢!
keithl
2020-03-10
5490
并发编程之伪共享
在CPU高速缓存与内存屏障的介绍中,CPU在对数据进行读取的时候遵循缓存一致性来解决高速缓存的数据不一致问题,现简述如下:
keithl
2020-03-10
3650
volatile的使用与原子性问题
1. volatile的使用 java源代码 public class VolatileUsedClass { private static int sharedVar = 10; public static void main(String[] args) throws Exception { Thread thread1 = new Thread(new Runnable() { @Override public vo
keithl
2020-03-10
5320
CPU高速缓存与内存屏障
最后,关于写作内存相关的原因是为了更好地理解同步关键字synchronized的内存语义(下一篇哈)
keithl
2020-03-10
1.7K0
并发面临的问题小结
在单核CPU机器下,也可以支持并发多线程执行代码,这个时候CPU会为每一个线程分配对应的时间片,通过在指定的时间片内执行对应的线程程序代码,时间片一到,线程再继续争抢CPU资源重复上述动作,CPU需要不断地进行来回切换上下文以便能够执行到争抢到资源的线程,开发人员可以在linux系统下通过vmstat查看的context switch,即cs表示上下文
keithl
2020-03-10
6260
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档