随笔分类 -  高并发架构系统学习

摘要:mysql 三高高并发:同时处理的事务数高高性能:事务/SQL的执行速度高高可用:系统可用的时间高 如何实现三高 高并发:通过复制和扩展,将数据分散至多个节点高性能:复制提升速度,扩展提升容量高可用:节点间身份切换保证随时可用 实现三高的手段复制目的:数据冗余手段:binlog传送收货:并发量提升、 阅读全文
posted @ 2021-11-02 19:29 温柔的风 阅读(1626) 评论(0) 推荐(0) 编辑
摘要:面对海量数据的计数器要如何做? 刷微博、点赞热搜,如果有抽奖活动,再转发一波,其实就是微博场景下的计数数据,细说起来,它主要有几类: 微博的评论数、点赞数、转发数、浏览数、表态数等等; 用户的粉丝数、关注数、发布微博数、私信数等等。 微博维度的计数代表了这条微博受欢迎的程度,用户维度的数据(尤其是粉 阅读全文
posted @ 2020-10-26 14:21 温柔的风 阅读(1766) 评论(0) 推荐(1) 编辑
摘要:究竟什么是限流限流指的是通过限制到达系统的并发请求数量,保证系统能够正常响应部分用户请求,而对于超过限制的流量,则只能通过拒绝服务的方式保证整体系统的可用性。限流策略一般部署在服务的入口层,比如API网关中,这样可以对系统整体流量做塑形。而在微服务架构中,也可以在RPC客户端中引入限流的策略,来保证 阅读全文
posted @ 2020-10-26 11:06 温柔的风 阅读(816) 评论(0) 推荐(0) 编辑
摘要:比如在促销过程中出现了几次短暂的服务不可用,这给部分用户造成了不好的使用体验。 第一类原因是由于依赖的资源或者服务不可用,最终导致整体服务宕机。比如由于数据库访问缓慢,导致整体服务不可用。 另一类原因是你们乐观地预估了可能到来的流量,当有超过系统承载能力的流量到来时,系统不堪重负,从而出现拒绝服务的 阅读全文
posted @ 2020-10-24 23:47 温柔的风 阅读(560) 评论(0) 推荐(0) 编辑
摘要:在大型的项目中,业务比较复杂的系统里,难免会在代码层频繁加入一些场景业务配置,那么每次都需要代码频繁提交,会很不方便。 配置中心是如何实现的?配置中心可以算是微服务架构中的一个标配组件了。业界也提供了多种开源方案供你选择,比较出名的有携程开源的Apollo,百度开源的Disconf,360开源的QC 阅读全文
posted @ 2020-10-24 23:23 温柔的风 阅读(630) 评论(0) 推荐(0) 编辑
摘要:什么是压力测试 压力测试(简称为压测)大部分同学这样认为:先搭建一套与正式环境功能相同的测试环境,并且导入或者生成一批测试数据,然后在另一台服务器,启动多个线程并发地调用需要压测的接口(接口的参数一般也会设置成相同的,比如,想要压测获取商品信息的接口,那么压测时会使用同一个商品ID)。最后,通过统计 阅读全文
posted @ 2020-10-23 19:06 温柔的风 阅读(779) 评论(0) 推荐(0) 编辑
摘要:除了运维团队对于机器CPU、内存、磁盘、网络等基础监控,还要完成应用程序对数据库的链接、服务报错异常、以及请求超时等问题能做到及时发现。 监控四个指标 分别是延迟,通信量、错误和饱和度。 延迟指的是请求的响应时间。比如,接口的响应时间、访问数据库和缓存的响应时间。 通信量可以理解为吞吐量,也就是单位 阅读全文
posted @ 2020-10-23 18:35 温柔的风 阅读(355) 评论(0) 推荐(0) 编辑
摘要:来想象这样一个场景:你的垂直电商系统部署的IDC机房,在某一天发布了公告说,机房会在第二天凌晨做一次网络设备的割接,在割接过程中会不定时出现瞬间,或短时间网络中断。 机房网络的中断,肯定会对业务造成不利的影响,即使割接的时间在凌晨(业务的低峰期),作为技术负责人的你,也要尽量思考方案来规避隔离的影响 阅读全文
posted @ 2020-09-23 01:12 温柔的风 阅读(1383) 评论(0) 推荐(0) 编辑
摘要:API网关起到的作用(904) API网关(API Gateway)不是一个开源组件,而是一种架构模式,它是将一些服务共有的功能整合在一起,独立部署为单独的一层,用来解决一些服务治理的问题。你可以把它看作系统的边界,它可以对出入系统的流量做统一的管控。 在我看来,API网关可以分为两类:一类叫做入口 阅读全文
posted @ 2020-09-23 00:53 温柔的风 阅读(804) 评论(0) 推荐(0) 编辑
摘要:负载均衡服务大体上可以分为两大类:一类是代理类的负载均衡服务;另一类是客户端负载均衡服务。 代理类的负载均衡服务,以单独的服务方式部署,所有的请求都要先经过负载均衡服务,在负载均衡服务中,选出一个合适的服务节点后,再由负载均衡服务,调用这个服务节点来实现流量的分发。 由于这类服务需要承担全量的请求, 阅读全文
posted @ 2020-09-23 00:34 温柔的风 阅读(504) 评论(0) 推荐(0) 编辑
摘要:在分布式微服务的架构中,不同业务的项目之间通过RPC服务相互调用,方便了可扩展性,如下图 假如在某个时间节点某个接口请求出现了请求比较慢的问题,而整个接口的流程可能涉及到多个RPC服务之间的调用,那么该如何排查问题呢? 先说一下一体化架构的一贯方法 最简单的思路是:打印下单操作的每一个步骤的耗时情况 阅读全文
posted @ 2020-08-24 23:37 温柔的风 阅读(808) 评论(1) 推荐(0) 编辑
摘要:通过RPC框架,能够解决服务之间,跨网络通信的问题,这就完成了微服务化改造的基础。但是在服务拆分之后,需要维护更多的细粒度的服务,面对的第一个问题就是,如何让RPC客户端知道服务端部署的地址,服务注册与发现的问题。 你所知道的服务发现服务注册和发现不是一个新的概念,比如说,Nginx是一个反向代理组 阅读全文
posted @ 2020-08-21 00:09 温柔的风 阅读(508) 评论(0) 推荐(0) 编辑
摘要:在做了服务化拆分之后,把业务逻辑都拆分到了单独部署的服务中,那么假设在完成一次完整的请求时,需要调用4~5次服务,计算下来,RPC服务需要承载大概每秒10万次的请求。那么,你该如何设计RPC框架,来承载如此大的请求量呢?你要做的是: 选择合适的网络模型,有针对性地调整网络参数,以优化网络传输性能;选 阅读全文
posted @ 2020-08-20 23:39 温柔的风 阅读(1362) 评论(0) 推荐(0) 编辑
摘要:微服务化架构 在这个架构中,将用户、订单和商品相关的逻辑,抽取成服务独立的部署,原本的Web工程和队列处理程序,将不再直接依赖缓存和数据库,而是通过调用服务接口,查询存储中的信息。有了构思和期望之后,为了将服务化拆分尽快落地,你们决定抽调主力研发同学,共同制定拆分计划。但是细致讨论后发现,虽然对服务 阅读全文
posted @ 2020-08-11 23:35 温柔的风 阅读(501) 评论(0) 推荐(0) 编辑
摘要:常见的中型服务架构 目前来看,工程的部署方式还是采用一体化架构,也就是说所有的功能模块,比方说电商系统中的订单模块、用户模块、支付模块、物流模块等等,都被打包到一个大的Web工程中,然后部署在应用服务器上。 一体化架构的痛点 先来回想一下,当初为什么选用了一体化架构。在电商项目刚刚启动的时候,只是希 阅读全文
posted @ 2020-08-11 23:08 温柔的风 阅读(1044) 评论(0) 推荐(0) 编辑
摘要:什么是消息延迟? 消息队列在消费过程中大量堆积就是消息延迟,也就是消费的频率跟不上生产。比方说,生产者向队列中一共生产了1000条消息,某一个消费者消费进度是900条,那么这个消费者的消费延迟就是100条消息。 如何监控消息延迟 使用消息队列提供的工具,通过监控消息的堆积来完成; 通过生成监控消息的 阅读全文
posted @ 2020-08-11 22:31 温柔的风 阅读(777) 评论(0) 推荐(0) 编辑
摘要:消息为什么会丢失 消息从被写入到消息队列,到被消费者消费完成,这个链路上会有哪些地方存在丢失消息的可能呢?其实,主要存在三个场景: 消息从生产者写入到消息队列的过程。 消息在消息队列中的存储场景。 消息被消费者消费的过程。 1.在消息生产的过程中丢失消息 在这个环节中主要有两种情况。 首先,消息的生 阅读全文
posted @ 2020-06-28 00:17 温柔的风 阅读(843) 评论(0) 推荐(0) 编辑
摘要:削去秒杀场景下的峰值写流量 而在秒杀场景下,高并发的写请求并不是持续的,也不是经常发生的,而只有在秒杀活动开始后的几秒或者十几秒时间内才会存在。为了应对这十几秒的瞬间写高峰,将秒杀请求暂存在消息队列中,然后业务服务器会响应用户“秒杀结果正在计算中”,释放了系统资源之后再处理其它用户的请求。 在后台启 阅读全文
posted @ 2020-06-27 19:40 温柔的风 阅读(4628) 评论(0) 推荐(0) 编辑
摘要:缓存穿透其实是指从缓存中没有查到数据,而不得不从后端系统(比如数据库)中查询的情况。 缓存穿透的解决方案 举例:如果要读取一个用户表中未注册的用户,按照旁路缓存策略,我们会先读缓存,再穿透读数据库。由于用户并不存在,所以缓存和数据库中都没有查询到数据,因此也就不会向缓存中回种数据(也就是向缓存中设置 阅读全文
posted @ 2020-06-27 18:45 温柔的风 阅读(598) 评论(0) 推荐(0) 编辑
摘要:为了增大缓存系统架构的高可用,增加缓存的命中率,尽量避免请求穿透缓存进入后端数据库,主要选择的方案有客户端方案、中间代理层方案和服务端方案三大类: 客户端方案就是在客户端配置多个缓存的节点,通过缓存写入和读取算法策略来实现分布式,从而提高缓存的可用性。 中间代理层方案是在应用代码和缓存节点之间增加代 阅读全文
posted @ 2020-06-27 15:37 温柔的风 阅读(596) 评论(0) 推荐(0) 编辑