分布式系统基础
RonTech
执着、认真;喜欢技术,但更热爱技术+行业;热爱生活,但更喜欢与人交往;喜欢学习,但更注重与人分享。
展开
-
一致性Hash(Consistent Hash)
一致性Hash算法简介一致性Hash算法是在1997年由麻省理工提出的一种分布式Hash实现算法,设计的目标是为了解决英特网中的热点问题。一致性Hash算法提出了在动态变化的Cache环境中,判定Hash算法好坏的四个定义。平衡性(Balance):平衡性是指哈希的结果能够尽可能的分布到所有的节点中去,这样从算法上解决负载均衡的问题。单调性(monotonicity):单调性是指在新增或者删减节原创 2017-10-27 12:20:56 · 682 阅读 · 0 评论 -
持久化存储-MySql拓展
先说一个概念 ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability). 这是可靠数据库所应具备的几个特性.一、MySql拓展1、业务拆分随着网站的业务不断发展单个库访问量越来越大,因此不得不对系统业务进行拆分。...原创 2018-06-04 16:24:22 · 4309 阅读 · 0 评论 -
区块链-密码学与安全技术
本文主要总结了密码学与安全领域中的一些核心问题和经典算法。通过阅读本文内容,相信读者已经对现代密码学的发展状况和关键技术有了初步了解。掌握这些知识,对于帮助理解区块链系统如何实现隐私保护和安全防护都很有好处。现代密码学安全技术在设计上大量应用了十分专业的现代数学知识,如果读者希望成为这方面的专家,则需要进一步学习并深入掌握近现代的数学科学,特别是数论、抽象代数等相关内容。可以说,密码学安全学科是没有捷径可走的。原创 2017-11-29 17:14:51 · 23243 阅读 · 0 评论 -
分布式系统核心问题
分布式系统是计算机科学中十分重要的一个研究领域。随着现代计算机集群规模的不断增长,所处理的数据量越来越大,同时对于性能、可靠性的要求越来越高,分布式系统相关技术已经变得越来越重要,起到的作用也越来越关键。分布式系统中如何保证共识是个经典的技术问题,无论在学术上还是工程上都存在很高的研究价值。令人遗憾地是,理想的(各项指标均最优)解决方案并不存在。在现实各种约束条件下,往往需要通过牺牲掉某些需求,来设计出满足特定场景的原创 2017-11-28 18:40:51 · 25071 阅读 · 5 评论 -
聊聊微服务架构
互联网时代,在极端情况下,每天都有新需求要开发上线。随着代码量及团队成员的增加, 传统单体式架构的弊端日益凸显,严重制约了业务的快速创新和敏捷交付,与互联网所追求的 “唯快不破”的目标越来越远。这就是微服务架构兴起的时代大背景。 微服务架构( Microservice Architecture) 是近两年来最流行的架构术语之一,大名鼎鼎的 Martin Flower曾这样描述原创 2017-10-20 17:37:02 · 4604 阅读 · 0 评论 -
分布式系统基础-消息队列之JMS
JMS并没有定义消息的网络报文格式及相关的通信命令协议,但它以Java API的方式给出了一个可以纳入到J2EE环境中的消息中间件所应具备的编程级接口。同时,JMS归纳总结了两种通用的消息传递模型,深入理解这两种消息模型有助于我们准确把握消息中间件的原理和典型的使用场景。第一个消息模型是点对点消息通信模型。如下图所示,发送方Client1(Producer/Sender) 与消费者Client 2原创 2017-10-18 20:41:16 · 1093 阅读 · 0 评论 -
软件架构需要考虑的基本原则
架构尽可能的简单,清晰,不过度设计。稳定业务和易变业务要分离处理,核心业务和非核心业务要分离处理,电商业务和辅助流程要分离,应用和数据要分离,服务和实现细节分离,前台和后台分离。原创 2017-09-25 15:40:04 · 3298 阅读 · 2 评论 -
分布式系统设计理念
首先,分布式系统的首要目的是提升系统的整体性能和吞吐量。如果最终设计出来的分布式系统占用了10台机器才勉强达到单机系统的两倍性能,那么这个分布式系统还有存在的价值吗?另外,即使采用了分布式架构,也仍然需要尽力提升单机上的程序性能,使得整体性能达到最高。所以,我们仍然需要掌握高性能单机程序的设计和编程技巧,例如多线程编程、多进程高性能IPC通信、高性能的网络框架等。其次,任何分布式系统都存在让人无法回原创 2017-09-26 17:05:34 · 2964 阅读 · 0 评论 -
分布式系统的一致性原理
对于分布式系统,我们必须深刻理解和牢记一点:分布式系统的不可靠性。“可靠性”是指系统可以无故障的持续运行,如果一个系统在运行中意外宕机或者无法正常使用,那么他就是一个不可靠的系统,即使宕机和无法使用的时间很短。我们知道,分布式系统通常是由独立的服务器通过网络松散耦合组成的,而网络本质上是一个复杂的I/O系统,而通常情况下,I/O发生故障的概率和不可靠性远远高于主机的CPU和内存,加之网络设备的引入,原创 2017-10-06 17:54:02 · 842 阅读 · 0 评论 -
分布式系统基础-分布式事务
事务是数据库运行中的一个逻辑工作单位,工作单元内的一系列SQL命令具有原子性操作特点,这些命令要么完全成功执行,要么完全撤销或不执行,如果是后者,则表现为数据库内的最终数据没有发生任何改变。事务通常由数据库中的事务管理子系统负责处理。原创 2017-10-08 13:27:06 · 1104 阅读 · 0 评论 -
分布式系统基础-远程过程调用(RPC)
RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的一种多进程间的通信机制。不同于复杂的Socket通信方式,RPC的初心是设计一套远程通信的通用框架,这个框架能够自动处理通信协议、对象序列化、网络传输等复杂细节,并且希望开发者使用这个框架以后,调用一个远程机器上的接口代码与以本地方法调用的代码“看起来没什么区别”,从而大大减小分布式的开发难度,原创 2017-10-10 21:49:31 · 4322 阅读 · 0 评论 -
分布式系统基础-全文检索
我们每个人解除互联网都是从互联网搜索开始的,虽然大家常用的搜索引擎可能不同,搜索的关键词也可能不同,但是我们习惯经常在网上搜索的方式来快速学习技术并解决日常工作中所遇到的各种技术问题,如果没有互联网搜索引擎,那么恐怕我们将会有很多的人要失业了。如何在海量的网页信息中准确且快速的找到包含我们所搜索关键字的所有网页并合理的排序展示,这的确是一个很有挑战的问题。除了我们日常工作中使用的搜原创 2017-10-17 16:15:22 · 12554 阅读 · 0 评论 -
分布式系统基础-消息队列概述
消息队列(Message Queue,MQ)其实是一个古老的计算机术语,UNIX进程间通信就是用到了消息队列技术:一个进程把数据写入某个特定的队列中,其他进程可以读取队列中的数据,从而实现异步通信能力。而后来我们所说的“消息队列”通常指独立的消息队列中间件。不管是最早的进程间通信的消息队列还是独立的消息队列中间件,他们相对于RPC通信来说都有以下很明显的优势。原创 2017-10-18 20:31:13 · 555 阅读 · 0 评论 -
分布式系统基础-消息队列之ActiveMQ
ActiveMQ是J2EE中 JMS消息通信规范的一个实现,也是目前还在活跃和发展的最古老的第一代MQ,自从2004年成熟以后就迅速传播开来,经过多年的发展,逐步奠定了它在Java/J2EE圈子里的开源霸主地位,可谓生生不息。ActiveMQ除了作为独立的消息中间件使用,还经常在某些ESB (Enterprise Service Bus)产品中作为总线基础设施( Bus Infrastructur原创 2017-10-18 20:55:24 · 1325 阅读 · 1 评论 -
分布式系统基础-消息队列之RabbitMQ
RabbitMQ是挑战Java/JMS消息中间件的产物,也是第二代消息中间件,它是实现了AMQP消息模型的重要产品,所以我们需要先了解一下AMQP模型相关的内容。AMQP模型如下图所示,每个Exchange (信箱/交换机)绑定(Binding)了0到N个Queue(队列),当收到Publisher发布的Message后,Exchange会根据自身的类型结合路由规则来确定此消原创 2017-10-20 10:27:20 · 894 阅读 · 0 评论 -
分布式系统基础-消息队列之Kafka
相对于前面所说的那些MQ前辈们,Kafka可谓是不走寻常路的“天才少年”。与久负盛名的前辈们不同,Kafka从一开始就是走“互联网的野路子”,它抛弃了很多华而不实的企业级特性,专注于高性能与大规模这两个互联网应用的核心需求,并全面采用了新一代的分布式架构 的设计理念,从基因和技术两方面拉开了与前辈们的距离。我们先来看看Kafka的一些激动人心的特性。高吞吐量、低延迟:Kafka每秒可以处理几十万条原创 2017-10-20 10:44:42 · 604 阅读 · 0 评论 -
8、Zookeeper服务注册与发现原理浅析
了解Zookeeper的我们都知道,Zookeeper是一种分布式协调服务,在分布式应用中,主要用来实现分布式服务的注册与发现以及分布式锁,本文我们简单介绍一下Zookeeper是如何实现服务的注册与发现的。使用Zookeeper实现服务注册与发现,主要应用的是Zookeeper的Znode数据模型和Watcher机制,因此咱们先从Zookeeper的数据模型说起。1、Zookeeper数据模...原创 2019-10-01 15:48:04 · 5204 阅读 · 3 评论