哈喽大家好啊,我是Hydra。在平常的工作中,OpenFeign作为微服务间的调用组件使用的非常普遍,接口配合注解的调用方式突出一个简便,让我们能无需关注内部细节就能实现服务间的接口调用。但是工作中用久了,发现Feign也有些使用起来麻烦的地方,下面先来看一个问题,再看看我们在工作中是如何解决,以达到简化Feign使用的目的。先看问题在一个项目开发的过程中,我们通常会区分开发环境、测试环境和生产环境,如果有的...
2023-08-25 16:02:38 225浏览 0点赞 0回复 0收藏
哈喽大家好啊,我是Hydra,今天来和大家聊聊服务的限流。服务限流,是指通过控制请求的速率或次数来达到保护服务的目的,在微服务中,我们通常会将它和熔断、降级搭配在一起使用,来避免瞬时的大量请求对系统造成负荷,来达到保护服务平稳运行的目的。下面就来看一看常见的6种限流方式,以及它们的实现与使用。固定窗口算法固定窗口算法通过在单位时间内维护一个计数器,能够限制在每个固定的时间段内请求通过的次数,以达到限...
2023-08-25 16:01:57 278浏览 0点赞 0回复 0收藏
哈喽大家好啊,我是Hydra。前两天,百度紧随GPT4发布了自己的语言模型文心一言。讲道理,对于国内能够发布这样一个敢于对标CHATGPT的高质量语言模型,大家应该更多感受到的是赛博朋克与现实生活贴近的真实感,对这个模型应该有着更多的鼓励或赞美。可不知是因为整个发布会搞的过于像没有好好准备的学生毕业答辩PPT,还是它的实际表现并没有那么如人意,大家貌似对文心一言并不那么买账。于是我决定看一下知乎大...
2023-08-25 15:58:45 238浏览 0点赞 0回复 0收藏
八股文背多了,相信大家都听说过一个词,SPI扩展。有的面试官就很喜欢问这个问题,SpringBoot的自动装配是如何实现的?基本上,你一说是基于spring的SPI扩展机制,再把spring.factories文件和EnableAutoConfiguration提一下,那么这个问题就答的八九不离十了。就像四五年前,我去面试的时候被问到这个问题,SPI动态扩展机制这几个词从嘴里一说出来,就把面试官唬的一愣一愣的。可能他们也没见过这么能装逼的...
2023-08-25 15:58:06 134浏览 0点赞 0回复 0收藏
哈喽大家好啊,我是Hydra。前几天我在网上冲浪的时候,看见有一个老铁在git上给我提了一个issue:万万没想到,有一天我写的烂代码居然也会被要求提到中央仓库…话再说回来,发布jar包到中央仓库这个事,也不是我不想,而是真的不会啊!不过既然铁子们都开口了,我这硬着头皮也得上不是?那么从网上翻翻文档,正式开搞。Sonatype首先第一步,我们需要在sonatype上注册账号并提交一个issue。sonatype这个名字,突然一说大家可能有...
2023-08-25 15:57:18 175浏览 0点赞 0回复 0收藏
哈喽大家好啊,我是Hydra。分布式系统共识算法Paxos相信大家都不陌生,它被称为最难理解的算法不是没有道理的,首先,它的发表之路就充满了坎坷。1990年,莱斯利·兰伯特大佬写了一篇论文,举了一个城邦选举的例子来介绍Paxos算法,然而大佬的幽默感并未得到审稿人的认可,论文未发表成功…1998年,兰伯特重新发表论文《ThePartTimeParliament》描述算法,然而众多学者并不买账,直呼看不懂…2001年,兰伯特对算法的描述进行简...
2023-08-21 16:12:41 176浏览 0点赞 0回复 0收藏
哈喽大家好啊,我是Hydra。虽然距离中秋放假还要熬过漫长的两天,不过也有个好消息,今天是《雷神4》上线Disney+流媒体的日子(也就是说我们稍后就可以网盘见了)了解北欧神话的小伙伴们应该知道,它的神话体系可以用一个字来形容,那就是『乱』!就像是雷神3中下面这张错综复杂的关系网,也只能算是其中的一支半节。而我们在上一篇文章中,介绍了关于知识图谱的一些基本理论知识,俗话说的好,光说不练假把式,今天我们就来看...
2023-08-21 16:12:00 179浏览 0点赞 0回复 0收藏
哈喽大家好啊,我是Hydra。前一段时间,boss交给我个任务,让我调研一下知识图谱技术。虽说有点NLP的底子,不过研究起这个来还是满头的包,终于还是在搜集了不少资料后划拉出来50多页的PPT,那么今天就浅浅的给大家分享一下知识图谱的相关知识。概述诞生知识图谱的概念诞生于2012年,由谷歌公司首先提出。大家都知道,谷歌是做搜索引擎的,所以他们最早提出了GoogleKnowledgeGraph后,首先利用知识图谱技术改善了搜索引...
2023-08-21 16:10:53 368浏览 0点赞 0回复 0收藏
1、背景Pulsar在2018年9月正式毕业成为Apache顶级开源项目,消息中间件领域迎来了有一位顶级玩家。最近我们领导发现我司消息中间件相关服务器资源的利用率并不是太高,特别是CPU、内存的使用率较低。我在思考如何有效治理的时候,也想着从市面上开源优秀的消息中间件吸收养分,故将目光锁定在了ApachePulsar。我们先来看一下百度百科上关于AapchePulsar的描述:ApachePulsar是Apache软件基金会顶级项目,是下一代云原生分布式消...
2023-06-08 11:43:50 561浏览 0点赞 0回复 0收藏
得益于纠删码算法,分布式MinIO集群为多个驱动器或节点故障提供内置容错能力。根据选择的EC:N值,MinIO集群可以容忍多达一半的驱动器或节点丢失并任然提供可写可读服务。下表列出了MinIO部署中的典型故障类型,以及从每种故障中恢复的过程。故障类型说明DriveFailure(驱动器故障)MinIO支持热插拔的方式替换故障的驱动器NodeFailure(节点故障)当新的节点重新加入到集群后,MinIO会重新开始修复该节点,原先存储在该机器上的...
2023-06-08 11:40:58 1026浏览 0点赞 0回复 0收藏
硬件投入肯定是随着业务的增长而增长,这就要求中间件平台必须提供水平伸缩机制,MinIO对象存储服务也不例外,本文就详细介绍MinIO的扩容。Minio支持通过增加新的ServerPool来扩容老的集群。每个ServerPool都是一个相对独立的故障域,一个ServerPool丢失一个或多个驱动器或节点不会影响其他ServerPool的可用性。1.1扩容前的先决条件1.1.1网络与防火墙集群内各个节点之间网络必须是互通的,特别是要注意防火墙规则或者容器环境下...
2023-06-08 11:39:04 890浏览 0点赞 0回复 0收藏
1、MinIO集群拓扑结构MinIO可以部署到三种类型的拓扑:SingleNodeSingleDrive一个Server节点,并且一个磁盘驱动器或者一个文件夹。例如,在本地PC上使用计算机硬盘驱动器上的文件夹进行测试。SingleNodeMultiDrive单Server节点,多磁盘驱动器或多个文件夹。MultiNodeMultiDrive多Server节点,多磁盘驱动器或多个文件夹。2、分布式MinIO如何工作2.1MinIO如何管理多个虚拟机或物理节点ServerPool由多个Minio服务节点与其附属的多...
2023-06-08 11:37:58 749浏览 0点赞 0回复 0收藏
由于最近刚接手对象存储相关系统的建设与稳定性运维,作为一个“对象存储”的一名菜鸟,需要加强这块的学习。由于公司目前采用MinIO来搭建公司的对象存储体系,后续我会陆续将自己关于MinIO的学习经验分享出来,欢迎大家持续关注。本文主要是介绍如何在测试环境中搭建MinIO,这也是构建MinIO学习环境最基本的步骤。1、准备实验环境使用OracleVMVirtualBox虚拟机,安装一个最小版本的Linux,然后添加4块虚拟盘,用于充当MinIO的...
2023-06-08 11:37:19 1253浏览 0点赞 0回复 0收藏
1、主题(Topics)Pulsar中主题类似一个URL,格式如下所示:{persistentnonpersistent}:tenantnamespacetopic主题的每一个部分说明如下:persistentnonpersistent表示持久化或非持久化tenant表示租户namespace表示命名空间topic主题的名称在Pulsar中你不需要显示的创建主题,如果当客户端向一个不存在的主题发送消息或订阅消息时,Pulsar会自动创建主题。1.1命名空间(Namespaces)命名空间是一个租户下的逻辑概念,命名空间可...
2023-06-07 16:02:37 1542浏览 0点赞 0回复 0收藏
Pulsar基于发布订阅模式,消息发送者向主题发送消息,而消费消费者订阅主题,消息从PulsarBroker中获取消息,处理成功后需要向Pulsar发送ACK,表示消息处理成功。与RocketMQKafka不同的是,Pulsar只有当消费者确认消息都成功被处理后才能去删除消息。如果Consumer在处理一批消息失败后,可以再次请求Broker重新下发该批消息,以便进行重试。2、消息(Messages)消息(Message)是Pulsar中最基本的抽象单位,一条Pulsar消息中的属性...
2023-06-07 15:57:20 2302浏览 0点赞 0回复 0收藏
1、什么是javaagentJavaAgent又叫做Java探针,是在JDK1.5引入的一种可以动态修改Java字节码的技术,是依附于java应用程序(JVM)InstrumentationAPI与虚拟机交互。Java类编译之后形成字节码被JVM执行,在JVM在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能底层的具体由JVMTI机制实现。JVMtoolinterface(JVMTI)是供工具使用的本机编程接口。它提供了一种检查状态和...
2023-06-07 15:56:07 1973浏览 0点赞 0回复 0收藏
1、方案设计基本原则:不接入外部存储,基于kafka原生ACL认证环境:kafka2.2.1、zookeeper3.6.3kafka给我们提供了SASLSCRAM模式,将SASL、ACL规则信息存储到zookeeper中,并且通过KafkaClientAdminApi可新增、编辑、删除ACL规则,其特性如下应用发送、消费实现动态身份认证和授权基于kafkaSASLSCRAM模式,客户端会在建立连接进行SASL身份验证,在消费发送时,进行ACL鉴权安全认证代码无侵入性、兼容原生kafkaapi有两种配置方式...
2023-06-07 15:55:27 886浏览 0点赞 0回复 0收藏
随着业务的高速发展,消息中间件几乎涵盖了全司所有链路,如何打造安全可靠、性能达标的消息中间件成为了一个非常紧迫并具有较大的挑战性。作为我们公司消息中间件第一责任人,这个任务自然而然的落到了我的身上。接到这个任务,其实我一点都不慌,因为我知道RocketMQ在4.4.0版本就开始引入了ACL机制,于是我一顿操作猛如虎,马上就提出了基于官方ACL的设计理念,再结合公司独有的账号授权体系,提出了一版本ACL设计方案,马上...
2023-06-07 15:54:27 1010浏览 0点赞 0回复 0收藏
1、背景最近一周一来,总是有项目组中反馈遇到了消息重复推送的问题,连续出现单条消息短时被多个消费者消费的问题:同时给出了证据,相同的msgId的消息被打印了两条,并且两者相隔7s。讲真,由于最近负责的事情比较多,并且RocketMQ又无法保证消息被重复消费,所以一开始并未引起我的充分重视,而是简单的阐述了RocketMQ的设计原理不保证重复消费,需要消费端实现幂等。但就是这个疏忽,后面集中爆发,整个集群中消费组消费绝...
2023-06-07 15:53:32 426浏览 0点赞 0回复 0收藏
上一篇我们详细分析了源码分析RocketMQ多副本之Leader选主,本文将详细分析日志复制的实现。有了前篇源码分析RocketMQDLedger多副本存储实现,本文将直接从Leader处理客户端请求入口开始,其入口为:DLedgerServer的handleAppend方法开始讲起。1、日志复制基本流程在正式分析RocketMQDLedger多副本复制之前,我们首先来了解客户端发送日志的请求协议字段,其类图如下所示:我们先一一介绍各个字段的含义:Strin...
2023-06-07 15:52:39 507浏览 0点赞 0回复 0收藏