微服务
文章平均质量分 90
MayMatrix
J2EE .
展开
-
分布式限流 redission RRateLimiter 的使用及原理
redission分布式限流采用令牌桶思想和固定时间窗口,trySetRate方法设置桶的大小,利用redis key过期机制达到时间窗口目的,控制固定时间窗口内允许通过的请求量。转载 2022-11-08 15:09:05 · 3409 阅读 · 0 评论 -
Go可用性 限流 : 自适应限流
序 在前面限流的三篇文章,我们学习了令牌桶、漏桶算法的原理、实现以及使用方式,不知道你有没有觉得这两种算法存在着一些问题。 Go 可用性(二) 限流 1: 令牌桶原理及使用 Go 可用性(三) 限流 2: 令牌桶的实现 rate/limt Go 可用性(四) 限流 3: 漏桶算法 这两种算法最大的一个问题就是他们都属于需要提前设置阈值的算法,基于 QPS 进行限流的时候最麻烦的就是这个阈值应该怎么设定。一般来说我们可以通过压测来决定这个阈值。 .转载 2021-12-03 14:47:49 · 748 阅读 · 0 评论 -
微服务:如何拆分共享数据库?
在分解单体应用程序到微服务体系架构时,重点考虑独立数据库拆分是很重要的。您需要想出一个可靠的策略,将您的数据库分割为多个与应用程序对齐的小型数据库。简而言之,您需要将您的应用程序/服务从使用单一的共享数据库中拆分出来。您应该以这样一种方式设计您的微服务体系结构,即每个单独的微服务都有自己的独立数据库和自己的领域数据。这将允许您独立部署和扩展微服务。传统的应用程序只有一个共享的数据库,数据通常在不同的组件之间共享。我们都使用过这样的数据库,并且发现开发更简单,因为数据存储在一个存储库中。但是这种数据库设计存在转载 2021-08-15 13:56:53 · 1125 阅读 · 0 评论 -
Nacos 架构-概览
Nacos 架构基本架构及概念服务 (Service)服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service.服务注册中心 (Service Registry)服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时转载 2021-03-23 17:25:31 · 482 阅读 · 0 评论 -
Nacos 注册中心的设计原理详解
朱鹏飞2019 年 5 月 13 日前言服务发现是一个古老的话题,当应用开始脱离单机运行和访问时,服务发现就诞生了。目前的网络架构是每个主机都有一个独立的 IP 地址,那么服务发现基本上都是通过某种方式获取到服务所部署的 IP 地址。DNS 协议是最早将一个网络名称翻译为网络 IP 的协议,在最初的架构选型中,DNS+LVS+Nginx 基本可以满足所有的 RESTful 服务的发现,此时服务的 IP 列表通常配置在 nginx 或者 LVS。后来出现了 RPC 服务,服务的上下线更加频繁,转载 2021-03-23 17:08:46 · 3543 阅读 · 0 评论 -
分布式高性能缓存Hazelcast 概览
一. Hazelcast1. Hazelcast简介Hazelcast 是由Hazelcast公司开发的一款开源的分布式内存级别的缓存数据库,可以为基于JVM环境运行的各种应用提供分布式集群和分布式缓存服务。利用Hazelcast可以满足“分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”等的要求。2. Hazelcast的应用Hazelcast提供了对很多 Java 接口的分布式实现,如Map, Queue, ExecutorService, Lock.转载 2021-03-22 19:46:07 · 1320 阅读 · 0 评论 -
注册中心选型篇-四款注册中心特点超全总结
在实际的项目选型中,该如何考虑选择合适的注册中心呢?我在网上找了很多资料,但都基本不是最新的,比如说几乎所有的资料都还在说只有Eureka支持Spring Cloud的集成,其他注册中心均不支持Spring Cloud。因此,就想要自己写一篇最新最全的注册中心的特点比较的文章,来帮助自己以及亲爱的粉丝们重新梳理他们的特点,以保证以更全方位的考虑来进行项目选型序号 比较项 Eureka zookeeper Nacos Consul 1 集群结构...转载 2021-03-22 15:45:40 · 3021 阅读 · 1 评论 -
Redis分布式锁解决方案 set nx px + LUA
Redis分布式锁解决方案我们知道分布式锁的特性是排他、避免死锁、高可用。分布式锁的实现可以通过数据库的乐观锁(通过版本号)或者悲观锁(通过for update)、Redis的setnx()命令、Zookeeper(在某个持久节点添加临时有序节点,判断当前节点是否是序列中最小的节点,如果不是则监听比当前节点还要小的节点。如果是,获取锁成功。当被监听的节点释放了锁(也就是被删除),会通知当前节点。然后当前节点再尝试获取锁,如此反复)本篇文章,主要讲如何用Redis的形式实现分布式...转载 2021-03-19 17:48:21 · 3804 阅读 · 1 评论 -
微博技术:千万级规模高性能高并发的网络架构设计
读完需要10分钟 速读仅需 5 分钟卫向军,现任三好网联合创始人及CTO,主要负责K12领域的直播互动教学服务平台和教育O2O系统。曾在微软、金山、新浪微博从事技术研发管理工作,分别担任过架构师、技术总监以及CTO,有丰富的技术、产品、设计、测试团队管理经验,既熟悉外企里规范化、标准化、流程化的团队项目管理,也了解如何打破常规实现创新项目的短平快上线,在矩阵式团队管理上颇有心得。原文地址:http://www.cnblogs.com/shanyou/p/5048099.html架..转载 2021-03-15 10:29:58 · 593 阅读 · 0 评论 -
如何提升系统可用性?
相传魏文王和名医扁鹊之间曾经发生过这样一段对话:魏文王:“你们兄弟三人,谁是医术是最好的呢? ”扁鹊:“大哥最好,二哥差些,我是三人中最差的一个。”魏文王:“那为什么你的名气最大?”扁鹊:“大哥治病,是治病于病情发作之前,病人尚未发病即已根除病因,使得他的医术没有得到认可,没什么名气;二哥治病,是治病于病情初起时,二哥药到病除,大家认为二哥善治小病,名气只在本乡里;而我是治病于病情严重之时,大家看到我或在经脉上穿刺放血,或在患处敷以毒药以毒攻毒,或动大手术直指病灶,使重病人病情得到缓解或治愈转载 2021-02-26 14:19:20 · 1810 阅读 · 0 评论 -
调用链选型之Zipkin,Pinpoint,SkyWalking,CAT
简介Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。CAT是大众点评开源的基于编码和配置的调用链转载 2020-07-22 16:57:28 · 510 阅读 · 0 评论 -
全链路监控:方案概述与比较
0 问题背景随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。全链路监控组件就在这样的问题背景下产生了。最出名的是谷歌公开的论文提到的Google Dapper。想要在这个上下文中理解分布式系统的行为,...转载 2020-07-22 16:53:42 · 342 阅读 · 0 评论 -
实时抓取MySQL的更新数据到Hadoop(订阅mysql binglog)
关系型数据库和Hadoop生态的沟通越来越密集,时效要求也越来越高。本篇就来调研下实时抓取MySQL更新数据到HDFS。本篇仅作为调研报告。初步调研了canal(Ali)+kafka connect+kafka、maxwell(Zendesk)+kafka和mysql_streamer(Yelp)+kafka。这几个工具抓取MySQL的方式都是通过扫描binlog,模拟MySQL master和slave(Mysql Replication架构–解决了:数据多点备份,提高数据可用性;读写分流,提转载 2020-07-22 16:25:52 · 693 阅读 · 0 评论 -
数据异构的武器-BINLOG+MQ
1、定义何谓数据异构,上周交易部门商品的同事过来做分享,又看到这个词,他的PPT里面是 数据库异构。其实我们以前做的事情,也是可以成为数据异构。比如我们将DB里面的数据持久化到REDIS里面去,就是一种数据异构的方式。如果要下个定义的话:把数据按需(数据结构、存取方式、存取形式)异地构建存储。2、常见应用场景分库分表中有一个最为常见的场景,为了提升数据库的查询能力,我们都会对数据库做分库分表操作。比如订单库,开始的时候我们是按照订单ID维度去分库分表,那么后来的业务需求想按照商家维度去查询,比如转载 2020-07-22 15:58:33 · 530 阅读 · 0 评论 -
Sentinel 对比 Hystrix(选型与简介)
总体说明先来看一下 Hystrix 的官方介绍:Hystrix is a library that helps you control the interactions between these distributed services by adding latency tolerance and fault tolerance logic. Hystrix does this by isolating points of access between the services, stoppi转载 2020-07-22 10:48:41 · 18631 阅读 · 1 评论 -
分布式柔性事务之Saga详解
- 起源 -Saga模型起源于1987年 Hector Garcia-Molina,Kenneth Salem 发表的论文《Sagas》,是分布式事务相关概念最早出现的。Saga模型是把一个分布式事务拆分为多个本地事务,每个本地事务都有相应的执行模块和补偿模块(对应TCC中的Confirm和Cancel),当Saga事务中任意一个本地事务出错时,可以通过调用相关的补偿方法恢复之前的事务,达到事务最终一致性。- 组成 -Saga模型主要分: ...转载 2020-07-10 20:21:14 · 2922 阅读 · 0 评论 -
微服务注册中心的选型和思考
概述在微服务时代,注册中心越来越被重视。服务治理逐渐跟业务服务并驾齐驱。所以本文想对注册中心进行体系化探索。注册中心,起源于分布式时代。不管是水平拆分架构,或者垂直拆分架构,对于多服务、多实例的支持,都需要对服务进行治理。注册中心被用于服务治理中的服务注册、服务发现、服务探活等场景。架构师需要追寻事物的本质,并做好设计平衡,才能真正做到降本增效。那么注册中心的本质是什么:1、根据服务发现的需求反推出第一个本质是一个Query函数Si = F(serviceName) serv...转载 2020-07-10 11:49:23 · 367 阅读 · 0 评论 -
微服务分布式事务4种解决方案实战
分布式事务分布式事务是指事务的参与者,支持事务的服务器,资源服务器分别位于分布式系统的不同节点之上,通常一个分布式事物中会涉及到对多个数据源或业务系统的操作。典型的分布式事务场景:跨银行转操作就涉及调用两个异地银行服务CAP理论CAP理论:一个分布式系统不可能同时满足一致性,可用性和分区容错性这个三个基本需求,最多只能同时满足其中两项一致性(C):数据在多个副本之间是否能够保持一致的特性。可用性(A):是指系统提供的服务必须一致处于可用状态,对于每一个用户的请求总是在有限的时间内返回转载 2020-07-08 16:24:16 · 740 阅读 · 0 评论 -
一致性哈希算法-应用
一致性Hash负载均衡算法实现1. Hash函数要将对象和服务器映射到Hash环中,需要计算出来哈希码,这就需要有Hash函数来完成,也就是关系到使用的哈希算法。使用一个好的哈希算法是很重要的,为什么这么说呢,拿我们上面提到的缓存服务来说,一个完美的解决方案是需要数据分配的平衡,假如Hash环的映射是这样的:哈希码聚集.jpgHash码数值落在一个小区间内,出现Hash码聚集情况,那么从上图可以看到缓存数据全部由c3节点的服务器存储,出现数据分配不平衡。那么就需要一个好的哈希处理使得哈希转载 2020-07-07 18:15:24 · 647 阅读 · 0 评论 -
分布式系统中一致性哈希算法-简介
分布式系统中一致性哈希算法业务场景近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等。我们以负载均衡为例,常见的负载均衡方法有很多,但是它们的优缺点也都很明显:随机访问策略。系统随机访问,缺点:可能造成服务器负载压力不均衡,俗话讲就是撑的撑死,饿的饿死。 轮询策略。请求均匀分配,如果服转载 2020-07-07 18:04:53 · 424 阅读 · 0 评论 -
分布式事务精华总结篇
- 总述 -咱们前面分别对分布式事务的几个分支:XA、2PC、3PC、TCC、Saga、事务消息、最大努力事务进行的详细介绍。本篇作为分布式事务设计的收尾篇,讲对前面的内容查缺补漏和总结,最后对市面的一些开源框架做一些介绍。- 查缺补漏 -1.补偿型事务柔性事务分补偿型事务和通知型事务。但对补偿型事务没有进行详细介绍,那什么是补偿型事务呢,在Atomikos 公司Guy Pardon的论文《Business_Activities》中有这样的描述:...转载 2020-07-07 11:04:24 · 211 阅读 · 0 评论 -
Redisson实现Redis分布式锁的原理
Redisson实现Redis分布式锁的原理一、写在前面现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。大家如果...转载 2020-05-22 17:46:05 · 4516 阅读 · 2 评论 -
共识算法:Raft
拜占庭将军问题https://www.jianshu.com/p/26adc88a1f49针对简化版拜占庭将军问题,Raft 解决方案类比我们还是用拜占庭将军的例子来帮助理解 Raft。假设将军中没有叛军,信使的信息可靠但有可能被暗杀的情况下,将军们如何达成一致性决定?Raft 的解决方案大概可以理解成 先在所有将军中选出一个大将军,所有的决定由大将军来做。选举环节:比如说现在一共有3个将军 A, B, C,每个将军都有一个随机时间的倒计时器,倒计时一结束,这个将军就会把自己..转载 2020-05-15 17:50:24 · 368 阅读 · 0 评论 -
Zookeeper:一致性协议之 ZAB(二)
1. 什么是 ZAB 协议? ZAB 协议介绍 ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。 Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议。 ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复和原子广播协议。下面我们会重点讲这两个东西。 ...转载 2020-05-15 15:50:56 · 250 阅读 · 0 评论 -
Zookeeper:一致性协议:Zab协议(一)
什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 崩溃恢复 如何保证数据一致性 Zab 协议如何数据同步 如何处理需要丢弃的 Proposal Zab 协议实现原理 选主过程 什么是Zab协议?Zab协议 的全称是 Zookeeper Atomic Broadcast (Zookeeper原子广播协议)。Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。 Zab协议是为分布式协调服务Zookeepe.转载 2020-05-15 15:20:54 · 244 阅读 · 0 评论 -
一致性及解决一致性的两种方式:2PC和3PC
1一致性1.1 简述一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的假设一个具有N个节点的分布式系统,当其满足以下条件时,我们说这个系统满足一致性:全认同: 所有N个节点都认同一个结果 值合法: 该结果必须由N个节点中的过半节点提出 可结束: 决议过程在一定时间内结束,不会无休止地进行下去1.2 面临着的问题消息传递异步无序: 现实网络不是一个可靠的信道,存在消息延时、丢失,节点间消息传递做不到同步有序 节点宕机: 节点持续宕机,不会恢复 节点宕机恢复..转载 2020-05-14 17:46:33 · 1525 阅读 · 1 评论 -
数据库中ACID、CAP、BASE
关系型数据库中遵循的ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。 比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱.转载 2020-05-14 17:18:30 · 696 阅读 · 0 评论 -
RabbitMQ之消息确认机制(事务+Confirm)
概述在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达broker的,如果在消息到达broker之前已经丢失...转载 2020-05-08 11:20:54 · 1133 阅读 · 0 评论 -
分布式一致性算法(二)Raft算法
一、更加直观的Raft算法Raft 适用于一个管理日志一致性的协议,相比于 Paxos 协议 Raft 更易于理解和去实现它。为了提高理解性,Raft 将一致性算法分为了几个部分,包括领导选取(leader selection)、日志复制(log replication)、安全(safety),并且使用了更强的一致性来减少了必须需要考虑的状态。1.解决什么问题分布式存储系统通常通过维...转载 2020-03-05 11:49:19 · 555 阅读 · 0 评论 -
分布式一致性算法(一)Paxos算法
从分布式一致性到共识机制(一)Paxos算法从分布式系统的CAP理论出发,关注分布式一致性,以及区块链的共识问题及解决。区块链首先是一个大规模分布式系统,共识问题本质就是分布式系统的一致性问题,但是又有很大的不同。工程开发中,认为系统中存在故障(fault),但不存在恶意(corrupt)节点,而区块链,特别是公开链是落地到物理世界中,涉及到人性和利益关系,不可避免的存在信任以及恶意攻击...转载 2020-03-05 11:46:10 · 585 阅读 · 0 评论 -
「分布式系统前沿技术」专题 | 微服务架构何去何从?
「分布式系统前沿技术」专题 | 微服务架构何去何从?数据库分布式分布式系统微服务发布于 2019-12-27约 15 分钟分布式技术的发展,深刻地改变了我们编程的模式和思考软件的模式。值 2019 岁末,PingCAP 联合 InfoQ 共同策划出品“分布式系统前沿技术 ”专题, 邀请众多技术团队共同参与,一起探索这个古老领域的新生机。本文出自转转首席架构师孙玄。微服务架构模...转载 2020-02-27 16:26:17 · 295 阅读 · 0 评论 -
MySQL分区和分表
MySQL分区和分表一、概念1.为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。2.什么是分表?分表是将一个大表按照一定的规...转载 2019-11-28 12:25:30 · 153 阅读 · 0 评论 -
分库分表需要考虑的问题及方案
分库分表的基本思想Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个...转载 2019-11-21 11:39:52 · 390 阅读 · 0 评论 -
微服务设计、拆分原则-AFK
一、AKF拆分原则 业界对于可扩展系统架构设计有一个朴素的理念:通过加机器就可以解决容量和可用性问题。 这一理念在云计算概念疯狂流行的今天,得到了广泛的认可,对于一个规模迅速增长的系统而言,容量和性能问题当然是首当其冲的。但随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还要面对功能与模块数量上的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务的问题。 然而...转载 2019-11-21 11:20:04 · 3736 阅读 · 0 评论 -
Spring Cloud Nacos 作为注册和配置中心 + Spring Cloud Gateway作为网关 + Sentinel 作为熔断服务
因为要整合gateway所以(版本的选择为spring官方的推荐搭配)springcloud 的版本选择 Finchley.SR2springboot 的版本选择 2.0.6.RELEASE这里nacos的starter选择用以下版本<nacos.version>0.2.1.RELEASE</nacos.versio...转载 2019-11-19 10:27:47 · 1300 阅读 · 1 评论 -
docker存储volume
#环境 centos7.4 , Docker version 17.12.0-cedocker volume创建、备份、nfs存储#docker volume数据存容器内,删容器即销毁全部数据要保留的数据(数据持久化),需存储在容器外docker volume是文件或目录,mount到docker容器中使用docker volume bind muount #挂载任意目录或文件 ...转载 2019-11-13 16:45:19 · 153 阅读 · 0 评论 -
[Docker]清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录所解决的问题
清理空间:1. Docker System命令在《谁用光了磁盘?Docker System命令详解》中,我们详细介绍了Docker System命令,它可以用于管理磁盘空间。docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:dockersystemdfTYPETOTAL...转载 2019-11-07 10:34:15 · 8693 阅读 · 0 评论 -
[Docker]docker启动服务故障排查-Linux与docker文件系统不匹配
环境: os:=====>centos 7.4 docker:=====>1.13.1 docker-compose:=====>1.23.2 image:=====>php:7.2-apache image:=====>mysql:5.7问题表现:使用同一个docker 镜像启动服务,一部分节点启动服务正常,一部分...转载 2019-11-06 23:18:06 · 1212 阅读 · 0 评论 -
2018 Java 后端工程师的书单推荐
【源码圈】众胖友协作完成 希望书单能在你想要进一步打怪升级的路上,给予些许帮助 建议先收藏本书单,认真啃完一本再买下一本,扎实走完每一步 分类困难,因而没分。大体顺序,编程开发 => 数据库 => 架构运维 => 算法 转自:http://www.iocoder.cn/Architecture/books-recommen...转载 2019-02-14 14:26:31 · 333 阅读 · 0 评论 -
VMware15 linux虚拟机与本地物理机共享文件夹
两步:1.安装VMTools2.设置共享目录在 Linux 虚拟机中手动安装 VMware ToolsVMware Workstation Pro 15.0https://docs.vmware.com/cn/VMware-Workstation-Pro/15.0/com.vmware.ws.using.doc/GUID-08BB9465-D40A-4E16-9E15-8C016CC81...转载 2019-07-19 15:28:39 · 21622 阅读 · 1 评论