架构
文章平均质量分 86
豆奶快攻
这个作者很懒,什么都没留下…
展开
-
ShardingSphere分库分表相关
垂直分片按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用。在拆分之前,一个数据库由多个数据表构成,每个表对应着不同的业务。而拆分之后,则是按照业务将表进行归类,分布到不同的数据库中,从而将压力分散至不同的数据库。水平分片水平分片又称为横向拆分。相对于垂直分片,它不再将数据根据业务逻辑分类,而是通过某个字段(或某几个字段),根据某种规则将数据分散至多个库或表中,每个分片仅包含数据的一部分。垂直分库在resources目录下新建配置文件,存放数据源、分片规则等配置信息。在。原创 2024-07-25 12:29:39 · 549 阅读 · 0 评论 -
ShardingSphere读写分离相关
考虑到业务场景的复杂性,提供基于SPI接口实现符合自己业务需要的负载均衡算法。提供了读库负载均衡算法接口,用户根据自定的算法返回一个可访问的读库。/*** @param name 读写分离逻辑数据源名称* @param writeDataSourceName 写库数据源名称* @param readDataSourceNames 读库数据源名称集合* @return 命中的读库名称*/实现/*** 配置类中的props属性* # 负载均衡算法* read: # 自定义的算法名称。原创 2024-07-23 14:38:52 · 299 阅读 · 0 评论 -
分布式相关
所有数据都存储在缓存里,读服务在查询时不会再降级到数据库里,所有的请求都完全依赖缓存。主机宕机时,备机接管主机的一切工作,主机恢复正常后,以自动(热备)或手动(冷备)方式将服务切换到主机上运行,master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的。中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的。如果同步缓存失败了,被消费的 Binlog 不会被确认,下一次会重复消费,数据最终会写入缓存中;原创 2024-07-05 23:46:51 · 869 阅读 · 0 评论 -
高并发架构设计
高并发是指系统或应用程序在同一时间段内接收到大量并发请求的能力。具体来说,高并发环境下系统需要能够同时处理大量的请求,而不会出现性能问题或响应延迟。原创 2024-07-04 18:55:22 · 697 阅读 · 0 评论 -
限流神器Sentinel
这篇文章介绍一下阿里开源的流量防卫兵Sentinel,一款非常优秀的开源项目,经过近10年的双十一的考验,非常成熟的一款产品。sentinel顾名思义:卫兵;在Redis中叫做哨兵,用于监控主从切换,但是在微服务中叫做流量防卫兵。Sentinel 以流量为切入点,从流量控制熔断降级系统负载保护等多个维度保护服务的稳定性。丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一。原创 2024-06-12 16:18:29 · 873 阅读 · 0 评论 -
lambda 之美
并且返回一个Optional对象,该对象是java8新增的类,专门为了防止null引发的空指针异常。本篇主要从实际使用讲述了常用的方法及流,使用java8可以很清晰表达你要做什么,代码也很简洁。本篇例子主要是为了讲解较为简单,大家可以去使用java8重构自己现有的代码,自行领会lambda的奥妙。本文说的Stream要组合使用才会发挥更大的功能,链式调用很迷人,根据自己的业务去做吧。我们看得reduce接收了一个初始值为0的累加器,依次取出值与累加器相加,最后累加器的值就是最终的结果。原创 2024-05-25 18:36:09 · 310 阅读 · 0 评论 -
ThreadLocal 搭配线程池使用造成内存泄漏的原因和解决方案
主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。和HashMap的最大的不同在于,ThreadLocalMap结构非常简单,没有next引用,也就是说ThreadLocalMap中解决Hash冲突的方式并非链表的方式,而是采用线性探测的方式。ThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map的功能,其内部的Entry也独立实现。转载 2024-05-25 02:19:52 · 120 阅读 · 0 评论 -
性能优化思路及常用工具及手段
性能优化是降低成本的手段之一,每年大促前业务平台都会组织核心链路上的应用做性能优化,一方面提升系统性能,另外一方面对腐化的代码进行清理。现结合业务平台性能优化的经验,探讨一下性能优化的思路及常用工具及手段。性能优化本质上是对资源的合理利用,将更珍贵的资源用在更重要的业务上,从而实现资源的充分利用,资源的合理利用。性能优化的对象包括业务运行的容器、业务依赖的中间件、业务依赖的数据库存储的优化,性能优化包括两部分:一、发现需要性能优化的点;二、改造代码设计实现性能优化;原创 2024-05-23 14:56:01 · 556 阅读 · 0 评论 -
Redis知识总结
如果因为网络故障,主服务器传播给从服务器的写命令在半路丢失,那么当从服务器向主服务器发 送REPLCONF ACK命令时,主服务器将发觉从服务器当前的复制偏移量少于自己的复制偏移量, 然后主服务器就会根据从服务器提交的复制偏移量,在复制积压缓冲区里面找到从服务器缺少的数据,并将这些数据重新发送给从服务器。因为跳表底层的单链表是有序的,为了维护这种有序性,在插入前需要遍历链表,找到该插入的位置,单链表遍历查找的时间复杂度是O(n),同理可得,跳表的遍历也是需要遍历索引数,所以是O(logn)。转载 2024-02-01 11:41:38 · 41 阅读 · 0 评论 -
性能优化
性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志(文中的应用指分布式服务下的单个节点)即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。对应用进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。一个简单的应用,它不仅包含了应用代码本身,还和容器(虚拟机)、操作系统、存储、网络、文件系统等紧密相关,线上应用一旦出现了性能问题,需要我们从多方...原创 2020-02-29 01:10:03 · 2404 阅读 · 0 评论 -
系统如何支撑高并发
一道面试题的背景引入大多数同学被问到这个问题压根儿没什么思路去回答,不知道从什么地方说起,其实本质就是没经历过一些真正有高并发系统的锤炼罢了。因为没有过相关的项目经历,所以就没法从真实的自身体会和经验中提炼出一套回答,然后系统的阐述出来自己负责过的系统如何支撑高并发的。所以,这篇文章就从这个角度切入来简单说说这个问题,用一个最简单的思路来回答,大致如何应对。...原创 2020-02-22 22:35:46 · 652 阅读 · 0 评论 -
秒懂QPS、TPS、PV、UV、GMV、IP、RPS
QPS、TPS、PV、UV、GMV、IP、RPS等各种名词,外行看起来很牛X,实际上每个程序员都是必懂知识点。下面我来一一解释一下。QPSQueries Per Second,每秒查询数。每秒能够响应的查询次数。QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。每秒的响应请求数,也即是最大吞...原创 2019-07-29 19:47:06 · 8535 阅读 · 1 评论 -
高性能高并发服务的瓶颈及突破思路
关于高性能高并发服务这个概念大家应该也都比较熟悉了,今天为大家带来如何做一个高性能高并发服务架构的实践和思考。本次分享主要包括三个部分:服务的瓶颈有哪些如何提升整体服务的性能及并发如何提升单机服务的性能及并发服务的瓶颈有哪些通常来说程序的定义是算法+数据结构+数据,算法简单的理解就是一种计算方式,数据结构顾名思义是一种存储组织数据的结构。这两者体现了程序需要用到的计算机资源,涉及到 CPU 资源、...原创 2018-07-02 13:39:51 · 4082 阅读 · 0 评论 -
做技术选型时,要注意些什么?
写在前面对于一名热爱技术的工程师来说,很容易出现非常热衷于使用新技术的情况,记得有一次和一位做平台应用的同事闲聊,他问我最近在搞什么,我说在研究 Hadoop,正在用 MapReduce 处理海量图片的智能分析,他一脸羡慕:“能搞新技术,真好!”。作为一名工程师,我可以理解大家的心情,我们都是热爱尝试新技术、抛弃过时技术的人。但是首先得明确,到底技术是不是过时的,还是仅仅是你认为它过时了。这篇文章...原创 2018-04-16 14:23:20 · 1863 阅读 · 0 评论