命名待定
文章平均质量分 88
zero__007
这个作者很懒,什么都没留下…
展开
-
干货 | 1分钟售票8万张!门票抢票背后的技术思考
商品上线的时候将库存写入Redis,在活动扣减库存时,使用incrby原子扣减成功后将扣减消息MQ发出,在Consumer端消费消息执行DB扣减库存,若下单失败,执行还库存操作,也是先操作Redis,再发MQ,在Consumer端,执行DB还库存,如果未查询到扣减记录(可能扣库存MQ有延迟),则延时重试,并通过埋点与监控检测核心指标是否有异常。例如:商品描述信息,以前缓存过期时间为5min,现在缓存过期时间为24H,被动刷新时间为1min,用户每次请求都返回上一次的缓存,但每1min都会异步构建一次缓存。转载 2024-05-13 16:09:07 · 54 阅读 · 0 评论 -
一文教会你如何写复杂业务代码
转载自:https://blog.csdn.net/zhousenshan/article/details/119084197。转载 2023-04-04 20:14:31 · 237 阅读 · 0 评论 -
负载均衡-
常见的负载均衡系统包括 3 种:DNS 负载均衡、硬件负载均衡和软件负载均衡。原创 2023-02-01 10:05:19 · 517 阅读 · 0 评论 -
API接口设计要考虑的点
一个项目内的所有接口,必须有统一的风格,统一返回格式,约定业务层错误编码,每个编码可以携带明确的错误信息。出入参字段含义明确,采用统一的命名规范,如驼峰命名等。返回格式统一采用json格式。{"error_message": "未获取到用户信息","data":}status标识接口是否逻辑处理成功;error_code为不同类型错误信息对应的唯一错误码,error_message为错误信息的简要描述信息(注意某些数据或者信息是否可直接展示给用户),data则为需要返回给调用方的数据信息。转载 2022-10-21 22:00:00 · 390 阅读 · 0 评论 -
交易中台系统设计与思考
转载自:https://blog.csdn.net/zhousenshan/article/details/109690375?spm=1001.2014.3001.5502系统架构在这里,主要想说的是服务接入层,在我们目前的系统架构中并没有服务接入层。但是在我日后的反思中,觉得服务接入层的存在还是很有必要的。服务接入层的作用防腐层作用。因为业务中台要服务于企业内多条业务线,日常开发中应对不同的业务需求,我们常常在底层服务中的添加许多转换、判读逻辑,而引入了服务接入层我们可以把这些代码放到服务接转载 2022-04-18 20:02:19 · 478 阅读 · 0 评论 -
java流程引擎实现_手写实现一套流程编排
转载自:https://blog.csdn.net/weixin_39631301/article/details/112082970流程编排随着业务的不断发展,业务流程迭代慢慢变得复杂了起来,全景不清晰,这不仅仅会使开发人员编写代码弄的’ 不敢改 '心理,以及出现问题不好寻找出错位置,历史包袱太重,影响面需要评估,等等。一个本来很简单的需求,但是由于很多历史背景和包袱导致侵入代码需要评估改动影响面很大,这时候就需要一套流程编排来使得流程清晰,能全局感受到业务的能力地图。减少开发、测试等的维护迭代成本转载 2022-03-09 18:05:57 · 2332 阅读 · 0 评论 -
分布式服务框架和原理简章
转载自:https://www.toutiao.com/a6573610696825635336/?log_from=ff720c65a6954_1642770703125应用架构演进这里的架构演进应该是从服务化的角度来说,应该说随着业务发展,应用规模扩大,系统的一些公共服务就会抽取出来,独立开发,部署,维护,用来解决并发,扩展,维护的问题。传统垂直架构有的地方也叫单体应用,以mvc模式开发:所有应用代码统一打包,代码所有接口本地api调用,很少存在远程服务调用;单机或主备,应用做集群部署;转载 2022-01-21 21:14:00 · 358 阅读 · 0 评论 -
微服务的4个设计原则和19个解决方案
转载自:https://www.toutiao.com/a6755819647863390728/?log_from=393c21fb5a7b8_1642769673160微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。本文将介绍微服务架构的演进、优缺点和微服务应用的设计原则,然后着重介绍作为一个“微服务应用平台”需要提供哪些能力、解决哪些问题才能更好的支撑企业应用架构。微服务平台也是我目前正在参与的,转载 2022-01-21 20:57:25 · 732 阅读 · 0 评论 -
初探InnoDB存储引擎的架构设计
转载自:https://www.toutiao.com/a6954629177517916708/?log_from=f8438e0bf8069_1642768601083前言InnoDB组件结构:buffer pool : 缓冲池,缓存磁盘的数据redo log buffer :记录对缓冲池的操作,根据策略写入磁盘防止宕机但事务已经提交而丢失数据undo log :当对缓冲池的数据进行修改时,在事务未提交的时候都可以进行回滚,将旧值写入 undo 日志文件便于回滚,此时缓冲池的数据与磁盘中的不转载 2022-01-21 20:38:30 · 202 阅读 · 0 评论 -
async-profiler
简介async-profiler是一款采集分析java性能的工具,翻译一下github上的项目介绍:❝async-profiler是一款没有Safepoint bias problem的低开销java采集分析器,它利用HotSpot特殊的api来收集栈信息以及内存分配信息,可以在OpenJDK,Oracle JDK以及一些其他的基于HotSpot的java虚拟机。async-profiler可以追踪以下几种事件:cpu周期硬件和软件性能计数器,例如高速缓存未命中,分支未命中,页面错误,上下文切转载 2021-12-22 21:50:14 · 1460 阅读 · 0 评论 -
殷浩详解DDD:如何避免写流水账代码?
转载自:https://www.zhihu.com/question/455972270在日常工作中我观察到,面对老系统重构和迁移场景,有大量代码属于流水账代码,通常能看到开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差。所以本文主要想系统性的解释一下如何通过DDD的重构,将原有的流水账代码改造为逻辑清晰、职责分明的模块。一 案例简介这里举一个简单的常见案例:下单链路。假设我们在做一个checkout接口,需要做各种校验、查询商品信息转载 2021-12-15 22:11:32 · 284 阅读 · 0 评论 -
ApachePulsar工作原理
转载自:https://www.toutiao.com/a6819690895147794955/?log_from=98fa99ab22ece_1639110386346设计核心保证不丢失消息(使用正确的配置且不是整个数据中心故障)强顺序性保证可预测的读写延迟Apache Pulsar选择一致性而不是可用性就像BookKeeper和Zookeeper一样。Apache Pulsar尽一切努力保持一致性。这篇文章中不会介绍跨机房复制相关的内容,我们只关注一个集群。多层抽象Apache P转载 2021-12-10 12:28:55 · 348 阅读 · 0 评论 -
微服务架构下如何解耦,对于已经紧耦合下如何重构?
转载自:https://www.toutiao.com/a6851016633579028996/?log_from=2ada7d3e5cc9b_1639109959710在谈微服务架构下各个微服务间如何解耦,以及对于已经紧耦合的微服务如何进行重构的这个内容前,可以先看下我前两天发布的微服务模块和粒度如何划分才更加合理的一篇文章,这篇文章对于微服务拆分有比较详细的描述。可以参考:中台规划中微服务粒度究竟应该如何划分?你可以从以下几点考虑要明白实际上微服务后续出现的诸多问题往往都是一开始微服务模块划分就转载 2021-12-10 12:26:07 · 690 阅读 · 0 评论 -
Doris 与 ClickHouse 的深度对比及选型建议
转载自:https://www.toutiao.com/a7033959264775373350/?log_from=0f7d2aa4d19d4_1638796127817一、背景介绍Apache Doris是由百度贡献的开源MPP分析型数据库产品,亚秒级查询响应时间,支持实时数据分析;分布式架构简洁,易于运维,可以支持10PB以上的超大数据集;可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。ClickHouse是俄罗斯的搜索公司Yandex开源的MPP架构转载 2021-12-06 21:16:30 · 10903 阅读 · 0 评论 -
项目中的单点登录是如何实现的?
转载自:https://www.toutiao.com/a6675862170124681736/?log_from=7cbea8c5cceec_1637142669659一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系。但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某转载 2021-11-17 17:57:09 · 253 阅读 · 0 评论 -
从码农到技术总监,如何提升自我修养?
转载自:https://www.toutiao.com/a6729366659338863117/?log_from=0e0c415fa603_1637142172705在 IT 领域摸爬滚打多年,从一个普通程序员到技术主管,到技术经理,再到技术总监,踩过不少坑、加过不少班,也背过不少锅。在提升自身技术能力与管理能力的同时,我也一直在思考,作为 IT 技术管理者,如何做才能让我们在这个领域里发展得更好?在年龄渐长时能从容应对所谓的“中年危机”,或者说 IT 技术管理者的自我修养,应从哪些方面去努力?转载 2021-11-17 17:45:55 · 328 阅读 · 0 评论 -
优化大分页查询
转载自:https://www.toutiao.com/a6807330114724954628/?log_from=3eb198e0ffa0a_1636197506477背景系统结构如上图。经过排查是因为**系统B拉取数据时间太长导致的推送超时。**系统B拉取数据的方法是根据_tiemstamp(数据操作时间)分页查询系统A的接口,即:1SELECT 字段名2FROM 表名3WHERE _timestamp >= beginTime AND _timestamp <= endTime转载 2021-11-06 21:16:27 · 239 阅读 · 0 评论 -
TCP 三次握手原理,你真的理解吗?
转载自:https://www.toutiao.com/a6579774280395915789/?log_from=caff21323edbc_1635768699223最近,阿里中间件小哥哥蛰剑碰到一个问题——client端连接服务器总是抛异常。在反复定位分析、并查阅各种资料文章搞懂后,他发现没有文章把这两个队列以及怎么观察他们的指标说清楚。因此,蛰剑写下这篇文章,希望借此能把这个问题说清楚。欢迎大家一起交流探讨。问题描述场景:JAVA的client和server,使用socket通信。s转载 2021-11-01 20:13:15 · 202 阅读 · 0 评论 -
严选库存中心性能优化
转载自:https://www.toutiao.com/a6827446608288809485/?log_from=731baeefc9113_1635694245196性能是技术同学时常关注的问题,但在不同的业务模式下、业务板块中开展的优化手段又不尽相同。本文主要介绍基于严选现有业务模式,在未显著降低数据一致性的情况下如何进行库存的性能优化以满足大促活动的要求。背景介绍库存中心服务曾经在2018大促容量评估时遇到性能瓶颈,虽然通过一系列优化降级措施挺过了2018年大促,但仍然担忧在下一年的大促到来转载 2021-10-31 23:38:24 · 415 阅读 · 0 评论 -
直击案发现场!TCP 10倍延迟的真相是?
转载自:https://www.toutiao.com/a6754194957516407300/?log_from=991210e3ef8c7_1635342484514前言本文希望解析清楚,当我们在代码中写下 socket.setSendBufferSize 和 sysctl 看到的rmem/wmem系统参数以及最终我们在TCP常常谈到的接收发送窗口的关系,以及他们怎样影响TCP传输的性能。先明确一下:文章标题中所说的Buffer指的是sysctl中的 rmem或者wmem,如果是代码中指定的话对转载 2021-10-27 21:52:56 · 273 阅读 · 0 评论 -
详解分布式 ID 生成器
转载自:https://www.toutiao.com/a6750166250787176967/?log_from=a473be4f63f8b_1635341801902在高并发或者分表分库情况下怎么保证数据id的幂等性呢SnowFlake 算法的优点SnowFlake 算法的缺点算法代码如下引入hutool依赖ID 生成器测试类在高并发或者分表分库情况下怎么保证数据id的幂等性呢经常用到的解决方案有以下几种。微软公司通用唯一识别码(UUID) Twitter公司雪花算法(Sn转载 2021-10-27 21:42:53 · 946 阅读 · 0 评论 -
Mybatis动态代理实现全过程
转载自:https://www.toutiao.com/a7005787713546813984/?log_from=b92b922cc321e_1635168191815一、代理工厂类生成的过程步骤1在启动类上加上注解MapperScanCopy Line-numbers language-java@SpringBootApplication@MapperScan(basePackages = "com.example.springdatasourcedruid.dal")public cl转载 2021-10-25 21:24:30 · 1131 阅读 · 0 评论 -
服务编排-前端应用和后端服务能力间关键衔接
转载自:https://www.toutiao.com/a6922250238791090691/?log_from=ce077552cde8e_1635167920723首先提出一个重要观点,即在当前微服务架构转型中,服务编排将成为一个大的技术发展趋势,其主要原因展开描述如下:当前在微服务架构,包括中台思想实施过程中有两个重点,其一是共性业务能力下沉并统一以API接口服务能力对上层应用提供;其二是底层共性能力构建微服务化构建。在整个过程中基于上层应用构建场景出现另外一个关键点,即上层应用可能需要的是转载 2021-10-25 21:21:18 · 3972 阅读 · 1 评论 -
vivo全球商城-营销价格监控方案的探索
转载自:https://mp.weixin.qq.com/s/HkceN44HkkeJQqKHSitWLA一、背景现在日常官网商城的运营中有一定概率出现以下两个问题:1)优惠信息未对齐官网商城促销优惠的类型越来越多,能影响最终用户实付价的优惠就有抢购、满减、优惠券、代金券等。实际业务操作中存在不同促销优惠由不同运营配置的情况,如果运营间内部没有对齐的情况下,就会出现正常情况下不会同时设置的优惠被用户叠加享受,出现最终实付价低于成本价的可能。2)优惠价格配错在日常或大促优惠配置中,存在一定的概率会转载 2021-10-14 13:51:57 · 162 阅读 · 0 评论 -
提效降本——多泳道的实践
转载自:https://www.toutiao.com/a6987385555244007949/?log_from=0a156f8f04775_1633015210230一、背景优鲜非常重视测试环境治理,提高开发和测试人员的使用效率。从 2018 年就开始了测试环境治理之路,也有幸的见证了其中几个阶段,最早期,2018 年初测试环境当时几台虚机,把需要测试的服务部署上去,经常发生抢占问题,刚部署服务分支又被别人覆盖,测试完流程才发现代码部署不正确,造成效率非常低下;2018 年年中开始对测试环境进行治转载 2021-09-30 23:21:51 · 3606 阅读 · 1 评论 -
从Elasticsearch来看分布式系统架构设计
转载自:https://www.toutiao.com/a7009160532972323332/?log_from=f43eefd7b16d_1633014873883分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据系统的设计,比如分布式存储系统,分布式搜索系统,分布式分析系统等。我们先来简单看下Elasticsearch的架构。Elasticsearch 集群架构Elasticsearch是一个非常著名的开源搜索和分析转载 2021-09-30 23:15:43 · 84 阅读 · 0 评论 -
如何全面提升架构设计质量
转载自:https://www.toutiao.com/a7009557437481173536/?log_from=878cc1d39454d_1633014755713低成本复杂度本质:低成本本质上是对高可用、高性能和可扩展的约束。低成本的主要应用场景:1.互联网超大集群服务器数量上了1000台后,考虑低成本方案。每台服务器每年综合成本大概2w多2.ToB业务节省的成本就是利润其它业务不考虑低成本设计:加机器是综合成本最低的架构设计方式。宁花机器1分,不花技术人员1秒。unix转载 2021-09-30 23:14:05 · 340 阅读 · 0 评论 -
从RocketMQ的设计看分布式套路
转载自:https://www.toutiao.com/a6835827132212445709/?log_from=90178c0a332fb_1633014549693简述消息中间件作为分布式系统的重要成员,各大公司及开源均有许多解决方案。目前主流的开源解决方案包括RabbitMQ、RocketMQ、Kafka、ActiveMQ等。消息这个东西说简单也简单,说难也难。简单之处在于好用方便,接入简单使用简单,异步操作能够解耦系统间的依赖,同时失败后也能够追溯重试。难的地方在于,设计一套可以支撑业务的消转载 2021-09-30 23:10:25 · 143 阅读 · 0 评论 -
聊聊消息中间件的关键特性和问题总结
转载自:https://www.toutiao.com/a6898209756142551556/?log_from=6635a73ec5c61_1633014235206今天闲聊下消息中间件的一些关键特性,对于消息中间件基础知识,包括各种开源消息中间件的比较选型文章,网上已经有很多,在这里就不再重复进行描述。因此这篇文章仅仅选择一些消息中间件的一些关键特性和实践中常遇到的问题进行总结。同时兼顾消息发布订阅和队列点对点队列模式消息模式发布订阅模型Topic消息模型消息中间件有一个关键能力,即转载 2021-09-30 23:08:21 · 490 阅读 · 0 评论 -
从线上偶发的宕机事件看Netty流量控制
转载自:https://www.toutiao.com/a7010951333377376799/?log_from=4b7da8806f18c_1633014227536业务背景目前移动端的使用场景中会用到大量的消息推送,push消息可以帮助运营人员更高效地实现运营目标(比如给用户推送营销活动或者提醒APP新功能)。对于推送系统来说需要具备以下两个特性:消息秒级送到用户,无延时,支持每秒百万推送,单机百万长连接。支持通知、文本、自定义消息透传等展现形式。正是由于以上原因,对于系统的开发和维护带转载 2021-09-30 23:06:28 · 151 阅读 · 0 评论 -
IDEA2021关闭Field injection is not recommended提示
打开Editor–>Inspections–>Spring–>Code–>Non recommended ‘field’ injections,去掉右边的小勾勾,Apply–>OK即可。原创 2021-09-15 11:29:53 · 850 阅读 · 0 评论 -
高并发:流量削峰 与 服务端优化
转载自:https://www.toutiao.com/a7000594689728643595/?log_from=7656d2616b516_1631585985752流量削峰如果看过秒杀系统的流量监控图的话,会发现它是一条直线,就在秒杀开始那一秒是一条很直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点。这样一来,就会导致一个特别高的流量峰值,它对资源的消耗是瞬时的但是对秒杀这个场景来说,最终能够抢到商品的人数是固定的,也就是说100人和10000人发起请求的结果都是一样的,并发度越转载 2021-09-14 10:34:36 · 925 阅读 · 0 评论 -
你觉得HTTPS能防止重放攻击吗?
转载自:https://www.toutiao.com/a7005058608551477791/?log_from=b02638f28c684_1631533612740正文协议流程我们先来回忆一下HTTPS的通信流程,HTTPS协议 = HTTP协议 + SSL/TLS协议,摘取一下网上一些八股文的回答(以RSA密钥交换的为例)!(1)客户端生成一个随机数client_random,TLS版本号,发送到服务端(2)服务端发送自己的随机数server_random,服务器使用的证书,发送到客户转载 2021-09-14 10:12:22 · 411 阅读 · 0 评论 -
优秀的代码都是如何分层的?
转载自:https://www.toutiao.com/i6982567970681651726/1、背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。的确在转载 2021-08-09 17:06:58 · 238 阅读 · 0 评论 -
“秒杀系统“设计原理
转载自:https://www.toutiao.com/i6844354907802173964/秒杀业务分析正常电子商务流程:查询商品创建订单扣减库存更新订单付款卖家发货秒杀业务的特性低廉价格大幅推广瞬时售空一般是定时上架时间短、瞬时并发量高秒杀技术挑战假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:1、对现有网站业务造成冲击秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访转载 2021-08-09 17:02:07 · 553 阅读 · 0 评论 -
Redis、Kafka 和 Pulsar 消息队列对比
转载自:https://mp.weixin.qq.com/s/LNQ1YvhnviKPGNsQx2A4cQ一、最基础的队列最基础的消息队列其实就是一个双端队列,我们可以用双向链表来实现,如下图所示:push_front:添加元素到队首;pop_tail:从队尾取出元素。有了这样的数据结构之后,我们就可以在内存中构建一个消息队列,一些任务不停地往队列里添加消息,同时另一些任务不断地从队尾有序地取出这些消息。添加消息的任务我们称为producer,而取出并使用消息的任务,我们称之为consume转载 2021-08-09 16:37:43 · 157 阅读 · 0 评论 -
非常实用的代码重构技巧
转载自:https://mp.weixin.qq.com/s/NAe8DU6a55HzbbFTHkooLQ关于重构为什么要重构1_代码重构漫画.jpeg项目在不断演进过程中,代码不停地在堆砌。如果没有人为代码的质量负责,代码总是会往越来越混乱的方向演进。当混乱到一定程度之后,量变引起质变,项目的维护成本已经高过重新开发一套新代码的成本,想要再去重构,已经没有人能做到了。造成这样的原因往往有以下几点:编码之前缺乏有效的设计成本上的考虑,在原功能堆砌式编程缺乏有效代码质量监督机制对于此类问转载 2021-08-09 16:24:58 · 225 阅读 · 0 评论 -
架构师必须要知道的「架构理论」
转载自:https://www.toutiao.com/i6851531855263433227/架构目的和指标架构目的:架构设计的主要目的是为了解决软件系统复杂度带来的问题,是用最小的人力成本来满足需求的开发和响应需求的变化,用最小的运行成本来保障软件的运行。让软件达到“高内聚、松耦合”,从而使软件具有:易扩展——易于增加新的功能更强壮——不容易被粗心的程序员破坏可移植——能够在多样的环境下运行更简单——容易理解、容易维护设计目标:可扩展性(Scalable)可靠性(Reliab转载 2021-07-24 22:54:54 · 810 阅读 · 0 评论 -
基于有限状态机与消息队列的三方支付系统补单实践
转载自:https://www.toutiao.com/i6903104038930579979/0.引言在日常生活中,从线下的超市购物到线上的外卖点餐、电商网购等,支付无时无刻不在发生,不论是通过现金、pos 机刷卡还是微信支付宝等第三方支付。线上支付有着及时便捷一气呵成的极致体验,当然也有少数的时候体验不够丝滑,比如早期我们在 PC 版 12306 买火车票,当支付完成后,订单的支付状态却经常不能及时更新,会有一段时间的延迟,有时甚至会等待很长时间处在未支付状态。在支付的过程中由于各种各样的原因(转载 2021-07-24 22:49:21 · 319 阅读 · 0 评论 -
春节红包活动如何应对10亿级流量?
转载自:https://www.toutiao.com/i6971353868185960996/今天分享的主题的是**《面向大规模流量活动的高可用架构实践》**,在开始之前先做个简单的自我介绍,我叫徐汉彬,在进入数列科技之前负责过QQ会员活动运营平台,把这个平台从日PV百万级别做到10亿级别,在应对大流量活动这一块积累了一定的经验,今天就这个主题方向跟大家做一个探讨。分享的内容主要分为三个部分:1.大流量活动的系统扩容评估方法2.系统高可用架构设计实践3.大规模流量活动的实践案例大流量活动的系转载 2021-07-24 22:44:25 · 272 阅读 · 0 评论