这么流行的ZooKeeper,原来是这样设计的!
为什么会有ZooKeeper 我们知道要写一个分布式应用是非常困难的,主要原因就是局部故障。一个消息通过网络在两个节点之间传递时,网络如果发生故障,发送方并不知道接收方是否接收到了这个消息。有可能是收
Kafka的生产者优秀架构设计
前言 Kafka 是一个高吞吐量的分布式的发布订阅消息系统,在全世界都很流行,在大数据项目里面使用尤其频繁。笔者看过多个大数据开源产品的源码,感觉 Kafka 的源码是其中质量比较上乘的一个,这得益于
微服务注册中心的选型和思考
概述 在微服务时代,注册中心越来越被重视。服务治理逐渐跟业务服务并驾齐驱。所以本文想对注册中心进行体系化探索。注册中心,起源于分布式时代。不管是水平拆分架构,或者垂直拆分架构,对于多服务、多实例的支持
微服务架构中分布式事务实现方案如何取舍
提起微服务架构,不可避免的两个话题就是服务治理和分布式事务。数据库和业务模块的垂直拆分为我们带来了系统性能、稳定性和开发效率的提升的同时也引入了一些更复杂的问题,例如在数据一致性问题上,我们不再能够依
如此火爆的ZooKeeper,到底如何选主?
前言 前面一篇文章我们已经给大家讲解了ZooKeeper的核心的原理,这一篇我们重点分析ZooKeeper的Leader选举算法。Leader的选举是ZooKeeper的最重要技术之一,也是保证分布式
微服务架构何去何从?
前言微服务架构模式经过5年多的发展,在各行各业如火如荼地应用和实践。如何在企业中优雅地设计微服务架构?是企业面对的一个重要问题。本文将讲述微服务架构1.0设计与实践以及面临问题和破局,最后讲述微服务架
世界最优秀的分布式文件系统架构演进之路
前言 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系
国内酒店:通过架构改进,我们计划优化掉300+台服务器
背景 线上问题回顾2019年8月某天,那时我刚入职还不到一个月,遇到一个特殊的线上问题:某报价应用个别机器连续FGC不停(准确的说是FGC几乎没任何效果),这些机器重启后不久继续开始不停的FGC。当时
年纪轻轻,为什么要搞中间件开发?“路怎么走,让你们自己挑”
作者:小傅哥博客:[https://bugstack.cn](https://bugstack.cn)沉淀、分享、成长,让自己和他人都能有所收获!😄 一、前言`年纪轻轻,为什么要搞中间件开发?`五年
笔记整理:技术架构涵盖内容和演变过程总结
前言架构,说的是开发用的框架吗?对于刚接触编程的新人来说,可能并不能很清楚的知道架构是怎么来的,都包括什么内容。如果非得说什么架构,那么可能就是目前在 IDEA 中打开的工程就是架构。抛开技术圈内的架
微服务1:微服务及其演进史
0 微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 1 传统单体系统介绍在很多项目的业务初期阶段,高速迭代上线是首要考虑的事情,对后期的容量预估、可扩展性和系统健壮性、高可用一般没有那么重视。但随着业务的发展,用户量、请求量的暴增,发现原来的单体系统已经远远不
微服务2:微服务全景架构
微服务架构中的 每个节点高度服务化,都是具有业务逻辑的, 符合高内聚、低耦合原则以及单一职责原则的单元,包括数据库和数据模型; 不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。
架构与思维:高并发下幂等性解决方案
幂等函数(幂等方法),是指使用相同的参数结构重复执行,产生相同的结果的函数,重复执行幂等函数不会影响系统的状态或者造成改变。
【全网首发】Spring DeferredResult 是个什么玩意?
大家好,我是yes。今天我们就来盘一下 Spring DeferredResult,这玩意使用起来是很简单的,回答的话可深可浅。浅一点就是直接回答它的作用,深一点的话就是原理了,而这个原理其实还需要涉及到 tomcat (默认 tomcat 为 web 容器)。我们先来看下 DeferredR
如何监控 Log4j2 异步日志遇到写入瓶颈
在之前的一篇文章中(一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位),我们详细分析了一个经典的 Log4j2 异步日志阻塞问题的定位,主要原因还是日志文件写入慢了。并且比较深入的分析了 Log4j2 异步日志的原理,最后给出了一些解决方案。
借助SpotBugs将程序错误扼杀在摇篮中
推荐一个静态扫描工具SpotBugs,让你提前发现bug,下班没烦恼
【译】比较低延迟消息队列中的持久性方法
Chronicle Queue Enterprise 的一个重要特性是支持跨多个服务器的 TCP 复制,以确保应用程序基础架构的高可用性。
【全网首发】架构与思维:互联网高性能Web架构
1 什么是高性能Web架构在互联网业务中,我们经常会面临流量巨大的复杂的分布式场景。这就要求我们在设计系统的时候保证系统具有承载高并发(High Concurrency)的能力,同时能够保证系统的高可用性(High Availability)。所以,具备高性能Web架构通常是指,通过稳健的系统
线上排查性能问题,这些命令你一定用得到!
收藏过去排查性能问题的一些常用命令,这些场景,你遇到过么?
一文读懂直播卡顿优化那些事儿
整体看直播卡顿这件事,从问题起因到解决思路。
架构与思维:分布式锁方案分析
前面的文章我们介绍了分布式系统和它的CAP原理:一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。参考这篇《分布式事务》 我们知道,一个分布式系统无法同时满足三个特性,所以在设计系统之初,就有一个特性要被妥协和牺牲,因为分区
微服务9:服务治理来保证高可用
★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用1 微服务带来的挑战在第2篇《微服务
【译】设计分布式系统时,我们容易忽视的8个经典错误假设
你在做分布式系统吗?微服务、Web API、SOA、Web服务、服务器、数据库、缓存、负载均衡——是不是把这些组合到一起就行了呢?当然不是,分布式系统不仅仅要组合在一起,更重要的是它们之间如何高效的合作。20 多年前,Peter Deutsch 和 James Gosli
微服务7:通信之RPC
★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC1 什么是RPC通信RPC:Remote Procedure Call Prot
【升职加薪秘籍】我在服务监控方面的实践(1)-监控蓝图
如何对线上服务进行监控,内容涉及到的指标设计,软件配置,监控方案等等你都可以拿来直接复刻到你的项目里,这是一套非常适合中小企业的监控体系
微服务8:通信之RPC实践篇(附源码)
★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)1 说明上一节我们我们详细学习了RPC的概念和原理,以及它能够提供
从RabbitMQ平滑迁移至Kafka架构设计方案
历史原因,公司存在多个 MQ 同时使用的问题,我们中间件团队在去年下半年开始支持对 Kafka 和 Rabbit 能力的进行封装,初步能够完全支撑业务团队使用。
来这公司一年碰到的问题比我过去10年都多
无意间发现我们 Kafka 管理平台的服务的 open files 和 CPU 监控异常,如下图,有一台机器 CPU 和 opfen files 指标持续在高位,尤其是 open files 达到了4w+。原因分析第一反应是这个服务请求很高?但是这个服务是一个管理服务不应该有很高的请求量才对
基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程
在构建业务系统的时候,经常会涉及到对附件的支持,继而又会引申出对附件在线预览、在线编辑、多人协同编辑等种种能力的诉求。
微服务6:通信之网关 Ready
★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关1 概述回顾下前面几篇关于微服务的介绍,我们可以了解到从当单体系统到微服务,再到服务网格的演进过程。那单体
【译】Maven 实现高可用性 (HA) 的 7 个小技巧
每家公司都喜欢 HA,仅仅是因为它使他们的服务在任何给定时间都可用且更可靠。以下是实现 HA 的七个技巧。
可观测性:如何使用 OpenTelemetry进行端到端的追踪
追踪是可观察性的支柱之一,本文简单介绍了使用 OpenTelemetry进行全局追踪的逻辑。
【译】一篇简单介绍负载均衡器的原理,类型和选择逻辑
了解负载均衡器是如何开始使用的,以及不同类型的负载均衡器如何帮助应用程序处理大容量流量以获得最佳性能。
如何调用一个只支持batch_call的服务?
 我们先来说下标题是什么意思。 为了更好的理解我说的是啥,我们来举个例子。假设你现在在做一个类似B站的系统,里面放了各种视频。用户每天在里头上传各种视频。按理说每个视频都要去审查一下有没有搞颜色,但总不能人眼挨个看吧。毕竟唐老哥表示这玩意看多了,看太阳都是绿色
