架构设计
文章平均质量分 78
架构设计
NeilNiu
日拱一卒无有尽,功不唐捐终入海!
展开
-
架构技术之分布式数据存储(上)
一、MySQL复制,主从复制MySQL的主从复制,就是将MySQL主数据库中的数据复制到从数据库中去,主要的目的是实现数据库读写分离-写操作访问主数据库,读操作访问从数据库。从而是数据库具有更强大的访问负载力,支撑更多的用户访问。主从复制的原理是当应用程序客户端发送一条更新命令到数据库的时候,数据库会把这条更新命令同步记录到Binglog中,然后由另外一个线程从Binglog中读取这条日志,再通过远程通讯的方式将它复制到从服务器上面,从服务器获得这条更新日志日后,将其加入到自己的Relaylog中,然后原创 2021-03-28 12:45:35 · 259 阅读 · 2 评论 -
架构技术之分布式消息队列
异步架构的主要组成部分:消息生产者、消息消费者、分布式消息队列。异步架构的两种主要模型:点对点模型和订阅模型消息队列构建异步调用框架消息的生产者将消息送到消息队列以后,由消息的消费者从消息队列中获取消息,然后进行业务逻辑的处理,消息的生产者和消费者是异步处理的,彼此不会等待阻塞,所以叫做异步架构。一、使用消息队列构建一个异步调用架构,需要3个角色:一是消息的生产者,二是消息队列,三是消息的消费者。消息的生产者是客户端应用程序代码的一部分,用来初始化异步调用处理流程。在消息队列的处理中,生产者职责比原创 2021-03-28 12:43:03 · 346 阅读 · 0 评论 -
分布式缓存的路由算法是如何实现的?
所谓分布式对象缓存是指对对象缓存以一个分布式集群的方式对外提供服务,多个应用系统使用同一个分布式对象缓存提供的缓存服务。这里的缓存服务器是由多台服务器组成。这些服务器共同构成了一个集群对外提供服务,所以使用分布式对象缓存一个重要的问题就是,数据进行读写操作的时候,如何找到正确的缓存服务器进行读写操作。如果第一次写入数据的时候写入的是A服务器,但是数据进行缓存读取操作的时候访问的是B服务器,就不能够正确的查找到数据,缓存也就没有效果。那么如何才能找到正确的缓存服务器呢?当需要进行分布式缓存访问的时候,依然原创 2021-03-21 12:05:00 · 277 阅读 · 0 评论 -
如何成为一名架构师
想必工作多年的研发工程师,有很多都是想成为架构师。但是并不是每一个研发都有机会参与架构设计,很多公司不一定会主动培养你成为架构师。但是我觉得要先掌握架构师的知识体系,然后通过实践进行校验,自己把自己培养成一名架构师。架构师需要具备的能力模型,需要那几部分组成呢1、基础技术架构,这部分是纯技术架构,所有非功能性的技术都是基础技术的范畴。2、业务架构,在业务场景下对业务需求的抽象。3、开发技能,这是架构师落地架构的能力。在一个开发需求过程中,会经历需求分析、架构设计、架构选型、架构落地这四个阶段。对架原创 2021-03-06 18:53:11 · 964 阅读 · 2 评论 -
架构师的视角进行全链路系统性能的优化
一、前端优化前端的优化主要有三个环节:减少请求次数、页面静态化、边缘计算减少请求次数:减少前端脚本与后端服务的请求次数,有三种方案(1)增加缓存控制:前端开发经常设置HTML的缓存控制头部(Cache-Control头),这样浏览器在请求同一个文件的时候,只访问本地保存的资源副本,从而加速文件的访问速度。(2)减少图像的请求次数:大部分网站会将所用到的多张图片拼成一张,这样多张图片只需要下载一次,然后再通过CSS中的background-image和background-position来定位目标位原创 2021-03-02 23:09:44 · 498 阅读 · 0 评论 -
架构师的视角分析系统性能指标
架构师视角也就是从系统的全链路视角,来分析系统性能指标一、一次请求全链路图步骤一:DNS解析,,用户在浏览器输入URL按回车,请求会进行DNS查找,浏览器通过DNS解析查到域名映射的IP地址,查找成功后,浏览器会和该IP地址建立连接。对应的性能指标为:DNS解析时间。对于这个指标,我们可以通过DNS缓存或DNS预解析,适当增大域名的TTL值来增大DNS服务器缓存域名的时间,进而提升了缓存的命中率。也可以用dns-prefetch标签实现域名的预解析,让浏览器在后台把要用的DNS请求提前解析,当用户访问原创 2021-03-02 23:04:03 · 467 阅读 · 0 评论 -
设计一个秒杀系统架构
对于秒杀架构的设计,需要遵循以下个原则:东西不能超卖、下单成功的订单数据不能丢失、服务器和数据库不能挂尽量不让机器人抢走整体的思路秒杀架构的设计方案就是一个不断过滤请求的过程,从系统架构层面来说,秒杀系统的分层思路如下。秒杀系统的架构设计目标就是尽可能把上层的用户请求处理掉。下面我们通过业务的流程来设计秒杀的架构一、浏览页面对于PC网站,首先必选前后端分离,然后静态资源放到CDN上。例如我们平时访问的请求是https://static.xxx.jpg。我们可以将这个staticxxx原创 2021-01-31 14:56:38 · 277 阅读 · 1 评论 -
一次完整的 RPC 流程
一次完整的 RPC 流程因为 RPC 是远程调用,首先会涉及网络通信, 又因为 RPC 用于业务系统之间的数据交互,要保证数据传输的可靠性,所以它一般默认采用 TCP 来实现网络数据传输。网络传输的数据必须是二进制数据,可是在 RPC 框架中,调用方请求的出入参数都是对象,对象不能直接在网络中传输,所以需要提前把对象转成可传输的二进制数据,转换算法还要可逆,这个过程就叫“序列化”和“反序列化”。另外,在网络传输中,RPC 不会把请求参数的所有二进制数据一起发送到服务提供方机器上,而是拆分成好几个数据包原创 2021-01-31 11:30:13 · 4435 阅读 · 0 评论 -
MQ的作用及如何解决消息队列的丢失、重复和积压问题
引入 MQ 消息中间件最直接的目的是:做系统解耦合流量控制,追其根源还是为了解决互联网系统的高可用和高性能问题。系统解耦:用 MQ 消息队列,可以隔离系统上下游环境变化带来的不稳定因素,比如京豆服务的系统需求无论如何变化,交易服务不用做任何改变,即使当京豆服务出现故障,主交易流程也可以将京豆服务降级,实现交易服务和京豆服务的解耦,做到了系统的高可用。流量控制:遇到秒杀等流量突增的场景,通过 MQ 还可以实现流量的“削峰填谷”的作用,可以根据下游的处理能力自动调节流量。不过引入 MQ 虽然实现了系统解耦原创 2021-01-31 11:00:51 · 1041 阅读 · 0 评论