从零开始学分布式
该系列为分布式所涉及到的技术栈的学习总结,包含但不限于Zookeeper、Dubbo、消息队列(ActiveMQ、Kafka、RabbitMQ)、Nosql(Redis、MongoDB)、Niginx、分库分表MyCat、Netty等内容
夜勿语
热爱技术,分享技术,博客园地址:https://www.cnblogs.com/yewy/
展开
-
消息队列——Kafka基本使用及原理分析
一、什么是Kafka二、Kafka的基本使用Java三、KafKa原理分析四、总结原创 2019-11-22 22:51:11 · 671 阅读 · 0 评论 -
消息队列——RabbitMQ的基本使用及高级特性
文章目录一、引言二、基本使用1. 简单示例2. work queue和公平消费消息3. 交换机三、高级特性1. 消息过期2. 死信队列3. 延迟队列4. 优先级队列5. 流量控制a. 服务端限流b. 客户端限流6. 消息可靠性a. 如何确保消息发送到交换机b. 如何确保消息正确路由到队列c. 消息持久化存储d. 如何确保消息正确投递到消费者e. 如何保证消息幂等性f. 如何保证消息的顺序四、总结...原创 2019-11-12 20:14:30 · 614 阅读 · 0 评论 -
MongoDB——基本使用及集群搭建
文章目录什么是MongoDb?基本概念与关系型数据库的比较Mongo的高效性文件存储基本使用启动/连接服务基础操作命令高可用集群搭建应用场景总结什么是MongoDb?基本概念MongoDB是一种支持多语言面向文档的NOSql数据库,它不支持事务操作(4.2版本开始支持跨文档分布式事务)。什么是面向文档?简单说就是使用类JSON的数据结构——BSON(Binary JSON)来存储数据。使用这...原创 2019-10-31 22:09:54 · 606 阅读 · 0 评论 -
分布式架构概述及设计
引言随着越来越多的人参与到互联网的浪潮来,曾经的单体应用架构越来越无法满足需求,所以,分布式集群架构出现,也因此,分布式搭建开发成为了Web开发者必掌握的技能之一。那什么是分布式呢?怎么实现分布式以及怎么处理分布式带来的问题呢?本系列文章是笔者对自身学习的总结,包含但不限于Zookeeper、Dubbo、消息队列(ActiveMQ、Kafka、RabbitMQ)、Nosql(Redis、Mong...原创 2019-08-15 21:50:06 · 16692 阅读 · 5 评论 -
Zookeeper——分布式一致性协议及Zookeeper Leader选举原理
一、引言随着业务的增长,单体架构发展为分布式架构,大大提升了业务的处理能力,但同时也带来了很多单体架构不存在的问题,如:各节点之间网络通信的异常。由于网络异常造成的网络分区。引出“三态”。在单体架构中只会存在“成功”或“失败”两种结果,但是在分布式架构中由于网络异常将会出现“未知”的结果,即请求丢失或者响应丢失,导致客户端超时。各节点会发生故障。分布式事务以及数据一致性。各节点的配...原创 2019-08-17 21:54:26 · 1099 阅读 · 0 评论 -
Zookeeper——基本使用以及应用场景(手写实现分布式锁和rpc框架)
Zookeeper的基本使用在之前的文章主要讲述了Zookeeper的原理,本文则是实践,包含Zookeeper单机环境到集群环境的搭建,基本配置,JavaAPI的使用以及手写实现分布式锁等内容。(PS:在往下进行之前,请务必准备至少3台linux虚拟机搭建集群。)Zookeeper单机部署首先到官网下载Zookeeper(笔者使用的是3.4.10版本)到linux虚拟机上,然后tar -...原创 2019-08-21 19:36:32 · 1287 阅读 · 0 评论 -
Zookeeper——Watcher原理详解
文章目录引言正文一、如何注册监听二、如何触发监听事件三、事件类型有哪些四、Watcher可以被无限次触发么?为什么要这么设计?五、Watcher实现原理1. 客服端发送请求a. 初始化客户端并绑定Watcherb. exists/getData/getChildren绑定Watcher以及发送请求ClientCnxn.submitRequestClientCnxnSocketNIO.doTranp...原创 2019-08-24 17:13:10 · 2018 阅读 · 1 评论 -
Dubbo——SPI及自适应扩展原理
文章目录引言正文一、什么是SPI?1. Java SPI的实现2. Dubbo SPI实现原理由配置文件得到的猜想SPI源码二、自适应扩展机制三、Dubbo IOC引言Dubbo虽然已交由apache管理,并且社区活跃度也不如SpringCloud,但也是国内应用比较广泛的RPC框架,其背后的设计思想非常值得我们学习借鉴。鉴于Dubbo官方文档对于基础的使用配置已经讲解的非常清楚了,这里就不再...原创 2019-08-27 18:42:11 · 1887 阅读 · 2 评论 -
Dubbo——服务发布原理
引言在使用Dubbo的时候你一定会好奇它是怎么实现RPC的,而要了解它的调用过程,必然需要先了解其服务发布/订阅的过程,本篇将详细讨论Dubbo的发布过程。源码分析新学Dubbo大都会比较疑惑,服务启动时的入口在哪?是如何加载我们的配置的?由于Dubbo是基于Spring的自定义扩展标签来实现配置的,而发布服务时我们需要配置dubbo:service标签,因此我们可以从这里入手。首先我们需...原创 2019-08-31 18:57:00 · 1564 阅读 · 0 评论 -
Dubbo——服务引用
引言上一篇我们分析了服务发布的原理,可以看到最终默认是创建了一个Netty server,这一篇原创 2019-09-03 14:42:22 · 1251 阅读 · 0 评论 -
Dubbo——服务调用过程
文章目录引言服务的交互服务降级集群容错服务调用服务端接收请求总结引言经过之前文章的铺垫,现在可以来分析服务的交互调用过程了。服务的交互服务降级从名字上看我们不难理解MockClusterInvoker相当于是对普通Invoker(如DubboInvoker)的装饰增强,提供集群容错相关的功能,因此最终还是会进入到DubboInvoker,所以这里就以MockClusterInvoker....原创 2019-09-07 21:42:47 · 768 阅读 · 0 评论 -
Dubbo——服务目录
引言前面几篇文章分析了Dubbo的核心工作原理,本篇将对之前涉及到但却未细讲的服务目录进行深入分析,在开始之前先结合前面的文章思考下什么是服务目录?它的作用是什么?正文概念及作用清楚Dubbo的调用过程就知道Dubbo在客户端和服务端都会为服务生成一个Invoker执行体,这个Invoker包含了所有的配置信息,也相当于是一个代理对象,所以这也就引发出几个问题:怎么管理Invoker?...原创 2019-09-10 08:11:20 · 1364 阅读 · 0 评论 -
消息队列——ActiveMQ使用及原理浅析
文章目录引言正文一、ActiveMQ是如何产生的?产生背景JMS规范基本概念JMS体系结构二、如何使用?基本功能消息传递P2Ppub/sub持久订阅消息传递的可靠性事务型会话与非事务型会话持久化与非持久化消息的存储策略消息发送策略三、原理浅析发送原理消费原理消费消息流程消息确认及消息重发四、基本优化总结引言什么是消息中间件?随着业务的急速增长以及分布式架构的逐渐兴起,首先要考虑的就是如何高效的...原创 2019-09-11 20:01:09 · 2538 阅读 · 0 评论