经典技术集锦
文章平均质量分 89
寒夕若梦
公众号:Java面试百分百,大家可以关注一下呀!
趁着年轻生猛,我要再和生活死磕几年。要么我就毁灭,要么我就铸就辉煌。如果有一天,你发现我在平庸面前低了头,那么请向我开炮。
展开
-
深入理解Hadoop HDFS【一篇就够】
文本详细介绍了HDFS中的许多概念,对于理解Hadoop分布式文件系统很有帮助。1. 介绍在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统。而一旦在系统中,引入网络,就不可避免地引入了所有网络编程的复杂性,例如挑战之一是如果保证在节点不可用的时候数据不丢失。传统的网络文件系统(NFS)虽然也称为分布式文件系统,但是其存在...转载 2019-08-23 14:17:17 · 548 阅读 · 0 评论 -
聊聊高并发系统之限流特技-1
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限...转载 2018-04-13 13:43:25 · 256 阅读 · 0 评论 -
聊聊高并发系统之降级特技
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。之前已经有一些文章介绍过缓存和限流了。本文将详细聊聊降级。当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。本文将介绍一些笔者在实际工作中遇到的或见到过的一些降级方案供大家参考。 降级的最终目的...转载 2018-04-13 13:40:42 · 230 阅读 · 0 评论 -
降级特技之配置中心
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。之前已经有一些文章介绍过缓存和限流了。本文将详细聊聊降级。当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。本文将介绍一些笔者在实际工作中遇到的或见到过的一些降级方案供大家参考。 降级的最终目的...转载 2018-04-13 13:36:57 · 208 阅读 · 0 评论 -
聊聊高并发系统之队列术
队列在数据结构中是一种线性表,从一端插入数据,然后从另一端删除数据。本文目的不是讲解各种队列算法,而是在应用层面讲述使用队列能解决哪些场景问题。 在我开发过的系统中,不是所有的业务都必须实时处理、不是所有的请求都必须实时反馈结果给用户、不是所有的请求/处理都必须100%处理成功、不知道谁依赖“我”的处理结果、不关心其他系统如何处理后续业务、不需要强一致性,只需保证最终一致性即可、想要保证数据处理的...转载 2018-04-13 13:21:47 · 282 阅读 · 0 评论 -
聊聊java高并发系统之异步非阻塞
在做电商系统时,流量入口如首页、活动页、商品详情页等系统承载了网站的大部分流量,而这些系统的主要职责包括聚合数据拼装模板、热点统计、缓存、下游功能降级开关、托底数据等等。其中聚合数据需要调用其它多个系统服务获取数据、拼装数据/模板然后返回给前端,聚合数据来源主要有依赖系统/服务、缓存、数据库等;而系统之间的调用可以通过如http接口调用(如HttpClient)、SOA服务调用(如dubbo、th...转载 2018-04-13 13:20:29 · 848 阅读 · 0 评论 -
聊聊高并发系统之HTTP缓存
简介最近遇到很多人来咨询我关于浏览器缓存的一些问题,而这些问题都是类似的,因此总结本文来解答以后遇到类似问题的朋友。因本文主要以浏览器缓存场景介绍,所以非浏览器场景下的一些用法本文不会介绍,而且本文以chrome为测试浏览器。浏览器缓存是指当我们使用浏览器访问一些网站页面或者http服务时,根据服务端返回的缓存设置响应头将响应内容缓存到浏览器,下次可以直接使用缓存内容或者仅需要去服务端验证内容是否...转载 2018-04-13 13:16:41 · 306 阅读 · 0 评论 -
应用多级缓存模式支撑海量读服务
缓存技术是一个老生常谈的问题,但是它也是解决性能问题的利器,一把瑞士军刀;而且在各种面试过程中或多或少会被问及一些缓存相关的问题,如缓存算法、热点数据与更新缓存、更新缓存与原子性、缓存崩溃与快速恢复等各种与缓存相关的问题。而这些问题中有些问题又是与场景相关,因此如何合理应用缓存来解决问题也是一个选择题。本文所有内容是跟读服务缓存相关,不会涉及写服务数据的缓存。本文也不考虑内容型应用前置的CDN架构...转载 2018-04-13 13:15:04 · 199 阅读 · 0 评论 -
应用数据静态化架构高性能单页Web应用
在电商网站中,单页Web是非常常见的一种形式,比如首页、频道页、广告页等都属于单页应用。而这种页面是由模板+数据组成。传统的构建方式一般通过静态化实现。而这种方式的灵活性并不是很好,比如页面模板部分变更了需要重新全部生成。因此最好能有一种实现方式是可以实时动态渲染,以支持模板的多变性。另外也要考虑好如下几个问题:1、动态化模板渲染支持;2、数据和模板的多版本化:生产版本、灰度版本和预发布版本;3、...转载 2018-04-13 13:13:53 · 239 阅读 · 0 评论 -
HashMap在并发下可能出现的问题分析
我们都知道,HashMap在并发环境下使用可能出现问题,但是具体表现,以及为什么出现并发问题,可能并不是所有人都了解,这篇文章记录一下HashMap在多线程环境下可能出现的问题以及如何避免。在分析HashMap的并发问题前,先简单了解HashMap的put和get基本操作是如何实现的。1.HashMap的put和get操作大家知道HashMap内部实现是通过拉链法解决哈希冲突的,也就是通过链表的结...转载 2018-07-15 16:13:34 · 985 阅读 · 0 评论 -
大型网站压力测试及优化方案
木桶理论应用在系统优化中 木桶理论又称短板理论,其核心思想是一只木桶盛水多少,并不取决于最高的木板,而取决于最短的那块木板。木桶原理应用在系统分析中,即系统的最终性能取决于系统中性能表现最差的组件,为了提升系统整体性能,对系统中表现最差的组件进行优化可以得到最好的效果。 在网站系统中,用户的访问请求到达服务器,然后服务器返回数据并展示给用户,这个过程要经过很多处理,每一个过程的低效都会影响系统整...转载 2018-07-15 16:15:25 · 3051 阅读 · 0 评论 -
小程序开发实践总结 - WEB前端
从微信发布小程序以来,各大公司纷纷跟进都想从微信这个流量池里捞一杯羹。我司也不例外,我们整个前端团队这半年来基本上都是在开发小程序。前前后后也开发了四五个小程序了。总觉得要留下点什么,既是记录那些年我们踩过的坑,也是希望大家别再掉坑。那些年我们踩过的坑css样式不能引用本地图片资源,只能引用线上资源( background-image ),引用本地图片资源只能用 <image>...转载 2018-11-24 11:38:27 · 1709 阅读 · 0 评论 -
闲鱼在数据聚合上的探索与实践
概述随着业务的不断扩张,各种运营活动越来越多,原有的前端渲染-后端提供业务接口的开发方式对于一个生命周期可能只有几天的活动来说成本巨大。闲鱼在降低开发成本,提高整体效率上做了一些尝试和实践。本文介绍闲鱼从数据聚合方面进行了一些探索和尝试,以及Graphql的引入给闲鱼带了研发效率的提升。背景长期以来,前端和后端开发中面临一个矛盾:前端希望页面只获取结构化数据,能够直接渲染出页面组件;后...转载 2018-11-24 11:53:00 · 1552 阅读 · 0 评论 -
jvm调优总结
探究JVM内存泄露 性能调优的基本知识和JDK调优 一 基本知识1.1 性能是什么在性能调优之前,我们首先来了解一下性能是什么?关于性能,我想每个学习过 Java 的人都能列出几点,甚至可以夸夸其谈。在《 Java TM Platform Performance 》一书中,定义了如下五个方面来作为评判性能的标准:1) 运算的性能——哪一个算法的执行性能最好?2)...转载 2018-11-24 11:50:53 · 589 阅读 · 0 评论 -
前端工程与性能优化
每个参与过开发企业级web应用的前端工程师或许都曾思考过前端性能优化方面的问题。我们有雅虎14条性能优化原则,还有两本很经典的性能优化指导书:《高性能网站建设指南》、《高性能网站建设进阶指南》。经验丰富的工程师对于前端性能优化方法耳濡目染,基本都能一一列举出来。这些性能优化原则大概是在7年前提出的,对于web性能优化至今都有非常重要的指导意义。然而,对于构建大型web应用的团队来说,要坚持...转载 2018-11-24 11:48:08 · 205 阅读 · 0 评论 -
架构的本质是管理复杂性,微服务本身也是架构演化的结果
为应对如今无线优先和全渠道用户体验的需求和挑战,我们该如何设计灵活的面向体验的微服务架构?它有哪些模式和最佳实践?携程,Netflix和SoundCloud这些知名互联网公司是如何实践面向体验的微服务架构的?在过去的2015年,大牛马丁福勒对微服务有哪些新的观点?背景介绍2007-2012年,我曾经就职于亿贝中国研发中心(eBay CDC)的开放API平台部门,亲历了当时世界第一大C2C电...转载 2018-11-24 11:44:00 · 345 阅读 · 0 评论 -
从单体架构迁移到微服务,8个关键的思考、实践和经验
随着微服务架构的持续火热,网络上针对微服务和单体架构的讨论也是越来越多。去年的时候,社区更多的关注点是在二者的区别以及优缺点辨析上,而今年,越来越多的人开始关注如何从单体架构迁移到微服务上。毋庸置疑,微服务的理念正在席卷整个开发者社区,像Netflix、Uber这样的公司都是非常成功的应用案例。但需要注意的是,实施微服务,也需要付出额外的代价,Martin曾经就说过,除非面对的是一个过于复杂以...转载 2018-11-24 11:42:42 · 832 阅读 · 0 评论 -
滴滴:WebApp实践经验总结
本文为滴滴公共FE团队在WebApp方向的一些实践经验总结,主要内容包括:WebApp首页技术架构、前端工程化在WebApp的实践、通用地图JS库的设计和实践、 统一登录SDK的设计、通用客户端JSBridge的封装、在公共部门做通用服务的一些感悟、个人成长总结。1. WebApp首页技术架构需求分析(1)滴滴多条业务线在一个 WebApp 页面里运行,业务线之间互不影响。(2)业...转载 2018-11-24 11:41:11 · 629 阅读 · 0 评论 -
快速迭代式开发使用方法总结
为什么我在这里主要讨论迭代式软件开发?本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实、可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证。一家之见,纰漏之处还请大家多多指正。迭代式软件开发模式简要流程如下: 上图绿色大框内,我们就称之为一个迭代周期。每一个迭代,都可以形成一个可交付的小版本。事实上,每一个迭代周期内,对...转载 2018-11-24 11:40:07 · 2632 阅读 · 0 评论 -
京东如何打造K8s全球最大集群支撑万亿电商交易
在过去一年里,Kubernetes以其架构简洁性和灵活性,流行度持续快速上升,我们有理由相信在不远的未来,Kubernetes将成为通用的基础设施标准。而京东早在2016年年底上线了京东新一代容器引擎平台JDOS2.0,成功从Openstack切换到JDOS2.0的Kubernetes技术栈,打造了完整高效的PaaS平台。6月28日京东基础架构部技术总监、集群技术部负责人鲍永成受邀出席了Ran...转载 2018-11-24 11:39:22 · 767 阅读 · 0 评论 -
使用Nginx+Lua(OpenResty)开发高性能Web应用
在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡、反向代理、代理缓存、限流等场景;而把Nginx作为一个Web容器使用的还不是那么广泛。Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高;如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀;目前Nginx团队也开始意识到这个问题,开发了nginxSc...转载 2018-04-13 13:11:38 · 177 阅读 · 0 评论 -
互联网保险O2O平台微服务架构设计
关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里。这也是微服务能够流行的原因,看看市场上曾经出现的服务架 构:EJB、SCA、Dubbo等等,都比微服务先进,都比微服务功能完善,但它们都没有微服务这么深入民心,就是因为他们过于复杂。简单就是高科技,苹 果手机据说专门有个团队研究如何能让用户更加简单的操作。大公司都是由小公司发展起来的,如果小公司在开始技术选型时感觉某个框架费...转载 2018-04-22 12:07:12 · 1103 阅读 · 0 评论 -
聊聊高并发系统限流特技-2
上一篇《聊聊高并发系统限流特技-1》讲了限流算法、应用级限流、分布式限流;本篇将介绍接入层限流实现。接入层限流接入层通常指请求流量的入口,该层的主要目的有:负载均衡、非法请求过滤、请求聚合、缓存、降级、限流、A/B测试、服务质量监控等等,可以参考笔者写的《使用Nginx+Lua(OpenResty)开发高性能Web应用》。对于Nginx接入层限流可以使用Nginx自带了两个模块:连接数限流模块ng...转载 2018-04-14 19:59:14 · 319 阅读 · 0 评论 -
构建需求响应式亿级商品详情页
该文章是根据velocity 2015技术大会的演讲《京东网站单品页618实战》细化而来,希望对大家有用。 商品详情页是什么? 商品详情页是展示商品详细信息的一个页面,承载在网站的大部分流量和订单的入口。京东商城目前有通用版、全球购、闪购、易车、惠买车、服装、拼购、今日抄底等许多套模板。各套模板的元数据是一样的,只是展示方式不一样。目前商品详情页个性化需求非常多,数据来源也是非常多的,而且许多基...转载 2018-04-09 00:03:46 · 173 阅读 · 0 评论 -
携程第四代架构探秘之运维基础架构升级
作为国内最大的OTA公司,携程为数以亿计的海内外用户提供优质的旅游产品及服务。2014年底携程技术中心的框架、系统和运维团队共同启动了架构改造项目,历时2年,涉及所有业务线。本文回顾了携程在整个技术架构改造过程中的一些实践和收获。一、写在前面随着携程业务量迅速增长、业务变化越来越敏捷,对于应用交付的效率也提出了更高的要求。根据统计,截止2014年底携程总应用数在5000个左右,平均每周约有3000...转载 2018-04-09 00:01:51 · 595 阅读 · 0 评论 -
java并发的处理方式
1 什么是并发问题。多个进程或线程同时(或着说在同一段时间内)访问同一资源会产生并发问题。银行两操作员同时操作同一账户就是典型的例子。比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户减去 50元,A先提交,B后提交。 最后实际账户余额为1000-50=950元,但本该为 1000+100-50=1050。这就是典型的并发问题。如何解决?可以用锁。...转载 2018-04-09 00:00:31 · 1900 阅读 · 0 评论 -
进程死锁及解决办法
进程死锁及解决办法 一、要点提示(1) 掌握死锁的概念和产生死锁的根本原因。(2) 理解产生死锁的必要条件--以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。(3) 记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。(4) 掌握死锁的预防策略中资源有序分配策略。(5) 理解进程安全序列的概念,理解死锁与安全序列的关系。(6) 了解银行家算法。(7) 了解...转载 2018-04-08 23:59:34 · 1367 阅读 · 0 评论 -
Java提高篇——通过分析 JDK 源代码研究 Hash 存储机制
阅读目录通过 HashMap、HashSet 的源代码分析其 Hash 存储机制HashMap 的存储实现Hash 算法的性能选项HashMap 的读取实现HashSet 的实现HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashM...转载 2018-04-08 23:57:43 · 123 阅读 · 0 评论 -
"Redis客户端连接数一直降不下来"的有关问题解决
前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached。为什么要将 Memcached 替换掉?原因是 业务数据是压缩后的列表型数据,缓存中保存最新的3000条数据。对于新数据追加操作,需要拆解成[get + unzip + append + zip + set]这5步操作。若列表长度在O(1k)级别的,其耗时至少在50ms+。而在并发环境下,这样会存在“数据更新覆...转载 2018-04-08 23:34:35 · 10690 阅读 · 0 评论 -
支付宝:web页面扫码支付、网站支付、支付宝即时到账 + springmvc
一、场景:公司需要在网站上进行支付宝支付。二、API:使用支付宝开放平台的支付能力-即时到账接口。支付宝开放平台链接三、分析:1、支付宝的文档比较容易看,主要是有相应的DEMO,我这里看的DEMO是 JAVA-UTF-8版本。2、导入DEMO,在com.alipay.config中填入对应的partner和key(在对应的商户后台获取)就可以直接运行了解支付流程了。3、改写:我这边使用的是spri...转载 2018-04-07 14:25:13 · 655 阅读 · 0 评论 -
限流详解之节流
上接聊聊高并发系统之限流特技-1、聊聊高并发系统之限流特技-2,本篇摘自《亿级流量网站架构核心技术》第四章 限流详解,在之前两篇文章的基础上增加了节流部分。有时候我们想在特定时间窗口内对重复的相同事件最多只处理一次,或者想限制多个连续相同事件最小执行时间间隔,那么可使用节流(Throttle)实现,其防止多个相同事件连续重复执行。节流主要有如下几种用法:throttleFirst、throttle...转载 2018-04-14 20:01:20 · 1285 阅读 · 0 评论 -
隔离术之使用Hystrix实现隔离
1 Hystrix简介Hystrix是Netflix开源的一款针对分布式系统的延迟和容错库,目的是用来隔离分布式服务故障。它提供线程和信号量隔离,以减少不同服务之间资源竞争带来的相互影响;提供优雅降级机制;提供熔断机制使得服务可以快速失败,而不是一直阻塞等待服务响应,并能从中快速恢复。Hystrix通过这些机制来阻止级联失败并保证系统弹性、可用。下图是一个典型的分布式服务实现。 首先,当大多数人...转载 2018-04-14 20:02:33 · 1192 阅读 · 0 评论 -
聊聊高并发之隔离术
隔离是指将系统或资源分割开,系统隔离是为了在系统发生故障时能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的;而资源隔离有脏数据隔离、通过隔离后减少资源竞争提升性能等。我遇到的比较多的隔离手段有线程隔离、进程隔离、集群隔离、机房隔离、读写隔离、动静隔离、爬虫隔离等。而出现系统问题时可以考虑负载均衡路由、自动/手动切换分组或者降级等手段来提升...转载 2018-04-14 20:03:57 · 217 阅读 · 0 评论 -
基于支付场景的微服务高可用架构实战
一、SOA与微服务在我看来,微服务虽是国外传进来的技术,却和咱们中国的一些理论是挂钩的。所以在正式进入主题之前,先给大家简单介绍一下麦田理论。1.关于麦田理论古代周朝时期,老百姓种地实际是没有任何规划的,也没有任何区域的限制,一般来说在地里一会种水稻,一会种小麦,一会种蔬菜地交叉来种,可收成之后发现庄稼受阳光程度非常低,营养非常不均衡,后期维护成本非常高。 直到战国时期,有一位农业专家把地划分为多...转载 2018-04-22 12:05:42 · 2590 阅读 · 0 评论 -
微服务架构的基础框架选择:Spring Cloud还是Dubbo?
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 。近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的。目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在交流时,...转载 2018-04-22 12:04:34 · 258 阅读 · 0 评论 -
前端交易型系统设计原则
从毕业到现在已经快7年开发经验了,做过基础用户系统、积分商城、偷菜游戏、论坛、博客等等;也一个人全栈开发在线视频网站(http://sishuok.com/),也开发过几万、几十万、几千万、几个亿不同量级的系统,踩过不少坑,也学到许多经验。 设计了一些系统,也有了一些自己的观点,个人认为设计系统要因场景因时间而异,一个系统不是一下子就设计的非常完美,在有限的资源情况下一定是先解决当下最核心的问题,...转载 2018-04-14 20:19:40 · 352 阅读 · 0 评论 -
构建亿级前端读服务
从入职京东到现在,做读服务已经一年多的时间了,经历了各种亿级到百亿级的读服务;这段时间也进行了一些新的读服务架构尝试,从架构到代码的编写,各个环节都进行了反复尝试,压测并进行调优,希望得到一个自己满意的读服务架构。一些设计原则无状态数据闭环缓存银弹并发化降级开关限流切流量其他无状态如果设计的应用是无状态的,那么应用就可以水平扩展,当然实际生产环境可能是这样子的: 应用无状态,配置文件有状态。比如不...转载 2018-04-14 20:12:21 · 178 阅读 · 0 评论 -
Nginx负载均衡与反向代理
当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。然而,用户访问时是通过如http://www.jd.com的方式访问,在请求时,浏览器首先会查询DNS服务器获取对应的IP,然后通过此IP访问对应的服务。因此,一种方式是www.jd.com域名映射多个IP,但是,存在一个最简单的问题,假设某台服务器重启或者出现故障,DNS会有一定的缓存时间,故障后切换时...转载 2018-04-14 20:11:08 · 739 阅读 · 0 评论 -
Nginx四层负载均衡
Nginx 1.9.0版本起支持四层负载均衡,从而使得Nginx变得更加强大。目前,四层软件负载均衡器用得比较多的是HaProxy;而Nginx也支持四层负载均衡,一般场景我们使用Nginx一站式解决方案就够了。本部分将以TCP四层负载均衡进行示例讲解。 静态负载均衡 在默认情况下,ngx_stream_core_module 是没有启用的,需要在安装Nginx时,添加--with-stream配...转载 2018-04-14 20:08:03 · 2881 阅读 · 0 评论 -
使用Nginx实现HTTP动态负载均衡
Nginx中的负载均衡与反向代理中的负载均衡实现中,每次upstream列表有变更,都需要到服务器进行修改,首先是管理容易出现问题,而且对于upstream服务上线无法自动注册到Nginx upstream列表。因此,我们需要一种服务注册,可以将upstream动态注册到Nginx上,从而实现u...转载 2018-04-14 20:06:35 · 2341 阅读 · 0 评论