java高级-架构师之路
文章平均质量分 94
小米加大炮
天生我材必有用,千金散尽还复来!
展开
-
架构师之路(19)优雅的时间轮算法
xxl-job的时间轮算法转载 2022-07-21 15:19:07 · 1473 阅读 · 0 评论 -
架构师之路(18)讲解秒杀系统设计
1 秒杀场景秒杀场景 登陆12306进行火车票抢座 1599元购入飞天茅台 周董演唱会的门票 双十一秒杀活动 秒杀场景关注点 严格防止超卖:库存1000件卖了1020件,要杀个码农祭天了!防止超卖是秒杀系统设计最核心的部分。 防止黑产:防止不怀好意的羊毛党薅羊毛。 保证用户体验:高并发下,给用户提供友善的购物体验,尽可能支持比较高的QPS等等。 接下来就让我们按照关注点,不断细化秒杀场景。2 第1版-裸奔不加思考,上来直.转载 2021-06-26 17:00:49 · 314 阅读 · 0 评论 -
架构师之路(17)如何设计出健壮的秒杀系统?
一、秒杀应该考虑哪些问题1.1 超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。1.2 高并发秒杀具有时间短、并发量大的特点,秒杀持续时间只有几分钟,而一般公司都为了制造轰动效应,会以极低的价格来吸引用户,因此参与抢购的用户会...转载 2020-01-20 18:04:58 · 429 阅读 · 0 评论 -
架构师之路(16)定时任务的防重设计
一、起因金融、支付类公司,易产生资损的业务当属代发、转账、卡券权益兑换类等出金交易。每一位致力于此的架构师、开发工程师最担心重复代发、重复兑换的问题,尤其对于批量的出金类业务,由于设计不当导致的大量的资金、资产损失后果惨重。因此批处理任务的防重设计极为重要。二、定时任务演进2.1 古代以每5分钟执行一次批量代发交易为例,早期大部分系统都是单体应用,通常采用Spring+Cron表...转载 2020-01-20 16:25:47 · 747 阅读 · 0 评论 -
架构师之路(15)每秒30W次的点赞业务,怎么优化?
一、需求描述:实现类似新浪微博的点赞功能,高峰流量30WQPS,如何这样的服务呢?二、需求分析可以看到,这个业务的特点是:(1)吞吐量超高;(2)能够接受一定数据不一致;画外音:计数有微小不准确,不是大问题。三、设计思路有几点是最容易想到的:(1)肯定不能用数据库抗实时读写流量;(2)redis天然支持固化,可以用高可用redis集群来做固化存储;(3)也可以用MyS...转载 2020-01-02 13:47:41 · 1965 阅读 · 5 评论 -
架构师之路(14)RPC框架详解
1.RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。RPC 是一种技术思想而非一种规范或协议。2.常见 RPC 技术和框架有:应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。远程通信协议:RMI、Socket、...转载 2019-07-02 16:01:10 · 1228 阅读 · 0 评论 -
架构师之路(13)系统如何支持高并发
高并发系统各不相同。比如每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统。他们在应对高并发的时候,因为系统各自特点的不同,所以应对架构都是不一样的。另外,比如电商平台中的订单系统、商品系统、库存系统,在高并发场景下的架构设计也是不同的,因为背后的业务场景什么的都不一样。一、最简单的系统架构假设刚刚开始你的系统就部署在一台机器上,背后就连接了一台数据库,...转载 2019-04-02 17:24:15 · 1058 阅读 · 0 评论 -
架构师之路(12)多库多事务降低数据不一致概率
一、案例缘起我们经常使用事务来保证数据库层面数据的ACID特性。举个栗子,用户下了一个订单,需要修改余额表,订单表,流水表,于是会有类似的伪代码:start transaction; CURDtable t_account; any Exception rollback; CURDtable t_order; any Exception r...转载 2019-02-22 17:07:43 · 158 阅读 · 0 评论 -
架构师之路(11)单点系统架构的可用性与性能优化
一、需求缘起明明架构要求高可用,为何系统中还会存在单点?回答:单点master的设计,会大大简化系统设计,何况有时候避免不了单点在哪些场景中会存在单点?先来看一下一个典型互联网高可用架构。典型互联网高可用架构:(1)客户端层,这一层是浏览器或者APP,第一步先访问DNS-server,由域名拿到nginx的外网IP(2)负载均衡层,nginx是整个服务端的入口,负责反向...转载 2019-02-22 15:52:38 · 232 阅读 · 0 评论 -
架构师之路(10)库存扣多了,到底咋整?
业务复杂、数据量大、并发量大的业务场景下,典型的互联网架构,一般会分为这么几层:调用层,一般是处于端上的browser或者APP站点层,一般是拼装html或者json返回的web-server层服务层,一般是提供RPC调用接口的service层数据层,提供固化数据存储的db对于库存业务,一般有个库存服务,提供库存的查询、扣转载 2018-03-06 17:42:41 · 568 阅读 · 0 评论 -
架构师之路(9)多种负载均衡算法及其 Java 代码实现
一、什么是负载均衡?负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展 网络设备和 服务器的带宽、增加 吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web 服务器、 FTP服务器、 企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。转载 2017-11-15 16:38:33 · 1341 阅读 · 0 评论 -
架构师之路(4)数据库切换ip地址
一、缘起很多公司,技术经常遇到这样的场景:1)硬件升级,要换一台高配机器2)网络重新规划,若干服务器要调整机架3)服务器宕机,要重新部署恢复服务…更具体的,如上图:数据库换了一个ip,此时往往连接此数据库的上游需要修改配置重启,如果数据库有很多上游调用方,改配置重启的调用方会很多,每次换ip的成本往往很高,成为大家共性的痛点。转载 2017-10-13 16:24:58 · 723 阅读 · 0 评论 -
架构师之路(3)session一致性架构设计实践
一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。 Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,以保持登录状态。 什么是session一致性问题?只转载 2017-10-13 14:38:48 · 361 阅读 · 0 评论 -
架构师之路(2)细聊分布式ID生成方法
一、需求缘起几乎所有的业务系统,都有生成一个记录标识的需求,例如:(1)消息标识:message-id(2)订单标识:order-id(3)帖子标识:tiezi-id这个记录标识往往就是数据库中的唯一主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。 这个记录标识上的查询,往往又有分页或者排序的业务转载 2017-10-12 15:53:36 · 357 阅读 · 0 评论 -
架构师之路(1)秒杀系统架构优化思路
一、秒杀业务为什么难做1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。 例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。又例如:12306转载 2017-10-12 15:24:11 · 775 阅读 · 0 评论 -
架构师之路(8)100亿数据平滑数据迁移,不影响服务
一、问题的提出互联网有很多“数据量较大,并发量较大,业务复杂度较高”的业务场景,其典型系统分层架构如下:(1)上游是业务层biz,实现个性化的业务逻辑(2)中游是服务层service,封装数据访问(3)下游是数据层db,存储固化的业务数据 服务化分层架构的好处是,服务层屏蔽下游数据层的复杂性,例如缓存、分库分表、存储引擎等存储细节转载 2017-10-19 17:39:56 · 618 阅读 · 0 评论 -
架构师之路(7)互联网架构之“高并发”
一、什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。响应时间:系统对请转载 2017-10-18 16:29:11 · 536 阅读 · 0 评论 -
架构师之路(6)互联网架构之“高可用”
一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系转载 2017-10-18 14:53:15 · 533 阅读 · 0 评论 -
架构师之路(5)100亿数据1万属性数据架构设计
一、背景描述及业务介绍问:什么是数据库扩展的version + ext方案?使用ext来承载不同业务需求的个性化属性,使用version来标识ext里各个字段的含义。例如上述user表:verion=0表示ext里是passwd/nickversion=1表示ext里是passwd/nick/age/sex 优点?转载 2017-10-17 16:40:18 · 722 阅读 · 0 评论