
架构之路
武林是大腿
博客都是本人浏览的一些好的博文或者公众号进行的转载归纳,用于互相交流,共同学习。
文章末尾都备注有转载来源,如有侵权,联系删除。
展开
-
为什么分布式一定要有消息队列?
0 为什么写这篇文章?博主有两位朋友分别是小A和小B:小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线。每天过的都是这种生活,技术零成长。小B,工作于某国企,虽然能接触到一些中间件技术。然而,他只会订阅/发布消息。通俗点说,就是调调AP...转载 2018-06-01 21:49:55 · 571 阅读 · 0 评论 -
电商网站秒杀与抢购的系统架构
一、大规模并发带来的挑战在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态。我们现在一起来讨论下,优化的思路和方法哈。1. 请求接口的合理设计一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是参与秒杀的Web后台请求接口。通常静态HTML等内容,是通过CDN...转载 2018-06-02 11:21:24 · 821 阅读 · 0 评论 -
互联网架构为什么要做服务化
作者:沈剑,曾任百度高级工程师,58高级架构师,C2C技术部负责人,58技术学院优秀讲师。目前,他主要负责58到家后端的技术管理工作,比如说架构部、后端平台部、基础服务部、DBA,还有测试平台等相关偏后台的技术工作。来自:架构师之路近期参加一些业界的技术大会,“微服务架构”的话题非常之火,也在一些场合聊过服务化架构实践,最近几期文章期望用通俗易懂的语言聊聊了个人对服务化以及微服务架构的理解,希望能...转载 2018-06-02 11:13:10 · 269 阅读 · 0 评论 -
关于Jvm知识看这一篇就够了
2016年左右的时候读了周志明《深入理解Java虚拟机:JVM高级特性与最佳实践》,读完之后受益匪浅,让我对Java虚拟机有了一个完整的认识,这是Jvm书籍中最好的读物之一。后来结合实际工作中遇到的问题,写了一系列关于Jvm的文章,其中开篇的几篇内容大部分参考于此书,后期加入自己一些实战的理解,转载了几篇高质量的文章,就形成了此系列读物。在金三银四的跳槽季中,很多小伙伴们都已经蠢蠢欲动,将此系列文...转载 2018-06-02 11:01:01 · 300 阅读 · 0 评论 -
40个多线程问题总结
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都转载 2018-06-02 10:58:31 · 275 阅读 · 0 评论 -
分布式之缓存击穿
题记 什么是缓存击穿在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义。如果在大流量下数据库可能挂掉。这就是缓存击穿。场景如下图所示:我们正常人在登录首页的时候,都是根据userID来命中数据,然而黑客的目的是破坏你的系统,黑客可以随机生成一堆userID,然后将这些请求怼...转载 2018-06-02 10:53:31 · 152 阅读 · 0 评论 -
支付平台架构评审
互联网平台架构日益成为互联网发展的基石,对于 Java 开发者和架构师而言,只有在了解架构背后的原理后,才能写出更高质量的代码,才能设计出更好的方案,才能在错综复杂平台架构下产出价值,才能在各种场景下快速发现问题、快速定位问题、快速解决问题。揭秘支付系统中数据库锁的应用实践。如何科学的设置线程池。缓存使用的最佳实践。数据库设计要点。一行代码引起的“血案”。幂等和防重。实现分布式任务调度的多种方法。...转载 2018-06-02 10:46:51 · 240 阅读 · 0 评论 -
负载分析及问题排查极简教程
平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下,在问题发生之前,某些指标就会提前有异常显示。对于这些指标的理解和查看、异常解决等,是程序员们重要的必备技能。本文,主要来介绍一下一个比较重要的指标——机器负载(Load),主要涉及负载的定义、查看负载方式、...转载 2018-06-02 10:39:14 · 777 阅读 · 0 评论 -
服务优化指南
1. 服务异常的处理流程2. 负载2.1 查看机器 cpu 的负载top -b -n 1 |grep java|awk '{print "VIRT:"$5,"RES:"$6,"cpu:"$9"%","mem:"$10"%"}'2.2 查找 cpu 占用率高的线程top -p 25603 -Hprintf 0x%x 25842jstack 25603 | grep 0x64f2cat /pr转载 2018-06-02 10:30:28 · 268 阅读 · 0 评论 -
为什么分布式一定要有延时任务?
0 引言在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期定时任务一般执行的是批处理...转载 2018-06-02 10:25:45 · 298 阅读 · 0 评论 -
为什么微服务一定要有网关?
一、什么是服务网关服务网关 = 路由转发 + 过滤器1、路由转发:接收一切外界请求,转发到后端的微服务上去;2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。二、为什么需要服务网关上述所说的横切功能(以权限校验为例)可以写在三个位置:每个服务自己实现一遍写到一个公共的服务中,然后其他所有服务都依赖这个服务写...转载 2018-06-01 22:07:27 · 745 阅读 · 0 评论 -
为什么分布式一定要有redis?
1、为什么使用redis分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。回答:如下所示,分为两点(一)性能如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQ...转载 2018-06-01 22:02:49 · 311 阅读 · 0 评论 -
高效sql性能优化极简教程
一,sql性能优化基础方法论对于功能,我们可能知道必须改进什么;但对于性能问题,有时我们可能无从下手。其实,任何计算机应用系统最终队可以归结为:cpu消耗内存使用对磁盘,网络或其他I/O设备的输入/输出(I/O)操作。但我们遇到性能问题时,要判断的第一点就是“在这三种资源中,是否有哪一种资源达到了有问题的程度”,因为这一点能指导我们搞清楚“需要优化重构什么”和“如何优化重构它”二,sql调优领域应...转载 2018-06-02 11:27:51 · 169 阅读 · 0 评论