中间件
文章平均质量分 71
summer_west_fish
本科毕业深圳大学,拥有Java开发10年的经验。 拥有Devops、敏捷和项目管理多年的经验,并且获得PMP、ACP和DOP等相关证书。
展开
-
Minio使用指南
【代码】Minio使用指南。原创 2024-08-07 15:47:55 · 118 阅读 · 0 评论 -
Elastic Search Cluster
协调节点不存储数据,也不执行数据处理任务,但它负责将搜索请求分发到包含相关数据的节点,并将这些节点返回的结果合并后返回给客户端。具体来说,当客户端发出查询某个索引的数据的请求时,协调节点会接收这个请求,并将其分发给保存相关数据的数据节点(Data Node)。同时,由于协调节点不参与数据的存储和处理,它需要有足够的CPU和内存资源来处理大量的并发请求。此外,值得注意的是,在Elastic Search中,每个节点默认都起到了协调节点的职责,即每个节点都能接收和处理来自客户端的请求。原创 2024-04-29 11:33:59 · 106 阅读 · 0 评论 -
kafka broker
如果生产者错误地将消息发送到了一个非leader副本,或者消息在网络传输过程中被路由到了一个非leader副本,那么这个非leader副本需要识别出这一情况,并将消息转发给正确的leader副本。需要注意的是,Kafka的生产者客户端通常会配置为直接与目标分区的leader副本通信,以避免不必要的消息转发和延迟。在Kafka的broker集群中,如果一条消息到达了一个broker节点,但该节点并不是目标分区的leader节点,那么这条消息需要被转发到相应的leader节点进行处理。原创 2024-04-02 16:55:15 · 334 阅读 · 0 评论 -
ElasticSearch
Gossip协议是一种分布式系统中常用的通信协议,主要用于节点之间传播信息。它的设计目标是高效、可靠地将消息传递给所有节点,并保证最终一致性。Gossip协议的核心思想是通过节点之间的随机通信,将信息在整个网络中传播开来,从而达到全局共识的目的。具体来说,每个节点持有一个消息队列,用于存储待传播的消息。被选中的节点在收到消息后,会继续将消息传播给其他节点,以此类推。这种方式使得信息能够以一种去中心化的方式在网络中扩散,每个节点都有能力接收并转发消息。原创 2024-03-11 12:05:34 · 959 阅读 · 0 评论 -
ETCD分布式缓存
ETCD的特性包括完全复制(集群中的每个节点都可以使用完整的存档)、高可用性(可用于避免硬件的单点故障或网络问题)、一致性(每次读取都会返回跨多主机的最新写入)、简单(有一个定义良好、面向用户的API)、安全(实现了带可选的客户端证书身份验证的自动化TLS)、快速(每秒10000次写入的基准速度)和可靠(使用Raft算法实现了存储的合理分布)。ETCD集群的选主过程基于Raft一致性算法,该算法要求集群中至少有一半加一(N/2 + 1)的节点是可用的,以便能够达成共识并进行正常的操作。原创 2024-03-06 09:52:14 · 402 阅读 · 3 评论 -
Drools规则引擎入门教程
Drools是一个基于规则引擎的开源项目,它可以帮助开发人员将业务规则与应用程序分离开来,从而提高应用程序的可维护性和灵活性。原创 2023-12-12 16:20:00 · 1042 阅读 · 0 评论 -
Git设置SSH Key
(1)打开 git 命令窗口(2)配置用户名(填自己的姓名)(3)配置用户邮箱(填自己的邮箱)(4)生成公钥、秘钥(填自己的邮箱,执行后需要按几次 enter 直到结束)(5)配置 ssh 变量。原创 2023-03-09 17:50:37 · 6730 阅读 · 0 评论 -
Linux安装Keepalived
【代码】Linux安装Keepalived。原创 2022-11-09 15:57:30 · 1623 阅读 · 0 评论 -
SkyWalking监控视角与指标介绍
cpm 全称 call per minutes,是吞吐量(Throughput)指标。下图是拼接的全局、服务、实例和接口的吞吐量及平均吞吐量。第一条185cpm=185/60=3.08个请求/秒。原创 2022-11-07 10:10:50 · 3923 阅读 · 1 评论 -
Zookeeper作为协调服务发展史
zookeeper作为一款优秀的协调服务,在数据量不是特别大且读多写少的场景下,还是很好用的。但是随着数据量越来越大,处理压力也越来越大,这种情况下zookeeper也越来越力不从心了。这点从新一代大数据组件很少使用zookeeper,而使用zookeeper的组件正在减少对zookeeper的依赖(HBase)或者尝试摆脱zookeeper(2.8版本以后的kafka,尝试使用raft代替zookeeper)就可以看得出来。但是这也正是技术的魅力,江山代有人才出,各领风骚数百年。原创 2022-11-06 17:35:09 · 228 阅读 · 0 评论 -
SSO 单点登录和 OAuth2.0
SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似,但概念上又十分不同。SSO大家应该比较熟悉,它将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。OAuth2.0原理可能比较陌生,但平时用的却很多,比如访问某网站想留言又不想注册时使用了微信授权。原创 2022-11-04 22:12:59 · 572 阅读 · 0 评论 -
Linux安装haproxy
Linux安装haproxy原创 2022-10-19 18:02:24 · 1344 阅读 · 0 评论 -
Docker安装Kong
首先我们创建一个 Docker 自定义网络,以允许容器相互发现和通信。在下面的创建命令中 kong-net 是我们创建的 Docker 网络名称。Kong 目前使用 Cassandra 或者 PostgreSQL,你可以执行以下命令中的一个来选择你的 Database。请注意定义网络 --network=kong-net。原创 2022-10-17 12:07:32 · 2858 阅读 · 0 评论 -
SOFAJRaft 选举机制剖析 | SOFAJRaft 实现原理
我们在本文中采用了类比的方式来剖析源码,主要是为了让读者能更容易的理解如何在分布式环境中达成共识,其实这也是整个 SOFAJRaft 要实现的目标。行文至此,作者感觉已经把选举说清楚了,如果还有没提到的地方,或者一些流程中的分支任务,欢迎从源码中进一步寻找答案。最后贴出上面提到的四个方法的源码。图14 - preVote 预投票图15 - electSelf 投票图16 - handlePreVoteRequest 处理预投票图17 - handleRequestVoteRequest 处理投票。转载 2022-10-12 18:15:31 · 367 阅读 · 0 评论 -
ElasticSearch基础语法
【代码】ES基础语法。原创 2022-10-12 12:03:39 · 665 阅读 · 0 评论 -
Logstash数据同步
结果:原创 2022-10-12 11:31:23 · 1137 阅读 · 0 评论 -
Linux安装DBLE
1、下载并安装通过此链接( https://github.com/actiontech/dble/releases )下载最新版本的安装包 2、修改db.xml配置文件3、启动dble4、测试dble分库,使用man1账户 结果:2、cluster.cnf配置文件内容3、修改bootstrap.cnf文件中instance不修改会引起如下错误:原创 2022-10-10 11:51:36 · 704 阅读 · 0 评论 -
Linux7安装MySQL8.0
2、CentOS7安装MySQL8报错:Error: Package: mysql-community-server-8.0.28-1.el8.x86_64 (mysql80-community) Requires: libtirpc.so.3()(64bit)从mysql官网上获取community版本最新的yum repository并安装。1、镜像源地址一定要和操作系统版本匹配,不然安装过程中容易出现问题。安装mysql-community-server。移除所有mysql开头的包。原创 2022-10-10 10:50:19 · 1917 阅读 · 0 评论 -
Sharding-JDBC实现分库分表
Sharding-JDBC实现分库分表原创 2022-10-09 11:46:28 · 627 阅读 · 0 评论 -
MySQL单表数据到达2000w,为什么就需要考虑分表?
我们假设主键ID为bigint类型,长度为8字节(面试官问你int类型,一个int就是32位,4字节),而指针大小在InnoDB源码中设置为6字节,所以就是 8+6=14 字节,16k/14B =16*1024B/14B = 1170。B+树高度一般为1-3层,如果B+到了4层,查询的时候会多查磁盘的次数,SQL就会变慢。这是因为索引一般是B+树结构,数据千万级别的话,B+树的高度会增高,查询就变慢啦。因此,一棵高度为2的B+树,能存放1170 * 16=18720条这样的数据记录。原创 2022-10-09 10:48:23 · 1569 阅读 · 0 评论 -
MySQL两阶段提交
执行器先找到引擎取ID=2这一行。ID是主键,引擎直接用树搜索找到这一行。如果ID=2这一行所在的数据也本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后再返回。将redo log的写入拆成了两个步骤:prepare 和 commit,这就是两阶段提交。执行器拿到引擎给的行数据,把这个值加上1,得到新的一行数据,再调用引擎接口写入这行新数据。然后告知执行器执行完成了,随时可以提交事务。原创 2022-10-09 10:16:51 · 268 阅读 · 1 评论 -
Zookeeper集群搭建
到apache官网下载对应的zookeeper:Apache ZooKeeperhttps://zookeeper.apache.org/进入安装目录的 目录下,拷贝配置样本并进行修改:指定数据存储目录和日志文件目录(目录不用预先创建,程序会自动创建),修改后完整配置如下:配置参数说明:分别在三台主机的 目录下新建 文件,并写入对应的节点标识。Zookeeper 集群通过 文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出 Leader 节点。1、创建存原创 2022-10-08 11:43:02 · 759 阅读 · 0 评论 -
分布式系统的缓存设计
缓存就是数据交换的缓冲区。缓存的本质是一个内存 Hash。缓存是一种利用空间换时间的设计,其目标就是更快、更近:极大的提高性能。将数据写入/读取速度更快的存储(设备);将数据缓存到离应用最近的位置;将数据缓存到离用户最近的位置。缓存中的数据可能是提前计算好的结果、数据的副本等。典型的应用场景:有 cpu cache, 磁盘 cache 等。本文中提及到缓存主要是指互联网应用中所使用的缓存组件。缓存命中率是缓存的重要度量指标,命中率越高越好。缓存命中率 = 从缓存中读取次数 / 总读取次数。原创 2022-10-07 12:22:28 · 212 阅读 · 0 评论 -
服务网关与流量网关
传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的微服务数量很多时,它需要了解每个服务的接口,这个工作量很大。那有了网关之后,能够起到怎样的改善呢?但是 API 网关也存在不足之处,在微服务这种去中心化的架构中,网关又成了一个中心点或瓶颈点,它增加了一个我们必须开发、部署和维护的高可用组件。原创 2022-10-07 08:22:31 · 1522 阅读 · 0 评论 -
分库分表思考
什么是分库分表为什么需要分库分表如何分库分表?什么时候开始考虑分库分表分库分表会导致哪些问题分库分表中间件简介。原创 2022-10-01 10:37:37 · 181 阅读 · 0 评论 -
解决RabbitMQ脑裂问题
如果一个节点在一段时间内(默认是60秒)无法与对等端节点联系,则节点将认为其对等节点是否已关闭。如果两个节点重新接触,都认为另一个已关闭,则这些节点将确定已发生分区原因:集群脑裂。原创 2022-09-26 18:12:40 · 1606 阅读 · 0 评论 -
Maven常见的编译报错
Maven 编译SpringBoot程序出现错误:2022-09-21 06:38:52 UTC| Exception in thread "main" java.lang.AssertionError上传好第三方jar和jar相关pom文件到私有仓库。原创 2022-09-23 14:29:58 · 6939 阅读 · 1 评论 -
零拷贝技术
零拷贝如果简单用 Java 里面对象的概率来理解的话,其实就是使用的都是对象的引用,每个引用对象的地方对其改变就都能改变此对象,永远只存在一份对象。原创 2022-09-15 11:00:07 · 165 阅读 · 0 评论 -
实战RabbitMQ:消息丢失、消息重复 、消息积压
本篇主要讲了RabbitMQ的三种常见问题及解决方案,同时分享了一些作者本人工作中使用的心得,我想网上是很难找到的,如果哪一天用到了,不妨再打开看看,也许能避免一些生产环境可能出现的问题。我总结下来就是三点:1)、消息100%投递会增加运维成本,中小企业视情况使用,非必要不使用;2)、消息确认机制影响性能,非必要不使用;3)、消费者先保证消息能签收,业务处理失败可以人工补偿。工作中怕的永远不是一个技术不会使用,而是遇到问题不知道有什么解决思路。原创 2022-09-14 10:13:51 · 347 阅读 · 0 评论 -
常见负载均衡服务器介绍
当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。在实际应用中,在 Web 服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为 Web 服务器流量的入口,挑选最合适的一台 Web 服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。原创 2022-08-24 10:06:38 · 2966 阅读 · 0 评论 -
Docker Login私有仓库
Docker Login私有仓库原创 2022-08-19 10:22:22 · 3603 阅读 · 0 评论 -
Maven发布jar到Nexus
Maven发布jar到Nexus原创 2022-08-17 17:32:40 · 867 阅读 · 0 评论 -
Linux安装Redis
Linux安装Redis原创 2022-08-17 09:33:57 · 358 阅读 · 0 评论 -
Docker安装Nacos
Docker安装Nacos原创 2022-08-16 14:23:44 · 617 阅读 · 0 评论 -
携程Apollo配置中心架构剖析
Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Apollo目前在国内开发者社区比较热,在Github上有超过5k颗星,在国内众多互联网公司有落地案例,可以说Apollo是目前配置中心产品领域Number1的产品,其成熟度和企业级特性要远远强于SpringCloud体系中的SpringCloudConfig产品。...转载 2022-08-01 15:52:59 · 1793 阅读 · 0 评论 -
Docker安装Apollo
Docker安装Apollo。原创 2022-08-01 12:10:27 · 2798 阅读 · 0 评论 -
Kafka之集群架构原理
创建一个TopicA的主题,3个分区分别存储在不同的服务器,注意Topic是一个逻辑上的概念。原创 2022-07-30 23:30:20 · 724 阅读 · 0 评论 -
MQ实际场景解决方案参考
如果我们生产者每发一条消息,都要MQ持久化到磁盘中,然后再发起ack或nack的回调。这样的话是不是我们MQ的吞吐量很不高,因为每次都要把消息持久化到磁盘中。写入磁盘这个动作是很慢的,在高并发场景下是不能够接受的,吞吐量太低了。所以MQ持久化磁盘真实的实现,是通过异步调用处理的,他是有一定的机制,如:等到有几千条消息的时候,会一次性的刷盘到磁盘上面。而不是每来一条消息,就刷盘一次。(1)消息生产者把消息发送给MQ,如果接收成功,MQ会返回一个ack消息给生产者;(2)如果消息接收不成功,MQ会返回一个nac原创 2022-06-08 16:28:20 · 1736 阅读 · 1 评论 -
RocketMQ:一次完整的通信流程是怎样的?
Producer 与 NameServer集群中的其中一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Broker Master 建立长连接,且定时向 Broker 发送心跳。Producer 只能将消息发送到 Broker master;Consumer 则不一样,它同时和提供 Topic 服务的 Master 和 Slave建立长连接,既可以从 Broker Master 订阅消息,也可以从 Broker Slave 订阅消息。具体原创 2022-06-08 10:34:27 · 468 阅读 · 0 评论 -
RocketMQ消息领域模型
Message(消息)就是要传输的信息。一条消息必须有一个主题(Topic),主题可以看做是你的信件要邮寄的地址。一条消息也可以拥有一个可选的标签(Tag)和额处的键值对,它们可以用于设置一个业务 Key 并在 Broker 上查找此消息以便在开发期间查找问题。Topic(主题)可以看做消息的规类,它是消息的第一级类型。比如一个电商系统可以分为:交易消息、物流消息等,一条消息必须有一个 Topic 。Topic 与生产者和消费者的关系非常松散,一个 Topic 可以有0个、1个、多个生产者向其发送消息,一个原创 2022-06-07 17:08:05 · 286 阅读 · 0 评论