架构演变之路:为何要搞微服务架构?
为什么我们要搞微服务架构,一个项目把代码从头撸到尾不是很方便吗,开发更快速,部署也容易。而且一提起微服务,涉及的技术就一大堆,好像几辈子也学不完。
Map传参优雅检验,试试json schema validator
Map一撸到底的传参方式,如何优雅的检验参数,试试json schema validator
架构杂谈—互联网系统架构演进
随着业务的发展,对系统的处理能力、高可用性也就提出了越来越高的要求,在单节点的基础上,集群架构应运而生
真理大讨论:Service层的接口是不是多此一举?
分歧出现的背景这是谁的问题?代码架构的问题?有什么问题?解决问题的思路是什么?总结背景这个问题要从业界鼎鼎大名的三层架构说起: 表示层、业务逻辑层、数据访问层。似乎从一开始接触写代码,好像就有一个不成文的规定,Service 层往往要写一个 
【全网首发】抛砖系列之k8s HorizontalPodAutoscaler(HPA)
“高可用、高并发、大流量”这些曾经似乎只会出现在互联网业务中的高大上词汇,现在已然是随处可见,不管真实业务场景会不会出现,对外宣称时都会标榜这类特性,要支持这类特性有一个极其基础的能力是必须具备的,那就是扩容,而扩容一般又分为垂直扩容和水平扩容,最为广泛的属水平扩容。
【全网首发】微服务13:云基础场景下流量策略实现原理
★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用微服务10:系统服务熔断
编写自定义SpringData Repository的最佳方式是什么?
在本文中,我将向你展示编写自定义 Spring Data Repository 的最佳方法。虽然默认JpaRepository方法以及查询方法在许多情况下都非常方便,但有时你可能需要可以利用任何 JPA 提供程序特定功能的自定义 Repository 方法。
用 Seata 搞定分布式事务的规范化建设-赋能产研|提质增效
一、背景随着微服务架构的演进,单体应用按照服务维度进行拆分,组织架构也随之演进以横向、纵向维度拆分;导致了原来调用一个服务的一个接口就完成的功能,现在需要协同调用多个服务的多个接口才能完成。原来在一个库中就完成的功能,现在可能要涉及多个库的多张表,通常还会有多种存储介质一起协作以支撑数
Istio升级后踩的坑
前段时间我们将 istio 版本升级到 1.12 后导致现有的应用监控有部分数据丢失(页面上显示不出来)。
抢了个票,还以为发现了12306的系统BUG
很多人不想多关注业务场景,觉得和技术关系不大,但是,Coder的技术之路却认为:任何技术的落地和实现,都需要依托于真实的业务场景,只有更深入的理解了业务逻辑,才能更好的构建更加合理、稳定、可持续的技术架构。
微服务17:微服务治理之异常驱逐
★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用微服务10:系统服务熔断
微服务18:微服务治理之异地多活容灾
★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用微服务10:系统服务熔断

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

本系列文章主要针对Dubbo2.6.2(dubbox2.8.4)版本,从源码的角度分析Dubbo内部的实现细节,加深对Dubbo的各配置参数底层实现原理的理解,更好的指导Dubbo实践。
11篇文章14468阅读量
GC(Garbage Collection)很大程度上帮助Java程序员解决了内存释放的问题,有了GC,就不需要再手动的去控制内存的释放。
12篇文章30275阅读量