![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式架构
文章平均质量分 86
关于分布式相关知识的整理模块
外星喵
喵了个咪的~~
展开
-
如果是你,该如何做好一个项目设计?
总之,设计一个项目需要全面考虑项目的目标、需求、技术选型、开发周期、预算等因素,并采用合适的工具和技术来进行项目分析和规划、设计项目架构、数据库和数据模型、编写代码和进行测试、部署和上线项目以及维护和优化项目。在项目设计过程中,应对可能出现的风险进行预估,并制定相应的防范方案,以确保项目的顺利进行。原创 2024-04-10 19:57:04 · 1224 阅读 · 0 评论 -
Nebula图数据库
本文介绍的图和日常生活中常见的图片有所不同。通常,在英文中,为了区分这两种不同的图,前者会称为 Image,后者称为 Graph。在中文中,前者会强调为“图片”,后者会强调为“拓扑图”、“网络图”等。一张图(Graph)由一些小圆点(称为顶点或节点,即 Vertex)和连接这些圆点的直线或曲线(称为边,即 Edge)组成。“图(Graph)“这一名词最早由西尔维斯特在 1878 年提出。图还可以分为无向图和有向图。图数据库是专门存储庞大的图形网络并从中检索信息的数据库。原创 2022-11-20 23:37:18 · 3008 阅读 · 0 评论 -
Elasticsearch java操作实例
英文为Aggregation,是es除搜索功能外提供的针对es数据做统计分析的功能。聚合有助于根据搜索查询提供聚合数据。聚合查询是数据库中重要的功能特性,ES作为搜索引擎兼数据库,同样提供了强大的聚合分析能力。它基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。注意事项:text类型是不支持聚合的。...原创 2022-08-30 19:06:02 · 1294 阅读 · 1 评论 -
Elasticsearch查询
Elasticsearch查询使用案例原创 2022-07-31 21:56:23 · 5020 阅读 · 1 评论 -
ElasticSearch常用操作
ElasticSearch原创 2022-07-24 21:02:59 · 466 阅读 · 1 评论 -
解决Elasticsearch集群 master_not_discovered_exception 异常
解决elasticsearch集群启动完成后报master_not_discovered_exception异常原创 2022-06-23 11:51:02 · 15307 阅读 · 0 评论 -
分布式数据库 TiDB
分布式数据库TiDB原创 2022-06-15 22:54:33 · 1217 阅读 · 0 评论 -
Elasticsearch使用教程
注由于es和jdk是一个强依赖的关系,所以当我们在新版本的ElasticSearch压缩包中包含有自带的jdk,但是当我们的Linux中已经安装了jdk之后,就会发现启动es的时候优先去找的是Linux中已经装好的jdk,此时如果jdk的版本不一致,就会造成jdk不能正常运行。访问http//ip5601可以正常进入Kibana,说明kibana容器启动成功。“my_token_filter”{//自定义的分词器名称。//启用English停用词tokenfilter。...原创 2022-05-26 22:58:03 · 1492 阅读 · 0 评论 -
微服务架构实践原则
在微服务体系架构中,多个松散耦合的服务一起工作,每个服务专注于一个目标,并与相关行为和数据保持高度内聚。其定义包括 3 条设计原则:单一职责——每项服务都应该专注于一个目的并把它做好松耦合服务——服务之间没有太多的联系,对一个服务的变更不应该要求更改其他服务,服务之间的通信只能通过公开的服务接口进行。高内聚性——每个服务都将所有相关的行为和数据封装在一起,如果需要构建新功能,所有的更改都应该局限于一个服务中。这些原则是充分利用微服务体系架构潜力的唯一途径,任意两者的缺乏都将使之成为一种反模式。如果没原创 2022-03-19 19:50:26 · 570 阅读 · 0 评论 -
Feign入门
Feign介绍Feign是一个声明式的http客户端官方地址:https://github.com/OpenFeign/feignFeign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。在Spring Cloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。Spring Cloud对Feign进行了增强,使Feign支持了S原创 2022-01-31 18:43:58 · 424 阅读 · 0 评论 -
分布式系统限流、降级、熔断框架Hystrix
为什么需要容错限流复杂分布式系统通常有很多依赖,如果一个应用不能对来自依赖 故障进行隔离,那么应用本身就处在被拖垮的风险中。在一个高流量的网站中,某个单一后端一旦发生延迟,将会在数秒内导致 所有应用资源被耗尽(一个臭鸡蛋影响一篮筐)。如秒杀、抢购、双十一等场景,在某一时间点会有爆发式的网络流量涌入,如果没有好的网络流量限制,任由流量压到后台服务实例,很有可能造成资源耗尽,服务无法响应,甚至严重的导致应用崩溃。Hystrix是什么Hystrix 能使你的系统在出现依赖服务失效的时候,通过隔离系统所原创 2021-08-15 23:40:41 · 550 阅读 · 0 评论 -
分布式幂等
幂等的概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 复制代码在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数。用通俗的话讲:就是针对一个操作,不管做多少次,产生效果或返回的结果都是一样的举几个例子:原创 2021-08-13 21:02:53 · 558 阅读 · 1 评论 -
分布式文件系统之FastDFS
前言什么是分布式文件系统随着文件数据的越来越多,通过tomcat或nginx虚拟化的静态资源文件在单一的一个服务器节点内是存不下的,如果用多个节点来存储也是不利于管理和维护,所以我们需要一个系统来管理多台计算机节点上的文件数据,这就是分布式文件系统。分布式文件系统是一个允许文件通过网络在多台节点上分享的文件系统,多台计算机节点共同组成一个整体,为更多的用户提供分享文间。比如常见的网盘,本质就是一个分布式的文件存储系统。虽然我们是一个分布式的文件系统,但是对用户来说是透明的,用户使用像是访问本地磁原创 2021-08-08 23:32:39 · 406 阅读 · 11 评论 -
Docker安装与入门
一、欢迎来到 Docker 世界1. Docker 与虚拟化在没有 Docker 的时代,我们会使用硬件虚拟化(虚拟机)以提供隔离。这里,虚拟机通过在操作系统上建立了一个中间虚拟软件层 Hypervisor,并利用物理机器的资源虚拟出多个虚拟硬件环境来共享宿主机的资源,其中的应用运行在虚拟机内核上。但是,虚拟机对硬件的利用率存在瓶颈,因为.原创 2021-08-06 18:00:42 · 333 阅读 · 3 评论 -
基于Zookeeper与Netty实现的分布式RPC服务
文章目录前言架构前置知识服务接口API用户服务接口用户对象RPC请求对象RPC响应对象服务提供者RPC服务端RPC业务处理暴露接口服务注册服务消费者RPC客户端RPC客户端处理类RPC客户端代理类服务发现web接口前言大部分的互联网公司在应用的迭代演进过程中,随着系统访问量提高,业务复杂度提高,代码复杂度提高,应用逐渐从单体式架构向面向服务的分布式架构转变,但具体实现微服务架构的方式有所不同,主流上分为两种,一种是基于Http协议的远程调用,另外一种是基于RPC方式的调用。两种方式都有自己的代表框架,前原创 2021-08-01 23:53:50 · 1338 阅读 · 17 评论 -
基于Curator的Zookeeper操作实战
前言Zookeeper操作方式这篇文章主要说的是利用java来操作zookeeper,就如操作mysql数据库一样,主要是实现增删改查功能,而实现这些功能的方式主要有以下三种:zookeeper官方提供的原生的apizkclientApache Curator简单说下三种方式的区别与各自的优劣:zookeeper自带的客户端是官方提供的,比较底层、使用起来写代码麻烦,很多功能需要自己来实现、不够直接。zkclient是另一个开源的ZooKeeper客户端。Apache Curator原创 2021-07-30 23:26:26 · 877 阅读 · 15 评论 -
Zookeeper实现分布式锁
Zookeeper分布式锁原理临时顺序节点该类型的节点创建完成之后,若客户端与服务端断开连接之前没有执行delete操作,Zookeeper会自动删除该类型的节点,同时该类型的节点创建之后,Zookeeper会为该类型的节点在节点名称的基础上增加一个单调递增的编号;Zookeeper 分布式锁应用了其 临时顺序节点 的特性。实现步骤如下:获取锁首先在Zookeeper中创建一个持久节点ParentLock,当第一个客户端要获取锁时,在ParentLock节点下创建一个临时顺序节点Lock1原创 2021-07-25 23:58:36 · 276 阅读 · 22 评论 -
Zookeeper原理与集群
前言Zookeeeper介绍从服务角度来看:Zookeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题从数据结构角度来看:ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理从设计模式角度来看:Zookeeper是一个分布式服务管理框架,它讲注册的服务作为数据进行存储,一旦某些数据的原创 2021-07-17 23:59:50 · 511 阅读 · 26 评论 -
RPC框架原理与实现
RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。简单地说就是能使应用像调用本地方法一样的调用远程的过程或服务,可以应用在分布式服务、分布式计算、远程服务调用等许多场景。原创 2021-04-26 16:34:40 · 2992 阅读 · 2 评论 -
秒杀系统分析与实现
所谓“秒杀”,通常是由于卖家发布一些标的价格远低于实际价格的稀缺或者特价商品,吸引大量买家在同一时间网上抢购的一种销售方式。由于所有参与“秒杀”的商品通常是以不可思议的低价呈现,因此全国各地大量的顾客一到“秒杀”时段就会守在电脑前不断点击和刷新,进行抢拍,导致大量请求发送到电商服务器。超过秒杀限制的时间或者库存不足后,参与“秒杀”的商品就会拍完下架。秒杀场景一般会在电商网站举行一些促销活动(如小米手机抢购)或者节假日在12306网站上抢票时遇到。原创 2019-04-25 15:05:54 · 20720 阅读 · 2 评论 -
分布式消息队列kafka
文章目录前言什么是Kafka?Kafka的特性Kafka的意义Kafka工作原理kafka架构介绍ProducerBrokerConsumerPatitionZookeeperkafka工作流程发布-订阅消息的工作流程队列消息/用户组的工作流kafka的使用与实践Kafka 安装使用springboot集成1.导入pom依赖2.创建生产者3.创建消费者4.application.yml 详细配置前言什么是Kafka?Kafka 是 由Apache 软件基金会开发一个开源 高吞吐量 的 分布式 发布-订原创 2021-07-12 00:18:42 · 994 阅读 · 37 评论 -
SSO单点登陆系统原理与实现
单点登录(Single Sign On),简称 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,得到授权而无需再次登录,包括单点注销。由于分布式环境下,各个子系统是通常部署在不同的服务器中,那么使用传统方式的 session 是无法解决的,我们需要使用相关的单点登录技术来解决。web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前原创 2018-03-27 17:48:35 · 19882 阅读 · 7 评论 -
延迟队列DelayQueue原理
前言什么是DelayQueue(延时队列)DelayQueue 是一个通过PriorityBlockingQueue实现延迟获取元素的无界队列无界阻塞队列,其中添加进该队列的元素必须实现Delayed接口(指定延迟时间),而且只有在延迟期满后才能从中提取元素。什么是PriorityBlockingQueue(优先队列)PriorityBlockingQueue是一个支持优先级的无界阻塞队列,队列的元素默认情况下元素采用自然顺序升序排列,或者根据构造队列时提供的 Comparator 进行排序,具体取原创 2021-07-10 15:56:57 · 14400 阅读 · 14 评论 -
分布式定时任务的解决方案
前言什么是分布式定时任务?把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式,就叫做分布式定时任务。它有两层含义:它是运行在分布式集群环境下的调度任务,同⼀个定时任务程序部署多份,则同一时刻应当只允许⼀个定时任务执行。定时任务的拆分,就是把⼀个大的作业任务拆分为多个小的作业任务,同时执行。分布式定时任务的意义为什么使用分布式定时任务?主要有如下两点原因:1. **高可用**:单机版的定式任务调度只能在一台机器上运行,如果程序或者系统出现异常原创 2021-07-07 22:36:29 · 5371 阅读 · 10 评论 -
分布式事务的解决方案
前言什么是事务事务(Transaction)是指程序执行过程中的一个不可分割的逻辑单位,由一个有限的操作序列构成。什么是分布式事务分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,且属于不同的应用,分布式事务需要保证这些操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。事务隔离性脏读 :事务A修改了一个数据,但未提交,事务B读到了事务A未提交的更新结果,如果事务A提交失败,事务B读到的就是脏数据。原创 2021-07-04 23:09:33 · 265 阅读 · 9 评论 -
Redis实现分布式锁
分布式锁什么是分布式锁?在传统单体应用单机部署的情况下,可以使用本地锁如ReentrantLcok 或 synchronized进行互斥控制来解决。但是,随着业务的发展,系统架构也会逐步优化升级,原本单体单机部署的系统被演化成分布式集群系统,由于分布式系统多线程、多进程并且分布在多个不同机器上,这将使原单机部署情况下的并发控制锁策略无法满足需求。锁的作用是保证多个进程或线程在并发操作操作共享资源时资源的正确性。在分布式应用中,一个服务需要部署多个实例,对于操作分布式环境下的共享资源,就需要使用分布式锁原创 2021-07-01 23:38:53 · 200 阅读 · 4 评论 -
Redis实现分布式缓存
介绍缓存是就是建立在内存之上的,内存天然就支撑高并发。而数据库查询是走硬盘的,内存的访问速度比内存快很多,通常来说是内存的访问速度是纳秒级的,而硬盘的访问速度是微秒级的,相差了 10 万倍左右。由于redis缓存数据库的读写都是在内存中,所以它的性能才会高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,要把内存中的数据存储到磁盘,以便缓存服务器重启之后,还能够从磁盘中恢复原有的数据,这个过程就是 Redis 的数据持久化。这也是 Redis 区别于其他缓存数据库的优点之一(比如 Mem原创 2021-06-25 00:01:53 · 2535 阅读 · 10 评论 -
分布式系统之Raft算法
介绍Raft是一种为了管理日志复制的分布式一致性算法。Raft 出现之前,Paxos 一直是分布式一致性算法的标准。Paxos 难以理解,更难以实现。Raft 的设计目标是简化 Paxos,使得算法既容易理解,也容易实现。Paxos 和 Raft 都是分布式一致性算法,这个过程如同投票选举领袖(Leader),参选者(Candidate)需要说服大多数投票者(Follower)投票给他,一旦选举出领袖,就由领袖发号施令。Paxos 和 Raft 的区别在于选举的具体过程不同。Raft 可以解决分布式 C原创 2021-06-22 20:23:01 · 1042 阅读 · 3 评论 -
分布式ID算法
介绍什么是分布式ID算法就像每个人都对应一个身份证一样,每条数据都对应一个ID,所以ID是数据的唯一标识,传统的做法是利用自增ID创建每条数据的唯一标识。但是随着数据量越来越大,数据库压力越来越大,需要对数据进行分库分表甚至转移到到多台机器上,此时每个表中的数据都会按自己的节奏进行自增,就会出现ID冲突的情况。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID,而这个机制就是分布式ID算法。分布式ID的意义业务量小于500W或数据容量小于2G的时候单独一个my原创 2021-06-19 21:19:55 · 768 阅读 · 6 评论 -
Netty入门与实战
Netty是一个高性能事件驱动的异步的非堵塞的IO(NIO)网络应用程序框架和工具,基于Netty可以建立高性能的Http服务器。支持HTTP、 WebSocket 、Protobuf、 TCP 和UDP等协议。通过借助Netty,你可以很容易的自己去实现HTTP、FTP、UDP、RPC、WebSocket、Redis的Proxy、MySQL的Proxy服务器等等。原创 2019-11-15 18:08:36 · 535 阅读 · 1 评论 -
redis笔记
Redis是一个key-value存储系统,它支持的value类型相对较多,包括string、list、set和zset,这些数据都支持push/pop/add/remove及交并补等操作,而且这些操作都是原子性的,在此基础上,redis支持各种不同方式的排序。为了保证效率,数据是缓存在内存中的,Redis会周期性的把数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了需要 Redis 深度笔记 PDF 版的,添加小助理 vx:bj070701 即可获取免费下载方式!PART1:R原创 2021-06-15 22:38:13 · 341 阅读 · 8 评论 -
分布式系统之ZAB协议
ZAB介绍ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议。在 Zookeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各副本之间数据的一致性。尽管 ZAB 不是 Paxos 的实现,但是 ZAB 也参考了一些 Paxos 的一些设计思想,比如:leader 向 follows 提出提案(proposal)lea原创 2021-06-14 00:00:55 · 564 阅读 · 10 评论 -
分布式系统之paxos算法
文章目录paxos介绍拜占庭将军问题算法原理协议过程举个例子paxos介绍Paxos 算法是莱斯利·兰伯特(英语:Leslie Lamport)于 1990 年提出的一种基于消息传递且具有高度容错特性的共识(consensus)算法。Paxos 算法所要解决的问题是分布式共识性问题,即一个分布式系统中的各个进程如何就某个值(决议)通过共识达成一致。但是Paxos 常被误称为“一致性算法”,而**一致性(consistency)和共识(consensus)**其实是两个概念。Paxos 实际上是一个共识原创 2021-06-13 23:24:26 · 959 阅读 · 0 评论 -
分布式理论
分布式系统介绍分布式系统是支持分布式处理的软件系统,是在多个计算机上执行任务并借由互联网络的进行通信和协调的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布式文件系统分布式数据库系统等。其拥有的特点如下:分布性 分布式系统中的多台计算机都会在空间中随意分布,同时,机器的分布情况也会随时变动。对等性 分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的,副本指的是分布式系统对数据和服务提供的一种冗余方式原创 2021-06-13 21:48:31 · 309 阅读 · 2 评论 -
缓存淘汰算法LRU&LFU
文章目录LRU(The Least Recently Used,最近最久未使用算法)介绍Java实现第一种:使用LinkedHashMap第二种:双链表+hashmapLFU(Least Frequently Used ,最近最少使用算法)介绍Java代码实现定义Node节点定义LFU类总结LRU(The Least Recently Used,最近最久未使用算法)介绍LRU算法的思想是:如果一个数据在最近一段时间没有被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最久没有访问的原创 2021-06-13 17:56:44 · 395 阅读 · 0 评论 -
分布式缓存面临的常见问题及其解决方案
文章目录一、缓存穿透解决方案方案1:缓存空数据方案2:验证拦截方案3:使用布隆过滤器二、缓存击穿解决方案方案1:设置热点数据永不过期方案2:应用级别锁控制并发方案3:使用分布式锁三、缓存雪崩解决方案方案1:高可用缓存方案2:缓存降级(临时支持)方案3:Redis 备份和快速预热四、缓存与数据库双写时的数据一致性解决方案一、缓存穿透缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起 id 为-1 的数据或者特别大的不存在的数据。有可能是黑客利用漏洞攻击从而去压垮应用的数据库。解决方案对原创 2021-06-12 15:22:24 · 910 阅读 · 0 评论